PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.0.42
OttoKit: All-in-One Automation Platform v1.0.42
1.1.38 1.1.37 1.1.36 1.1.35 1.1.34 1.1.33 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 / masterstudy-lms / actions / markcoursecompleteforuser.php
suretriggers / src / Integrations / masterstudy-lms / actions Last commit date
enrollusertocourse.php 3 years ago markcoursecompleteforuser.php 3 years ago marklessoncompleteforuser.php 3 years ago unrolluserfromcourse.php 3 years ago
markcoursecompleteforuser.php
214 lines
1 <?php
2 /**
3 * MarkCourseCompleteForUser.
4 * php version 5.6
5 *
6 * @category MarkCourseCompleteForUser
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 use SureTriggers\Integrations\AutomateAction;
15 use SureTriggers\Traits\SingletonLoader;
16
17 /**
18 * MarkCourseCompleteForUser
19 *
20 * @category MarkCourseCompleteForUser
21 * @package SureTriggers
22 * @author BSF <username@example.com>
23 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
24 * @link https://www.brainstormforce.com/
25 * @since 1.0.0
26 */
27 class MarkCourseCompleteForUser extends AutomateAction {
28
29 /**
30 * Integration type.
31 *
32 * @var string
33 */
34 public $integration = 'MasterStudyLms';
35
36 /**
37 * Action name.
38 *
39 * @var string
40 */
41 public $action = 'mark_course_complete';
42
43 use SingletonLoader;
44
45 /**
46 * Register a action.
47 *
48 * @param array $actions actions.
49 * @return array
50 */
51 public function register( $actions ) {
52 $actions[ $this->integration ][ $this->action ] = [
53 'label' => __( 'Mark a course complete for the user', 'suretriggers' ),
54 'action' => $this->action,
55 'function' => [ $this, 'action_listener' ],
56 ];
57 return $actions;
58 }
59
60 /**
61 * Action listener.
62 *
63 * @param int $user_id user_id.
64 * @param int $automation_id automation_id.
65 * @param array $fields fields.
66 * @param array $selected_options selectedOptions.
67 * @psalm-suppress UndefinedMethod
68 * @throws Exception Exception.
69 *
70 * @return array|bool|void
71 */
72 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
73 $course_id = $selected_options['course'];
74 $user_email = $selected_options['wp_user_email'];
75
76 $user = get_user_by( 'email', $user_email );
77 if ( is_object( $user ) ) {
78 $user = get_object_vars( $user );
79 $user_id = $user['ID'];
80 }
81
82 // Get the lessons and quiz having the course.
83 $curriculum = get_post_meta( $course_id, 'curriculum', true );
84
85 if ( ! empty( $curriculum ) ) {
86 if ( class_exists( '\STM_LMS_Helpers' ) ) {
87 /**
88 * Ignoring next line
89 *
90 * @phpstan-ignore-next-line
91 * */
92 $curriculum = \STM_LMS_Helpers::only_array_numbers( explode( ',', $curriculum ) );
93 }
94
95 $curriculum_posts = get_posts(
96 [
97 'post__in' => $curriculum,
98 'posts_per_page' => 100,
99 'post_type' => [ 'stm-lessons', 'stm-quizzes' ],
100 'post_status' => 'publish',
101 ]
102 );
103
104 if ( ! empty( $curriculum_posts ) ) {
105
106 // Enroll the user in the course if they are not already enrolled.
107 if ( function_exists( 'stm_lms_get_user_course' ) ) {
108 $course = stm_lms_get_user_course( $user_id, $course_id, [ 'user_course_id' ] );
109
110 if ( ! count( $course ) ) {
111 if ( class_exists( '\STM_LMS_Course' ) ) {
112 \STM_LMS_Course::add_user_course( $course_id, $user_id, \STM_LMS_Course::item_url( $course_id, '' ), 0 );
113 \STM_LMS_Course::add_student( $course_id );
114 }
115 }
116 }
117
118 foreach ( $curriculum_posts as $post_object ) {
119
120 if ( 'stm-lessons' === $post_object->post_type ) {
121
122 // Complete the Lesson.
123 $lesson_id = $post_object->ID;
124
125 if ( class_exists( '\STM_LMS_Lesson' ) ) {
126 if ( \STM_LMS_Lesson::is_lesson_completed( $user_id, $course_id, $lesson_id ) ) {
127 continue;
128 }
129 }
130
131 $end_time = time();
132 /**
133 * Ignoring next line
134 *
135 * @phpstan-ignore-next-line
136 * */
137 $start_time = get_user_meta( $user_id, "stm_lms_course_started_{$course_id}_{$lesson_id}", true );
138
139 if ( function_exists( 'stm_lms_add_user_lesson' ) ) {
140 stm_lms_add_user_lesson( compact( 'user_id', 'course_id', 'lesson_id', 'start_time', 'end_time' ) );
141 }
142
143 if ( class_exists( '\STM_LMS_Course' ) ) {
144 \STM_LMS_Course::update_course_progress( $user_id, $course_id );
145 }
146
147 do_action( 'stm_lms_lesson_passed', $user_id, $lesson_id );
148 /**
149 * Ignoring next line
150 *
151 * @phpstan-ignore-next-line
152 * */
153 delete_user_meta( $user_id, "stm_lms_course_started_{$course_id}_{$lesson_id}" );
154 }
155
156 if ( 'stm-quizzes' === $post_object->post_type ) {
157
158 // Complete the quiz.
159 $quiz_id = $post_object->ID;
160
161 if ( class_exists( '\STM_LMS_Quiz' ) ) {
162 if ( \STM_LMS_Quiz::quiz_passed( $quiz_id, $user_id ) ) {
163 continue;
164 }
165 }
166
167 $progress = 100;
168 $status = 'passed';
169 $user_quiz = compact( 'user_id', 'course_id', 'quiz_id', 'progress', 'status' );
170 if ( function_exists( 'stm_lms_add_user_quiz' ) ) {
171 stm_lms_add_user_quiz( $user_quiz );
172 }
173 if ( function_exists( 'stm_lms_get_delete_user_quiz_time' ) ) {
174 stm_lms_get_delete_user_quiz_time( $user_id, $quiz_id );
175 }
176
177 if ( class_exists( '\STM_LMS_Course' ) ) {
178 \STM_LMS_Course::update_course_progress( $user_id, $course_id );
179 }
180
181 $user_quiz['progress'] = round( $user_quiz['progress'], 1 );
182 do_action( 'stm_lms_quiz_' . $status, $user_id, $quiz_id, $user_quiz['progress'] );
183
184 }
185 }
186
187 $response = [
188 'status' => esc_attr__( 'Success', 'suretriggers' ),
189 'response' => esc_attr__( 'Course marked complete successfully.', 'suretriggers' ),
190 ];
191 return $response;
192 } else {
193 // If there's no response, return default message.
194 $error = [
195 'status' => esc_attr__( 'Error', 'suretriggers' ),
196 'response' => esc_attr__( 'Something went wrong. Please check the action step configuration.', 'suretriggers' ),
197 ];
198
199 return $error;
200 }
201 } else {
202 $error = [
203 'status' => esc_attr__( 'Error', 'suretriggers' ),
204 'response' => esc_attr__( 'Something went wrong. Please check the action step configuration.', 'suretriggers' ),
205 ];
206
207 return $error;
208 }
209
210 }
211 }
212
213 MarkCourseCompleteForUser::get_instance();
214