PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / learndash / triggers / user-passes-quiz.php
suretriggers / src / Integrations / learndash / triggers Last commit date
course-added-to-group.php 1 year ago essay-question-graded.php 2 years ago group-leader-added-to-group.php 1 year ago group-leader-removed-from-group.php 1 year ago user-access-course-expires.php 2 years ago user-added-in-group.php 1 year ago user-assignment-graded.php 2 years ago user-completes-course.php 1 year ago user-completes-group-course.php 1 year ago user-completes-lesson.php 3 years ago user-completes-topic.php 3 years ago user-enrolled-course.php 1 year ago user-fails-quiz.php 2 years ago user-passes-quiz.php 2 years ago user-purchase-course.php 1 year ago user-removed-from-group.php 1 year ago user-submits-assignment.php 2 years ago user-submits-essay-quiz.php 2 years ago user-unenrolled-course.php 2 years ago
user-passes-quiz.php
145 lines
1 <?php
2 /**
3 * UserPassesLDQuiz.
4 * php version 5.6
5 *
6 * @category UserPassesLDQuiz
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\LearnDash\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Integrations\LearnDash\LearnDash;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use SureTriggers\Traits\SingletonLoader;
20
21 if ( ! class_exists( 'UserPassesLDQuiz' ) ) :
22
23
24 /**
25 * UserPassesLDQuiz
26 *
27 * @category UserPassesLDQuiz
28 * @package SureTriggers
29 * @author BSF <username@example.com>
30 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
31 * @link https://www.brainstormforce.com/
32 * @since 1.0.0
33 */
34 class UserPassesLDQuiz {
35
36
37 /**
38 * Integration type.
39 *
40 * @var string
41 */
42 public $integration = 'LearnDash';
43
44 /**
45 * Action name.
46 *
47 * @var string
48 */
49 public $trigger = 'user_passes_ld_quiz';
50
51 use SingletonLoader;
52
53
54 /**
55 * Constructor
56 *
57 * @since 1.0.0
58 */
59 public function __construct() {
60 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
61 }
62
63 /**
64 * Register a action.
65 *
66 * @param array $triggers actions.
67 * @return array
68 */
69 public function register( $triggers ) {
70
71 $triggers[ $this->integration ][ $this->trigger ] = [
72 'label' => __( 'User Passes Quiz', 'suretriggers' ),
73 'action' => 'user_passes_ld_quiz',
74 'common_action' => [ 'learndash_quiz_submitted', 'learndash_essay_quiz_data_updated' ],
75 'function' => [ $this, 'trigger_listener' ],
76 'priority' => 10,
77 'accepted_args' => 4,
78 ];
79
80 return $triggers;
81
82 }
83
84 /**
85 * Trigger listener
86 *
87 * @param array $data quiz data.
88 * @param object $current_user current user.
89 * @since 1.0.0
90 *
91 * @return void
92 */
93 public function trigger_listener( $data, $current_user ) {
94
95 if ( empty( $data ) ) {
96 return;
97 }
98
99 $passed = ! empty( (int) $data['pass'] );
100 if ( ! $passed ) {
101 return;
102 }
103
104 // Check if grading is enabled.
105 $has_graded = isset( $data['has_graded'] ) ? absint( $data['has_graded'] ) : 0;
106 $has_graded = ! empty( $has_graded );
107 $graded = $has_graded && isset( $data['graded'] ) ? $data['graded'] : false;
108
109 if ( $has_graded ) {
110 if ( ! empty( $graded ) ) {
111 foreach ( $graded as $grade_item ) {
112 // Quiz has not been graded yet.
113 if ( isset( $grade_item['status'] ) && 'not_graded' === $grade_item['status'] ) {
114 return;
115 }
116 }
117 }
118 }
119
120 $output_questions = LearnDash::get_quiz_questions_answers( $data['quiz'] );
121 if ( property_exists( $current_user, 'ID' ) ) {
122 $current_user = $current_user->ID;
123 }
124 $context = array_merge(
125 WordPress::get_user_context( $current_user->ID ),
126 $output_questions,
127 $data
128 );
129
130 $context['quiz_name'] = get_the_title( $data['quiz'] );
131 $context['sfwd_quiz_id'] = $data['quiz'];
132
133 AutomationController::sure_trigger_handle_trigger(
134 [
135 'trigger' => $this->trigger,
136 'context' => $context,
137 ]
138 );
139 }
140 }
141
142 UserPassesLDQuiz::get_instance();
143
144 endif;
145