PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 6.0.1
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v6.0.1
6.0.3 6.0.2 6.0.1 6.0.0 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.7.9.2 5.7.9.1 5.7.8 5.7.9 5.7.6 5.7.7 5.7.5 5.7.4 5.7.3 5.7.2 5.7.1 trunk 5.6.0 5.6.1 All 34 releases
automatorwp / integrations / masteriyo-lms / includes / triggers / complete-lesson.php

complete-lesson.php in AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI 6.0.1, at integrations/masteriyo-lms/includes/triggers/complete-lesson.php

117 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Complete Lesson
4 *
5 * @package AutomatorWP\Integrations\Masteriyo_LMS\Triggers\Complete_Lesson
6 * @author AutomatorWP <[email protected]>, Ruben Garcia <[email protected]>
7 * @since 1.0.0
8 */
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 class AutomatorWP_Masteriyo_LMS_Complete_Lesson extends AutomatorWP_Integration_Trigger {
13
14 public $integration = 'masteriyo_lms';
15 public $trigger = 'masteriyo_lms_complete_lesson';
16
17 /**
18 * Register the trigger
19 *
20 * @since 1.0.0
21 */
22 public function register() {
23
24 automatorwp_register_trigger( $this->trigger, array(
25 'integration' => $this->integration,
26 'label' => __( 'User completes a lesson', 'automatorwp' ),
27 'select_option' => __( 'User completes <strong>a lesson</strong>', 'automatorwp' ),
28 /* translators: %1$s: Post title. %2$s: Number of times. */
29 'edit_label' => sprintf( __( 'User completes %1$s %2$s time(s)', 'automatorwp' ), '{post}', '{times}' ),
30 /* translators: %1$s: Post title. */
31 'log_label' => sprintf( __( 'User completes %1$s', 'automatorwp' ), '{post}' ),
32 'action' => 'masteriyo_new_course_progress_item',
33 'function' => array( $this, 'listener' ),
34 'priority' => 10,
35 'accepted_args' => 2,
36 'options' => array(
37 'post' => automatorwp_utilities_post_option( array(
38 'name' => __( 'Lesson:', 'automatorwp' ),
39 'option_none_label' => __( 'any lesson', 'automatorwp' ),
40 'post_type' => 'mto-lesson',
41 ) ),
42 'times' => automatorwp_utilities_times_option(),
43 ),
44 'tags' => array_merge(
45 automatorwp_utilities_post_tags(),
46 automatorwp_utilities_times_tag()
47 )
48 ) );
49
50 }
51
52 /**
53 * Trigger listener
54 *
55 * @since 1.0.0
56 *
57 * @param integer $progress_id The new course progress item ID.
58 * @param \Masteriyo\Models\CourseProgressItem $object The new course progress item object.
59 */
60 public function listener( $progress_id, $progress_item ) {
61
62 if ( 'lesson' !== $progress_item->get_item_type() || ! $progress_item->get_completed() ) {
63 return;
64 }
65
66 $lesson = masteriyo_get_lesson( $progress_item->get_item_id() );
67
68 if ( is_null( $lesson ) ) {
69 return;
70 }
71
72 $user_id = $progress_item->get_user_id();
73 $lesson_id = $lesson->get_id();
74 $course_id = $progress_item->get_course_id();
75
76 automatorwp_trigger_event( array(
77 'trigger' => $this->trigger,
78 'user_id' => $user_id,
79 'post_id' => $lesson_id,
80 'course_id' => $course_id,
81 ) );
82
83 }
84
85 /**
86 * User deserves check
87 *
88 * @since 1.0.0
89 *
90 * @param bool $deserves_trigger True if user deserves trigger, false otherwise
91 * @param stdClass $trigger The trigger object
92 * @param int $user_id The user ID
93 * @param array $event Event information
94 * @param array $trigger_options The trigger's stored options
95 * @param stdClass $automation The trigger's automation object
96 *
97 * @return bool True if user deserves trigger, false otherwise
98 */
99 public function user_deserves_trigger( $deserves_trigger, $trigger, $user_id, $event, $trigger_options, $automation ) {
100
101 // Don't deserve if post is not received
102 if( ! isset( $event['post_id'] ) ) {
103 return false;
104 }
105
106 // Don't deserve if post doesn't match with the trigger option
107 if( ! automatorwp_posts_matches( $event['post_id'], $trigger_options['post'] ) ) {
108 return false;
109 }
110
111 return $deserves_trigger;
112
113 }
114
115 }
116
117 new AutomatorWP_Masteriyo_LMS_Complete_Lesson();