Automator_Recipe_Process_User::maybe_trigger_num_times_completed( $times_args )
Validate if the number of times of a trigger condition met
Parameters Parameters
- $times_args
-
(Required)
Return Return
(array)
Source Source
File: src/core/lib/process/class-automator-recipe-process-user.php
public function maybe_trigger_num_times_completed( $times_args ) { $recipe_id = key_exists( 'recipe_id', $times_args ) ? $times_args['recipe_id'] : null; $trigger_id = key_exists( 'trigger_id', $times_args ) ? $times_args['trigger_id'] : null; $trigger = key_exists( 'trigger', $times_args ) ? $times_args['trigger'] : null; $user_id = key_exists( 'user_id', $times_args ) ? $times_args['user_id'] : null; $recipe_log_id = key_exists( 'recipe_log_id', $times_args ) ? $times_args['recipe_log_id'] : null; $trigger_log_id = key_exists( 'trigger_log_id', $times_args ) ? $times_args['trigger_log_id'] : null; if ( null === $trigger_id || null === $trigger || null === $user_id ) { return array( 'result' => false, 'error' => __( 'One of the required field is missing.', 'uncanny-automator' ), ); } // The number of times the current user needs to visit the post/page $num_times = key_exists( 'NUMTIMES', $trigger['meta'] ) ? absint( $trigger['meta']['NUMTIMES'] ) : 1; // Get max run number from trigger logs $run_number = Automator()->get->trigger_run_number( $trigger_id, $trigger_log_id, $user_id ); // How many times has this user triggered this trigger $user_num_times = Automator()->get->trigger_meta( $user_id, $trigger['ID'], 'NUMTIMES', $trigger_log_id ); $args = [ 'user_id' => $user_id, 'trigger_id' => $trigger_id, 'meta_key' => 'NUMTIMES', 'run_number' => $run_number, 'trigger_log_id' => $trigger_log_id, ]; if ( empty( $user_num_times ) ) { //This is first time user visited $args['meta_value'] = 1; $user_num_times = 1; } else { $user_num_times ++; $run_number = $run_number + 1; $args['run_number'] = $run_number; $args['meta_value'] = 1; } $this->insert_trigger_meta( $args ); /** Moved this from Completed to run number code */ /** * Provide hook to developers to hook in to and * do what they want to do with it * * @version 2.5.1 * @author Saad * */ $trigger_data = Automator()->get->trigger_sentence( $trigger_id, 'trigger_detail' ); do_action( 'automator_complete_trigger_detail', $trigger_data, $args ); $sentence_human_readable = Automator()->get->trigger_sentence( $trigger_id, 'sentence_human_readable' ); // Store trigger sentence details for the completion if ( ! empty( $sentence_human_readable ) ) { $save_meta = array( 'user_id' => $user_id, 'trigger_id' => $trigger_id, 'trigger_log_id' => $trigger_log_id, 'run_number' => $run_number, 'meta_key' => 'sentence_human_readable', 'meta_value' => $sentence_human_readable, ); Automator()->process->user->insert_trigger_meta( $save_meta ); } /** */ //change completed from -1 to 0 $this->maybe_change_recipe_log_to_zero( $recipe_id, $user_id, $recipe_log_id, true ); // Move on if the user didn't trigger the trigger enough times if ( $user_num_times < $num_times ) { return [ 'result' => false, 'error' => 'Number of times condition is not completed.', ]; } // If the trigger was hit the enough times then complete the trigger if ( $user_num_times >= $num_times ) { return array( 'result' => true, 'error' => 'Number of times condition met.', 'run_number' => $args['run_number'], ); } return array( 'result' => false, 'error' => 'Default return. Something is wrong.', ); }
Expand full source code Collapse full source code View on Github