PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 6.0.1
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v6.0.1
6.0.3 6.0.2 6.0.1 6.0.0 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.7.9.2 5.7.9.1 5.7.8 5.7.9 5.7.6 5.7.7 5.7.5 5.7.4 5.7.3 5.7.2 5.7.1 trunk 5.6.0 5.6.1 All 34 releases
automatorwp / integrations / qsm / includes / triggers / submit-quiz.php

submit-quiz.php in AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI 6.0.1, at integrations/qsm/includes/triggers/submit-quiz.php

170 lines 5.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Submit Form
4 *
5 * @package AutomatorWP\Integrations\QSM\Triggers\Submit_Form
6 * @author AutomatorWP <[email protected]>, Ruben Garcia <[email protected]>
7 * @since 1.0.0
8 */
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 class AutomatorWP_QSM_Submit_Quiz extends AutomatorWP_Integration_Trigger {
13
14 public $integration = 'qsm';
15 public $trigger = 'qsm_quiz_submitted';
16
17 /**
18 * Register the trigger
19 *
20 * @since 1.0.0
21 */
22 public function register() {
23
24 automatorwp_register_trigger( $this->trigger, array(
25 'integration' => $this->integration,
26 'label' => __( 'User submits a quiz', 'automatorwp' ),
27 'select_option' => __( 'User submits <strong>a quiz</strong>', 'automatorwp' ),
28 /* translators: %1$s: Post title. %2$s: Number of times. */
29 'edit_label' => sprintf( __( 'User submits %1$s %2$s time(s)', 'automatorwp' ), '{post}', '{times}' ),
30 /* translators: %1$s: Post title. */
31 'log_label' => sprintf( __( 'User submits %1$s', 'automatorwp' ), '{post}' ),
32 'action' => 'qsm_quiz_submitted',
33 'function' => array( $this, 'listener' ),
34 'priority' => 10,
35 'accepted_args' => 4,
36 'options' => array(
37 'post' => automatorwp_utilities_post_option( array(
38 'name' => __('Quiz:', 'automatorwp'),
39 'option_none_label' => __('any quiz', 'automatorwp'),
40 'post_type' => 'qsm_quiz'
41 ) ),
42 'times' => automatorwp_utilities_times_option(),
43 ),
44 'tags' => array_merge(
45 automatorwp_qsm_get_quiz_tags(),
46 automatorwp_utilities_times_tag()
47 )
48 ) );
49
50 }
51
52 /**
53 * Trigger listener
54 *
55 * @since 1.0.0
56 *
57 * @param $results_array
58 * @param $results_id
59 * @param $qmn_quiz_options
60 * @param $qmn_array_for_variables
61 */
62 public function listener( $results_array, $results_id, $qmn_quiz_options, $qmn_array_for_variables ) {
63
64 $user_id = get_current_user_id();
65 $quiz_id = $qmn_quiz_options->quiz_id;
66
67 // Bail if not all details provided
68 if ( empty( $quiz_id ) ) {
69 return;
70 }
71
72 // Get quiz post ID
73 $post_id = automatorwp_qsm_get_quiz_post_id( $quiz_id );
74
75 // Bail if no post id
76 if ( empty( $post_id ) ) {
77 return;
78 }
79
80 // Quiz name for tags
81 $quiz_name = $qmn_quiz_options->quiz_name;
82 $points = $qmn_array_for_variables['total_correct'];
83
84 // Trigger submit form event
85 automatorwp_trigger_event( array(
86 'trigger' => $this->trigger,
87 'user_id' => $user_id,
88 'quiz_id' => $quiz_id,
89 'post_id' => $post_id[0],
90 'quiz_name' => $quiz_name,
91 'points' => $points,
92 ) );
93
94 }
95
96 /**
97 * User deserves check
98 *
99 * @since 1.0.0
100 *
101 * @param bool $deserves_trigger True if user deserves trigger, false otherwise
102 * @param stdClass $trigger The trigger object
103 * @param int $user_id The user ID
104 * @param array $event Event information
105 * @param array $trigger_options The trigger's stored options
106 * @param stdClass $automation The trigger's automation object
107 *
108 * @return bool True if user deserves trigger, false otherwise
109 */
110 public function user_deserves_trigger( $deserves_trigger, $trigger, $user_id, $event, $trigger_options, $automation ) {
111
112 // Don't deserve if post is not received
113 if ( !isset( $event['post_id'] ) ) {
114 return false;
115 }
116
117 // Don't deserve if post doesn't match with the trigger option
118 if( ! automatorwp_posts_matches( $event['post_id'], $trigger_options['post'] ) ) {
119 return false;
120 }
121
122 return $deserves_trigger;
123
124 }
125
126 /**
127 * Register the required hooks
128 *
129 * @since 1.0.0
130 */
131 public function hooks() {
132
133 // Log meta data
134 add_filter( 'automatorwp_user_completed_trigger_log_meta', array( $this, 'log_meta' ), 10, 6 );
135
136 parent::hooks();
137 }
138
139 /**
140 * Trigger custom log meta
141 *
142 * @since 1.0.0
143 *
144 * @param array $log_meta Log meta data
145 * @param stdClass $trigger The trigger object
146 * @param int $user_id The user ID
147 * @param array $event Event information
148 * @param array $trigger_options The trigger's stored options
149 * @param stdClass $automation The trigger's automation object
150 *
151 * @return array
152 */
153 function log_meta( $log_meta, $trigger, $user_id, $event, $trigger_options, $automation ) {
154
155 // Bail if action type don't match this action
156 if( $trigger->type !== $this->trigger ) {
157 return $log_meta;
158 }
159
160 $log_meta['quiz_id'] = ( isset( $event['quiz_id'] ) ? $event['quiz_id'] : '' );
161 $log_meta['quiz_name'] = ( isset( $event['quiz_name'] ) ? $event['quiz_name'] : '' );
162 $log_meta['points'] = ( isset( $event['points'] ) ? $event['points'] : '' );
163
164 return $log_meta;
165
166 }
167
168 }
169
170 new AutomatorWP_QSM_Submit_Quiz();