PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
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 / wpsubscription / actions / get-subscription-details.php
suretriggers / src / Integrations / wpsubscription / actions Last commit date
get-subscription-details.php 10 months ago update-subscription-status.php 10 months ago
get-subscription-details.php
189 lines
1 <?php
2 /**
3 * GetSubscriptionDetails.
4 * php version 5.6
5 *
6 * @category GetSubscriptionDetails
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\WPSubscription\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Traits\SingletonLoader;
19
20 /**
21 * GetSubscriptionDetails
22 *
23 * @category GetSubscriptionDetails
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 GetSubscriptionDetails extends AutomateAction {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'WPSubscription';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'wp_get_subscription_details';
45
46 use SingletonLoader;
47
48 /**
49 * Register a action.
50 *
51 * @param array $actions actions.
52 * @return array
53 */
54 public function register( $actions ) {
55 $actions[ $this->integration ][ $this->action ] = [
56 'label' => __( 'Get Subscription Details', 'suretriggers' ),
57 'action' => $this->action,
58 'function' => [ $this, 'action_listener' ],
59 ];
60 return $actions;
61 }
62
63 /**
64 * Action listener.
65 *
66 * @param int $user_id user_id.
67 * @param int $automation_id automation_id.
68 * @param array $fields fields.
69 * @param array $selected_options selected_options.
70 *
71 * @return array|void
72 *
73 * @throws Exception Exception.
74 */
75 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
76 $subscription_id = ( isset( $selected_options['subscription_id'] ) && is_scalar( $selected_options['subscription_id'] ) )
77 ? absint( $selected_options['subscription_id'] )
78 : 0;
79
80 if ( empty( $subscription_id ) ) {
81 return [
82 'status' => 'error',
83 'message' => __( 'Subscription ID is required.', 'suretriggers' ),
84
85 ];
86 }
87
88 $subscription = get_post( $subscription_id );
89 if ( ! ( $subscription instanceof \WP_Post ) || 'subscrpt_order' !== $subscription->post_type ) {
90 return [
91 'status' => 'error',
92 'message' => __( 'Invalid subscription ID.', 'suretriggers' ),
93
94 ];
95 }
96
97 $subscription_data = [
98 'subscription_id' => $subscription_id,
99 'status' => $subscription->post_status,
100 'user_id' => $subscription->post_author,
101 'created_date' => $subscription->post_date,
102 'modified_date' => $subscription->post_modified,
103 ];
104
105 $meta_keys = [
106 '_subscrpt_order_id',
107 '_subscrpt_product_id',
108 '_subscrpt_price',
109 '_subscrpt_period',
110 '_subscrpt_period_interval',
111 '_subscrpt_trial_period',
112 '_subscrpt_trial_period_interval',
113 '_subscrpt_next_payment',
114 '_subscrpt_end_date',
115 ];
116
117 foreach ( $meta_keys as $meta_key ) {
118 $meta_value = get_post_meta( $subscription_id, $meta_key, true );
119 $key = str_replace( '_subscrpt_', '', $meta_key );
120 $subscription_data[ $key ] = $meta_value;
121 }
122
123 // Get product details.
124 $product_id_raw = get_post_meta( $subscription_id, '_subscrpt_product_id', true );
125 $product_id = is_scalar( $product_id_raw ) ? absint( $product_id_raw ) : 0;
126
127 if ( $product_id ) {
128 $product = get_post( $product_id );
129 if ( $product instanceof \WP_Post ) {
130 $subscription_data['product_details'] = [
131 'product_id' => $product_id,
132 'product_name' => $product->post_title,
133 'product_price' => get_post_meta( $product_id, '_price', true ),
134 'product_sku' => get_post_meta( $product_id, '_sku', true ),
135 ];
136 }
137 }
138
139 // Get customer details.
140 $user_id = (int) $subscription->post_author;
141 if ( $user_id ) {
142 $user = get_userdata( $user_id );
143 if ( $user ) {
144 $subscription_data['customer_details'] = [
145 'customer_id' => $user_id,
146 'email' => $user->user_email,
147 'first_name' => get_user_meta( $user_id, 'first_name', true ),
148 'last_name' => get_user_meta( $user_id, 'last_name', true ),
149 ];
150 }
151 }
152
153 // Get billing and shipping addresses from WooCommerce order.
154 $order_id_raw = get_post_meta( $subscription_id, '_subscrpt_order_id', true );
155 $order_id = is_scalar( $order_id_raw ) ? absint( $order_id_raw ) : 0;
156
157 if ( $order_id && function_exists( 'wc_get_order' ) ) {
158 $order = wc_get_order( $order_id );
159 if ( $order instanceof \WC_Order ) {
160 $subscription_data['billing_address'] = [
161 'first_name' => $order->get_billing_first_name(),
162 'last_name' => $order->get_billing_last_name(),
163 'address_1' => $order->get_billing_address_1(),
164 'city' => $order->get_billing_city(),
165 'state' => $order->get_billing_state(),
166 'postcode' => $order->get_billing_postcode(),
167 'country' => $order->get_billing_country(),
168 'email' => $order->get_billing_email(),
169 'phone' => $order->get_billing_phone(),
170 ];
171
172 $subscription_data['shipping_address'] = [
173 'first_name' => $order->get_shipping_first_name(),
174 'last_name' => $order->get_shipping_last_name(),
175 'address_1' => $order->get_shipping_address_1(),
176 'city' => $order->get_shipping_city(),
177 'state' => $order->get_shipping_state(),
178 'postcode' => $order->get_shipping_postcode(),
179 'country' => $order->get_shipping_country(),
180 ];
181 }
182 }
183
184 return $subscription_data;
185 }
186 }
187
188 GetSubscriptionDetails::get_instance();
189