PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.35
OttoKit: All-in-One Automation Platform v1.1.35
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 / learnpress / actions / lp-enroll-user-course.php
suretriggers / src / Integrations / learnpress / actions Last commit date
lp-enroll-user-course.php 11 months ago lp-remove-user-course.php 11 months ago
lp-enroll-user-course.php
163 lines
1 <?php
2 /**
3 * LpEnrollUserCourse.
4 * php version 5.6
5 *
6 * @category LpEnrollUserCourse
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 use SureTriggers\Integrations\LearnPress\LearnPress;
17 use SureTriggers\Integrations\WordPress\WordPress;
18
19 /**
20 * LpEnrollUserCourse
21 *
22 * @category LpEnrollUserCourse
23 * @package SureTriggers
24 * @author BSF <username@example.com>
25 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
26 * @link https://www.brainstormforce.com/
27 * @since 1.0.0
28 */
29 class LpEnrollUserCourse extends AutomateAction {
30
31 /**
32 * Integration type.
33 *
34 * @var string
35 */
36 public $integration = 'LearnPress';
37
38 /**
39 * Action name.
40 *
41 * @var string
42 */
43 public $action = 'lp_enroll_user_course';
44
45 use SingletonLoader;
46
47 /**
48 * Register a action.
49 *
50 * @param array $actions actions.
51 * @return array
52 */
53 public function register( $actions ) {
54 $actions[ $this->integration ][ $this->action ] = [
55 'label' => __( 'Enroll User To Course', 'suretriggers' ),
56 'action' => $this->action,
57 'function' => [ $this, 'action_listener' ],
58 ];
59 return $actions;
60 }
61
62 /**
63 * Action listener.
64 *
65 * @param int $user_id user_id.
66 * @param int $automation_id automation_id.
67 * @param array $fields fields.
68 * @param array $selected_options selectedOptions.
69 * @psalm-suppress UndefinedMethod
70 * @throws Exception Exception.
71 *
72 * @return array|bool|void
73 */
74 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
75 $course_id = $selected_options['course'];
76 $user_id = $selected_options['wp_user_email'];
77 if ( ! function_exists( 'learn_press_get_user' ) ||
78 ! function_exists( 'learn_press_get_course' ) || ! function_exists( 'learn_press_get_ip' ) ||
79 ! function_exists( 'learn_press_get_user_agent' ) || ! class_exists( '\LP_User_Item_Course' ) ||
80 ! class_exists( 'LP_Order' ) ) {
81 return [
82 'success' => false,
83 'message' => 'LearnPress plugin class and functions does not exist.',
84 ];
85 }
86
87 if ( is_email( $user_id ) ) {
88 $user_data = get_user_by( 'email', $user_id );
89
90 if ( $user_data ) {
91 $user_id = $user_data->ID;
92 $user = learn_press_get_user( $user_id );
93 $course = learn_press_get_course( $course_id );
94 if ( $user->has_enrolled_course( $course_id ) ) {
95 return [
96 'status' => 'error',
97 'message' => 'User already enrolled in course.',
98 ];
99 }
100 if ( $course && $course->exists() ) {
101 $order = new LP_Order();
102 $order->set_customer_note( __( 'Order created by SureTriggers', 'suretriggers' ) );
103 $order->set_status( 'pending' );
104 $order->set_total( 0 );
105 $order->set_subtotal( 0 );
106 $order->set_user_ip_address( learn_press_get_ip() );
107 $order->set_user_agent( learn_press_get_user_agent() );
108 $order->set_created_via( 'SureTriggers' );
109 $order->set_user_id( $user_id );
110 $order_id = $order->save();
111 $order_item = [];
112 $order_item['order_item_name'] = $course->get_title();
113 $order_item['item_id'] = $course_id;
114 $order_item['quantity'] = 1;
115 $order_item['subtotal'] = 0;
116 $order_item['total'] = 0;
117 $item_id = $order->add_item( $order_item, 1 );
118 $order->update_status( 'completed' );
119 $user_item_data = [
120 'user_id' => $user->get_id(),
121 'item_id' => $course->get_id(),
122 'ref_id' => $order_id,
123 ];
124 $user_item_data['status'] = 'enrolled';
125 $user_item_data['graduation'] = 'in-progress';
126 $user_item_data['start_time'] = current_time( 'mysql', true );
127 $user_item_new = new \LP_User_Item_Course( $user_item_data );
128 $result = $user_item_new->update();
129
130 if ( ! $result ) {
131 return [
132 'status' => 'error',
133 'message' => 'Can not enroll user to course.',
134 ];
135 }
136 do_action( 'learnpress/user/course-enrolled', $order_id, $course->get_id(), $user->get_id() ); // @phpcs:ignore
137 return array_merge(
138 WordPress::get_user_context( $user->get_id() ),
139 LearnPress::get_lpc_course_context( $course->get_id() )
140 );
141 } else {
142 return [
143 'status' => 'error',
144 'message' => 'Course not found.',
145 ];
146 }
147 } else {
148 return [
149 'status' => 'error',
150 'message' => 'User not found',
151 ];
152 }
153 } else {
154 return [
155 'status' => 'error',
156 'message' => 'Please enter valid email address.',
157 ];
158 }
159 }
160 }
161
162 LpEnrollUserCourse::get_instance();
163