PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
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 / suredash / triggers / suredash-course-completed.php
suretriggers / src / Integrations / suredash / triggers Last commit date
suredash-comment-deleted.php 8 months ago suredash-comment-edited.php 8 months ago suredash-comment-submitted.php 8 months ago suredash-course-completed.php 10 months ago suredash-item-bookmarked.php 8 months ago suredash-post-deleted.php 8 months ago suredash-post-edited.php 8 months ago suredash-post-liked.php 10 months ago suredash-post-submitted.php 8 months ago suredash-space-deleted.php 8 months ago
suredash-course-completed.php
130 lines
1 <?php
2 /**
3 * SureDashCourseComplete trigger for handling course completion events.
4 * php version 5.6
5 *
6 * @category SureDashCourseComplete
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\SureDash\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Integrations\WordPress\WordPress;
18 use SureTriggers\Traits\SingletonLoader;
19
20 /**
21 * SureDashCourseComplete
22 *
23 * @category SureDashCourseComplete
24 * @package SureTriggers
25 * @author BSF <username@example.com>
26 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
27 * @link https://www.brainstormforce.com/
28 * @since 1.0.0
29 */
30 class SureDashCourseComplete {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'SureDash';
38
39 /**
40 * Trigger name.
41 *
42 * @var string
43 */
44 public $trigger = 'suredash_course_completed';
45
46 use SingletonLoader;
47
48 /**
49 * Constructor
50 *
51 * @since 1.0.0
52 */
53 public function __construct() {
54 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
55 }
56
57 /**
58 * Register a trigger.
59 *
60 * @param array $triggers triggers.
61 * @return array
62 */
63 public function register( $triggers ) {
64 $triggers[ $this->integration ][ $this->trigger ] = [
65 'label' => __( 'User complete Course', 'suretriggers' ),
66 'action' => 'updated_user_meta',
67 'function' => [ $this, 'trigger_listener' ],
68 'priority' => 10,
69 'accepted_args' => 4,
70 ];
71 return $triggers;
72 }
73
74 /**
75 * Trigger listener for course completion events.
76 *
77 * @param int $meta_id Meta ID.
78 * @param int $user_id User ID.
79 * @param string $meta_key Meta key.
80 * @param mixed $meta_value Meta value.
81 * @since 1.0.0
82 *
83 * @return void
84 */
85 public function trigger_listener( $meta_id, $user_id, $meta_key, $meta_value ) {
86 // Check if this is a SureDash course completion meta update.
87 if ( ! preg_match( '/^portal_course_(\d+)_completed_lessons$/', $meta_key, $matches ) ) {
88 return;
89 }
90
91 $course_id = (int) $matches[1];
92
93 // Check if course is now complete.
94 $course_sections = get_post_meta( $course_id, 'pp_course_section_loop', true );
95 $all_lesson_ids = [];
96
97 if ( is_array( $course_sections ) ) {
98 foreach ( $course_sections as $section ) {
99 if ( ! empty( $section['section_medias'] ) ) {
100 foreach ( $section['section_medias'] as $media_data ) {
101 $lesson_id = absint( ! empty( $media_data['value'] ) ? $media_data['value'] : 0 );
102 if ( $lesson_id ) {
103 $all_lesson_ids[] = $lesson_id;
104 }
105 }
106 }
107 }
108 }
109
110 // If all lessons are completed, trigger the automation.
111 if ( is_array( $meta_value ) && count( $meta_value ) >= count( $all_lesson_ids ) && count( $all_lesson_ids ) > 0 ) {
112 $course = get_post( $course_id );
113 $context = WordPress::get_user_context( $user_id );
114 $context['suredash_courses'] = $course_id;
115 if ( $course instanceof \WP_Post ) {
116 $context['course_title'] = $course->post_title;
117 }
118
119 AutomationController::sure_trigger_handle_trigger(
120 [
121 'trigger' => $this->trigger,
122 'context' => $context,
123 ]
124 );
125 }
126 }
127 }
128
129 SureDashCourseComplete::get_instance();
130