PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.0.42
OttoKit: All-in-One Automation Platform v1.0.42
1.1.38 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 / memberpress / actions / add-membership.php
suretriggers / src / Integrations / memberpress / actions Last commit date
add-membership.php 2 years ago remove-membership.php 2 years ago
add-membership.php
169 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
82 if ( ! $user_id ) {
83 throw new Exception( 'User not found with this email address.' );
84 }
85
86 if ( is_array( $selected_options['memberpressproduct'] ) ) {
87 $product_id = $selected_options['memberpressproduct']['value'];
88 } else {
89 $product_id = $selected_options['memberpressproduct'];
90 }
91 $sub_total = ( isset( $selected_options['subtotal'] ) ) ? $selected_options['subtotal'] : '';
92 $tax_amount = ( isset( $selected_options['taxAmount'] ) ) ? $selected_options['taxAmount'] : '';
93 $tax_rate = ( isset( $selected_options['taxRate'] ) ) ? $selected_options['taxRate'] : '';
94 $tnx_status = ( isset( $selected_options['status'] ) ) ? $selected_options['status'] : '';
95 $gateway = ( isset( $selected_options['gateway'] ) ) ? $selected_options['gateway'] : '';
96 $expiration_date = ( isset( $selected_options['expireDate'] ) ) ? $selected_options['expireDate'] : '';
97
98 $txn = new MeprTransaction();
99 $user = new MeprUser();
100 $user->load_user_data_by_id( $user_id );
101
102 $txn->trans_num = uniqid( 'st-mp', true );
103 $txn->user_id = $user->ID;
104 $txn->product_id = sanitize_key( $product_id );
105
106 $txn->amount = (float) $sub_total;
107 $txn->tax_amount = (float) $tax_amount;
108 $txn->total = ( (float) $sub_total + (float) $tax_amount );
109 $txn->tax_rate = (float) $tax_rate;
110 $txn->status = sanitize_text_field( $tnx_status );
111 $txn->gateway = sanitize_text_field( $gateway );
112 if ( ! class_exists( 'MeprUtils' ) ) {
113 throw new Exception( 'MemberPress plugin is not installed' );
114 }
115 $txn->created_at = MeprUtils::ts_to_mysql_date( time() );
116
117 if ( isset( $expiration_date ) && ( '' === $expiration_date || is_null( $expiration_date ) ) ) {
118 $obj = new MeprProduct( sanitize_key( $product_id ) );
119 $expires_at_ts = $obj->get_expires_at();
120 if ( is_null( $expires_at_ts ) ) {
121 $txn->expires_at = MeprUtils::db_lifetime();
122 } else {
123 $txn->expires_at = MeprUtils::ts_to_mysql_date( $expires_at_ts, 'Y-m-d 23:59:59' );
124 }
125 } else {
126 $txn->expires_at = MeprUtils::ts_to_mysql_date( strtotime( $expiration_date ), 'Y-m-d 23:59:59' );
127 }
128
129 $txn->store();
130
131 if ( MeprTransaction::$complete_str === $txn->status ) {
132 MeprEvent::record( 'transaction-completed', $txn );
133 $sub = $txn->subscription();
134 // This is a recurring payment.
135 if ( $sub && $sub->txn_count > 1 ) {
136 MeprEvent::record(
137 'recurring-transaction-completed',
138 $txn
139 );
140 } elseif ( ! $sub ) {
141 MeprEvent::record(
142 'non-recurring-transaction-completed',
143 $txn
144 );
145 }
146
147 MeprUtils::send_signup_notices( $txn );
148
149 }
150
151 return [
152 'user_email' => $selected_options['wp_user_email'],
153 'membership_id' => $product_id,
154 'membership_title' => get_the_title( $product_id ),
155 'membership_url' => get_permalink( $product_id ),
156 'membership_featured_image_id' => get_post_meta( $product_id, '_thumbnail_id', true ),
157 'membership_featured_image_url' => get_the_post_thumbnail_url( $product_id ),
158 'sub_total' => $sub_total,
159 'tax_amount' => $tax_amount,
160 'tax_rate' => $tax_rate,
161 'transaction_status' => $tnx_status,
162 'gateway' => $gateway,
163 'expiration_date' => $expiration_date,
164 ];
165 }
166 }
167
168 AddMembership::get_instance();
169