PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.33
OttoKit: All-in-One Automation Platform v1.1.33
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 / memberpress-course / actions / complete-lesson.php
suretriggers / src / Integrations / memberpress-course / actions Last commit date
complete-course.php 3 months ago complete-lesson.php 10 months ago reset-user-progress.php 10 months ago
complete-lesson.php
147 lines
1 <?php
2 /**
3 * CompleteCourse.
4 * php version 5.6
5 *
6 * @category CompleteLesson
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\MemberPressCourse\Actions;
15
16 use Exception;
17 use memberpress\courses\lib as lib;
18 use memberpress\courses as base;
19 use memberpress\courses\models as models;
20 use SureTriggers\Integrations\AutomateAction;
21 use SureTriggers\Traits\SingletonLoader;
22
23
24 /**
25 * CompleteLesson
26 *
27 * @category CompleteLesson
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 CompleteLesson extends AutomateAction {
35
36
37 /**
38 * Integration type.
39 *
40 * @var string
41 */
42 public $integration = 'MemberPressCourse';
43
44 /**
45 * Action name.
46 *
47 * @var string
48 */
49 public $action = 'mpc_complete_lesson';
50
51 use SingletonLoader;
52
53 /**
54 * Register a action.
55 *
56 * @param array $actions actions.
57 * @return array
58 */
59 public function register( $actions ) {
60 $actions[ $this->integration ][ $this->action ] = [
61 'label' => __( 'Complete Lesson', 'suretriggers' ),
62 'action' => $this->action,
63 'function' => [ $this, 'action_listener' ],
64 ];
65 return $actions;
66 }
67
68 /**
69 * Action listener.
70 *
71 * @param int $user_id user_id.
72 * @param int $automation_id automation_id.
73 * @param array $fields fields.
74 * @param array $selected_options selectedOptions.
75 * @throws Exception Throws exception.
76 *
77 * @return array
78 */
79 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
80 if ( ! $user_id ) {
81 return [
82 'status' => 'error',
83 'message' => 'User not found with this email address.',
84 ];
85 }
86
87 $course_id = $selected_options['course'];
88 $lesson_id = $selected_options['lesson'];
89
90 $this->mark_lesson_completed( $user_id, $course_id, $lesson_id );
91 return [
92 'user_email' => $selected_options['wp_user_email'],
93 'course_id' => $course_id,
94 'course_title' => get_the_title( $course_id ),
95 'course_url' => get_permalink( $course_id ),
96 'course_featured_image_id' => get_post_meta( $course_id, '_thumbnail_id', true ),
97 'course_featured_image_url' => get_the_post_thumbnail_url( $course_id ),
98 'lesson_id' => $lesson_id,
99 'lesson_title' => get_the_title( $lesson_id ),
100 'lesson_url' => get_permalink( $lesson_id ),
101 'lesson_featured_image_id' => get_post_meta( $lesson_id, '_thumbnail_id', true ),
102 'lesson_featured_image_url' => get_the_post_thumbnail_url( $lesson_id ),
103 ];
104
105 }
106
107 /**
108 * Mark lesson complete.
109 *
110 * @param int $user_id user's id.
111 * @param int $course_id course id.
112 * @param int $lesson_id lesson id.
113 * @return array|void
114 */
115 public function mark_lesson_completed( $user_id, $course_id, $lesson_id ) {
116 if ( ! class_exists( '\memberpress\courses\models\UserProgress' ) ) {
117 return [
118 'status' => 'error',
119 'message' => __( '\memberpress\courses\models\UserProgress class not found.', 'suretriggers' ),
120
121 ];
122 }
123 if ( empty( $lesson_id ) && empty( $course_id ) ) {
124 return;
125 }
126
127 if ( models\UserProgress::has_completed_course( $user_id, $course_id ) ) {
128 return;
129 }
130
131 $user_progress = new models\UserProgress();
132 $user_progress->lesson_id = $lesson_id;
133 $user_progress->course_id = $course_id;
134 $user_progress->user_id = $user_id;
135 if ( class_exists( '\memberpress\courses\lib\Utils' ) ) {
136 $user_progress->created_at = lib\Utils::ts_to_mysql_date( time() );
137 $user_progress->completed_at = lib\Utils::ts_to_mysql_date( time() );
138 }
139 $user_progress->store();
140
141 do_action( 'mpcs_completed_lesson', $user_progress );
142 }
143
144 }
145
146 CompleteLesson::get_instance();
147