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 / amelia / triggers / package-purchased.php
suretriggers / src / Integrations / amelia / triggers Last commit date
appointment-booked.php 2 years ago appointment-booking-status-changed.php 2 years ago appointment-cancelled.php 2 years ago appointment-rescheduled.php 2 years ago event-attendee.php 2 months ago event-booking-status-changed.php 1 year ago event-cancelled.php 1 year ago event-rescheduled.php 1 year ago package-purchase-status-updated.php 8 months ago package-purchased.php 8 months ago
package-purchased.php
189 lines
1 <?php
2 /**
3 * PackagePurchase.
4 * php version 5.6
5 *
6 * @category PackagePurchase
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\Amelia\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Integrations\WordPress\WordPress;
18 use SureTriggers\Traits\SingletonLoader;
19
20 if ( ! class_exists( 'PackagePurchase' ) ) :
21
22 /**
23 * PackagePurchase
24 *
25 * @category PackagePurchase
26 * @package SureTriggers
27 * @author BSF <username@example.com>
28 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
29 * @link https://www.brainstormforce.com/
30 * @since 1.0.0
31 *
32 * @psalm-suppress UndefinedTrait
33 */
34 class PackagePurchase {
35
36 /**
37 * Integration type.
38 *
39 * @var string
40 */
41 public $integration = 'Amelia';
42
43 /**
44 * Trigger name.
45 *
46 * @var string
47 */
48 public $trigger = 'amelia_package_purchase';
49
50 use SingletonLoader;
51
52 /**
53 * Constructor
54 *
55 * @since 1.0.0
56 */
57 public function __construct() {
58 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
59 }
60
61 /**
62 * Register action.
63 *
64 * @param array $triggers trigger data.
65 * @return array
66 */
67 public function register( $triggers ) {
68 $triggers[ $this->integration ][ $this->trigger ] = [
69 'label' => __( 'Package Purchased', 'suretriggers' ),
70 'action' => $this->trigger,
71 'common_action' => 'amelia_before_package_customer_added',
72 'function' => [ $this, 'trigger_listener' ],
73 'priority' => 10,
74 'accepted_args' => 1,
75 ];
76 return $triggers;
77 }
78
79 /**
80 * Trigger listener
81 *
82 * @param array $args Package Data.
83 * @since 1.0.0
84 *
85 * @return void
86 */
87 public function trigger_listener( $args ) {
88 if ( empty( $args ) ) {
89 return;
90 }
91
92 global $wpdb;
93
94 if ( ! isset( $args['packageId'] ) || ! isset( $args['customerId'] ) ) {
95 return;
96 }
97
98 $package_result = $wpdb->get_row(
99 $wpdb->prepare(
100 'SELECT * FROM ' . $wpdb->prefix . 'amelia_packages WHERE id = %d',
101 [ $args['packageId'] ]
102 ),
103 ARRAY_A
104 );
105
106 $customer_result = $wpdb->get_row(
107 $wpdb->prepare(
108 'SELECT * FROM ' . $wpdb->prefix . 'amelia_users WHERE id = %d',
109 [ $args['customerId'] ]
110 ),
111 ARRAY_A
112 );
113
114 $payment_result = [];
115
116 if ( isset( $args['coupon'] ) ) {
117 $coupon_result = $wpdb->get_row(
118 $wpdb->prepare(
119 'SELECT code AS couponCode, expirationDate AS couponExpirationDate FROM ' . $wpdb->prefix . 'amelia_coupons WHERE id = %d',
120 [ $args['coupon']['id'] ]
121 ),
122 ARRAY_A
123 );
124 } else {
125 $coupon_result = [];
126 }
127
128 $fields_arr = [];
129 if ( ! empty( $args['customFields'] ) ) {
130 $custom_fields = is_string( $args['customFields'] ) ?
131 json_decode( $args['customFields'], true ) :
132 $args['customFields'];
133
134 if ( is_array( $custom_fields ) ) {
135 foreach ( $custom_fields as $fields ) {
136 if ( is_array( $fields ) && isset( $fields['label'], $fields['value'] ) ) {
137 $fields_arr[ $fields['label'] ] = $fields['value'];
138 }
139 }
140 }
141 }
142
143 $context = array_merge(
144 (array) $package_result,
145 (array) $customer_result,
146 (array) $payment_result,
147 (array) $coupon_result,
148 $fields_arr,
149 $args
150 );
151
152 $json_fields = [ 'limitPerCustomer', 'settings', 'translations', 'customFields' ];
153 foreach ( $json_fields as $field ) {
154 if ( isset( $context[ $field ] ) && is_string( $context[ $field ] ) && ! empty( $context[ $field ] ) ) {
155 $decoded = json_decode( $context[ $field ], true );
156 if ( json_last_error() === JSON_ERROR_NONE && is_array( $decoded ) ) {
157 foreach ( $decoded as $key => $value ) {
158 if ( is_array( $value ) ) {
159 foreach ( $value as $subkey => $subvalue ) {
160 $context[ $field . '_' . $key . '_' . $subkey ] = $subvalue;
161 }
162 } else {
163 $context[ $field . '_' . $key ] = $value;
164 }
165 }
166 $context[ $field . '_original' ] = $decoded;
167 unset( $context[ $field ] );
168 }
169 }
170 }
171 $context['amelia_package_list'] = $args['packageId'];
172 AutomationController::sure_trigger_handle_trigger(
173 [
174 'trigger' => $this->trigger,
175 'context' => $context,
176 ]
177 );
178 }
179 }
180
181 /**
182 * Ignore false positive
183 *
184 * @psalm-suppress UndefinedMethod
185 */
186 PackagePurchase::get_instance();
187
188 endif;
189