PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
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 / tutorlms / actions / remove-course.php
suretriggers / src / Integrations / tutorlms / actions Last commit date
enroll-course.php 10 months ago list-enrolled-users.php 10 months ago mark-course-complete.php 10 months ago mark-lesson-complete.php 10 months ago remove-course.php 10 months ago reset-user-course-progress.php 10 months ago
remove-course.php
183 lines
1 <?php
2 /**
3 * RemoveFromCourse.
4 * php version 5.6
5 *
6 * @category RemoveFromCourse
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\TutorLMS\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Traits\SingletonLoader;
19 use WP_Query;
20
21 /**
22 * RemoveFromCourse
23 *
24 * @category RemoveFromCourse
25 * @package SureTriggers
26 * @author BSF <username@example.com>
27 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
28 * @link https://www.brainstormforce.com/
29 * @since 1.0.0
30 */
31 class RemoveFromCourse extends AutomateAction {
32
33 /**
34 * Integration type.
35 *
36 * @var string
37 */
38 public $integration = 'TutorLMS';
39
40 /**
41 * Action name.
42 *
43 * @var string
44 */
45 public $action = 'tlms_remove_from_course';
46
47 use SingletonLoader;
48
49 /**
50 * Register a action.
51 *
52 * @param array $actions actions.
53 * @return array
54 */
55 public function register( $actions ) {
56 $actions[ $this->integration ][ $this->action ] = [
57 'label' => __( 'Remove User from Course', 'suretriggers' ),
58 'action' => $this->action,
59 'function' => [ $this, 'action_listener' ],
60 ];
61 return $actions;
62 }
63
64 /**
65 * Action listener.
66 *
67 * @param int $user_id user_id.
68 * @param int $automation_id automation_id.
69 * @param array $fields fields.
70 * @param array $selected_options selectedOptions.
71 * @return array
72 * @throws Exception Exception.
73 */
74 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
75 if ( ! function_exists( 'tutor_utils' ) || ! function_exists( 'tutor' ) ) {
76 return [
77 'status' => 'error',
78 'message' => 'Tutor LMS function not found.',
79 ];
80 }
81 $context = [];
82
83 $remove_from_all = ( isset( $selected_options['courses'] ) && 'all' === $selected_options['courses'] ) ? true : false;
84 $course_id = ( isset( $selected_options['courses'] ) && 'all' !== $selected_options['courses'] ) ? $selected_options['courses'] : 0;
85 $course_data = get_post( $course_id );
86 if ( ! $course_data instanceof \WP_Post ) {
87 return [
88 'status' => 'error',
89 'message' => 'No Course is available.',
90 ];
91 }
92 $user_email = ( isset( $selected_options['wp_user_email'] ) ) ? $selected_options['wp_user_email'] : '';
93 $user_id = email_exists( $user_email );
94 if ( ! $user_id ) {
95 return [
96 'status' => 'error',
97 'message' => 'User not found.',
98 ];
99 }
100
101 $enrolled_courses = tutor_utils()->get_enrolled_courses_by_user( $user_id );
102 $enrolled_courses_id = [];
103
104 if ( false === $enrolled_courses ) {
105 return [
106 'status' => 'error',
107 'message' => $user_email . ' is not enrolled in any course.',
108 ];
109 }
110
111 foreach ( $enrolled_courses->posts as $key => $course ) {
112 $enrolled_courses_id[] = $course->ID;
113 }
114
115 if ( ! $remove_from_all && ! in_array( $course_id, $enrolled_courses_id, true ) ) {
116 return [
117 'status' => 'error',
118 'message' => $user_email . ' is not enrolled in ' . $course_data->post_title . ' course.',
119 ];
120 }
121 $user = get_user_by( 'id', $user_id );
122 if ( ! $user instanceof \WP_User ) {
123 return [
124 'status' => 'error',
125 'message' => 'User not found.',
126 ];
127 }
128 $context['user_id'] = $user->ID;
129 $context['user_name'] = $user->display_name;
130 $context['user_email'] = $user->user_email;
131 if ( $remove_from_all ) {
132 $query = new WP_Query(
133 [
134 'post_type' => tutor()->course_post_type,
135 'post_status' => 'publish',
136 'fields' => 'ids',
137 'nopaging' => true, //phpcs:ignore
138 ]
139 );
140 $courses = $query->get_posts();
141 } else {
142 $course = get_post( (int) $course_id );
143 if ( ! $course ) {
144 return [
145 'status' => 'error',
146 'message' => 'No Course is available.',
147 ];
148 }
149 $courses = [ $course_id ];
150 }
151
152 if ( empty( $courses ) ) {
153 return [
154 'status' => 'error',
155 'message' => 'No Courses are available.',
156 ];
157 }
158
159 $unenrolled_courses = [];
160 foreach ( $courses as $course_id ) {
161 if ( in_array( $course_id, $enrolled_courses_id, true ) ) {
162 $course_data = get_post( $course_id );
163 if ( ! $course_data instanceof \WP_Post ) {
164 return [
165 'status' => 'error',
166 'message' => 'No Course is available.',
167 ];
168 }
169 $unenrolled_courses['id'][] = $course_data->ID;
170 $unenrolled_courses['name'][] = $course_data->post_title;
171 tutor_utils()->cancel_course_enrol( $course_id, $user_id );
172 }
173 }
174 if ( ! empty( $unenrolled_courses ) ) {
175 $context['course_id'] = implode( ',', $unenrolled_courses['id'] );
176 $context['course_name'] = implode( ',', $unenrolled_courses['name'] );
177 }
178 return $context;
179 }
180 }
181
182 RemoveFromCourse::get_instance();
183