PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
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 / memberpress / actions / add-membership.php
suretriggers / src / Integrations / memberpress / actions Last commit date
add-membership.php 10 months ago create-coupon.php 10 months ago remove-membership.php 10 months ago
add-membership.php
180 lines
1 <?php
2 /**
3 * AddMembership.
4 * php version 5.6
5 *
6 * @category AddMembership
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\MemberPress\Actions;
15
16 use Exception;
17 use MeprEvent;
18 use MeprProduct;
19 use MeprTransaction;
20 use MeprUser;
21 use MeprUtils;
22 use SureTriggers\Integrations\AutomateAction;
23 use SureTriggers\Traits\SingletonLoader;
24
25 /**
26 * AddMembership
27 *
28 * @category AddMembership
29 * @package SureTriggers
30 * @author BSF <username@example.com>
31 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
32 * @link https://www.brainstormforce.com/
33 * @since 1.0.0
34 */
35 class AddMembership extends AutomateAction {
36
37
38 /**
39 * Integration type.
40 *
41 * @var string
42 */
43 public $integration = 'MemberPress';
44
45 /**
46 * Action name.
47 *
48 * @var string
49 */
50 public $action = 'mp_add_membership';
51
52 use SingletonLoader;
53
54 /**
55 * Register a action.
56 *
57 * @param array $actions actions.
58 * @return array
59 */
60 public function register( $actions ) {
61 $actions[ $this->integration ][ $this->action ] = [
62 'label' => __( 'Add to Membership', 'suretriggers' ),
63 'action' => $this->action,
64 'function' => [ $this, 'action_listener' ],
65 ];
66 return $actions;
67 }
68
69 /**
70 * Action listener.
71 *
72 * @param int $user_id user_id.
73 * @param int $automation_id automation_id.
74 * @param array $fields fields.
75 * @param array $selected_options selectedOptions.
76 * @throws Exception Throws exception.
77 *
78 * @return array
79 */
80 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
81 if ( ! class_exists( 'MeprTransaction' ) || ! class_exists( 'MeprUser' ) || ! class_exists( 'MeprProduct' ) || ! class_exists( 'MeprEvent' ) ) {
82 return [
83 'status' => 'error',
84 'message' => 'MemberPress class not found.',
85 ];
86 }
87 if ( ! $user_id ) {
88 return [
89 'status' => 'error',
90 'message' => 'User not found with this email address.',
91 ];
92 }
93
94 if ( is_array( $selected_options['memberpressproduct'] ) ) {
95 $product_id = $selected_options['memberpressproduct']['value'];
96 } else {
97 $product_id = $selected_options['memberpressproduct'];
98 }
99 $sub_total = ( isset( $selected_options['subtotal'] ) ) ? $selected_options['subtotal'] : '';
100 $tax_amount = ( isset( $selected_options['taxAmount'] ) ) ? $selected_options['taxAmount'] : '';
101 $tax_rate = ( isset( $selected_options['taxRate'] ) ) ? $selected_options['taxRate'] : '';
102 $tnx_status = ( isset( $selected_options['status'] ) ) ? $selected_options['status'] : '';
103 $gateway = ( isset( $selected_options['gateway'] ) ) ? $selected_options['gateway'] : '';
104 $expiration_date = ( isset( $selected_options['expireDate'] ) ) ? $selected_options['expireDate'] : '';
105
106 $txn = new MeprTransaction();
107 $user = new MeprUser();
108 $user->load_user_data_by_id( $user_id );
109
110 $txn->trans_num = uniqid( 'st-mp', true );
111 $txn->user_id = $user->ID;
112 $txn->product_id = sanitize_key( $product_id );
113
114 $txn->amount = (float) $sub_total;
115 $txn->tax_amount = (float) $tax_amount;
116 $txn->total = ( (float) $sub_total + (float) $tax_amount );
117 $txn->tax_rate = (float) $tax_rate;
118 $txn->status = sanitize_text_field( $tnx_status );
119 $txn->gateway = sanitize_text_field( $gateway );
120 if ( ! class_exists( 'MeprUtils' ) ) {
121 return [
122 'status' => 'error',
123 'message' => 'MemberPress plugin is not installed',
124 ];
125 }
126 $txn->created_at = MeprUtils::ts_to_mysql_date( time() );
127
128 if ( '' === $expiration_date ) {
129 $obj = new MeprProduct( sanitize_key( $product_id ) );
130 $expires_at_ts = $obj->get_expires_at();
131 if ( is_null( $expires_at_ts ) ) {
132 $txn->expires_at = MeprUtils::db_lifetime();
133 } else {
134 $txn->expires_at = MeprUtils::ts_to_mysql_date( $expires_at_ts, 'Y-m-d 23:59:59' );
135 }
136 } else {
137 $txn->expires_at = MeprUtils::ts_to_mysql_date( strtotime( $expiration_date ), 'Y-m-d 23:59:59' );
138 }
139
140 $txn->store();
141
142 if ( MeprTransaction::$complete_str === $txn->status ) {
143 MeprEvent::record( 'transaction-completed', $txn );
144 $sub = $txn->subscription();
145 // This is a recurring payment.
146 if ( $sub && $sub->txn_count > 1 ) {
147 MeprEvent::record(
148 'recurring-transaction-completed',
149 $txn
150 );
151 } elseif ( ! $sub ) {
152 MeprEvent::record(
153 'non-recurring-transaction-completed',
154 $txn
155 );
156 }
157
158 MeprUtils::send_signup_notices( $txn );
159
160 }
161
162 return [
163 'user_email' => $selected_options['wp_user_email'],
164 'membership_id' => $product_id,
165 'membership_title' => get_the_title( $product_id ),
166 'membership_url' => get_permalink( $product_id ),
167 'membership_featured_image_id' => get_post_meta( $product_id, '_thumbnail_id', true ),
168 'membership_featured_image_url' => get_the_post_thumbnail_url( $product_id ),
169 'sub_total' => $sub_total,
170 'tax_amount' => $tax_amount,
171 'tax_rate' => $tax_rate,
172 'transaction_status' => $tnx_status,
173 'gateway' => $gateway,
174 'expiration_date' => $expiration_date,
175 ];
176 }
177 }
178
179 AddMembership::get_instance();
180