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 / profilepress / actions / add-update-profilepress-customer.php
suretriggers / src / Integrations / profilepress / actions Last commit date
add-new-order.php 11 months ago add-update-profilepress-customer.php 11 months ago get-customer-details-by-id.php 11 months ago get-order-details-by-id.php 11 months ago get-plan-details-by-id.php 11 months ago get-subscription-details-by-id.php 11 months ago
add-update-profilepress-customer.php
179 lines
1 <?php
2 /**
3 * AddUpdateProfilepressCustomer.
4 * php version 5.6
5 *
6 * @category AddUpdateProfilepressCustomer
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.1.5
12 */
13
14 namespace SureTriggers\Integrations\ProfilePress\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Traits\SingletonLoader;
18 use ProfilePress\Core\Membership\Models\Customer\CustomerFactory;
19 use ProfilePress\Core\Membership\Models\Customer\CustomerEntity;
20
21
22 /**
23 * AddUpdateProfilepressCustomer
24 *
25 * @category AddUpdateProfilepressCustomer
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 class AddUpdateProfilepressCustomer extends AutomateAction {
33
34
35 /**
36 * Integration type.
37 *
38 * @var string
39 */
40 public $integration = 'ProfilePress';
41
42 /**
43 * Action name.
44 *
45 * @var string
46 */
47 public $action = 'add_update_profilepress_customer';
48
49 use SingletonLoader;
50
51 /**
52 * Register a action.
53 *
54 * @param array $actions actions.
55 * @return array
56 */
57 public function register( $actions ) {
58 $actions[ $this->integration ][ $this->action ] = [
59 'label' => __( 'Add/Update ProfilePress customer', 'suretriggers' ),
60 'action' => $this->action,
61 'function' => [ $this, 'action_listener' ],
62 ];
63 return $actions;
64 }
65
66 /**
67 * Action listener.
68 *
69 * @param int $user_id user_id.
70 * @param int $automation_id automation_id.
71 * @param array $fields fields.
72 * @param array $selected_options selectedOptions.
73 *
74 * @return array
75 */
76 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
77
78 $email = sanitize_email( $selected_options['user_email'] );
79 $user_name = sanitize_text_field( $selected_options['user_name'] );
80 $first_name = isset( $selected_options['first_name'] ) ? sanitize_text_field( $selected_options['first_name'] ) : '';
81 $last_name = isset( $selected_options['last_name'] ) ? sanitize_text_field( $selected_options['last_name'] ) : '';
82
83 /**
84 * User Data
85 */
86 $user_pass = empty( $selected_options['password'] ) ? wp_generate_password() : $selected_options['password'];
87
88 $userdata = [
89 'user_login' => $user_name,
90 'user_email' => $email,
91 'user_pass' => $user_pass,
92 'first_name' => $first_name,
93 'last_name' => $last_name,
94 ];
95
96 $user = get_user_by( 'email', $email );
97 if ( ! $user ) {
98 $user = get_user_by( 'login', $user_name );
99 }
100
101
102 if ( $user ) {
103 $user_id = $user->ID;
104 $userdata['ID'] = $user_id;
105
106 /**
107 * Skipping if empty value.
108 */
109 if ( empty( $userdata['user_login'] ) ) {
110 unset( $userdata['user_login'] );
111 }
112 if ( empty( $userdata['first_name'] ) ) {
113 unset( $userdata['first_name'] );
114 }
115 if ( empty( $userdata['last_name'] ) ) {
116 unset( $userdata['last_name'] );
117 }
118 if ( empty( $selected_options['password'] ) ) {
119 unset( $userdata['user_pass'] );
120 }
121
122 wp_update_user( wp_slash( $userdata ) );
123 } else {
124 $user_id = wp_insert_user( wp_slash( $userdata ) );
125 }
126
127 if ( ! is_wp_error( $user_id ) ) {
128
129 $billing_keys = [ 'address', 'city', 'country', 'state', 'postcode', 'phone' ];
130 foreach ( $billing_keys as $key ) {
131 $post_key = "billing_$key";
132 $value = isset( $selected_options[ $post_key ] ) ? sanitize_textarea_field( $selected_options[ $post_key ] ) : '';
133 $setter = 'ppress_billing_' . $key;
134 update_user_meta( $user_id, $setter, $value );
135 }
136
137 if ( class_exists( 'ProfilePress\Core\Membership\Models\Customer\CustomerFactory' ) ) {
138 $customer = CustomerFactory::fromUserId( $user_id );
139 if ( ! $customer->exists() ) {
140 if ( class_exists( 'ProfilePress\Core\Membership\Models\Customer\CustomerEntity' ) ) {
141 $new_customer = new CustomerEntity();
142 $new_customer->user_id = $user_id;
143 $customer_id = $new_customer->save();
144
145 if ( empty( $customer_id ) ) {
146 return [
147 'status' => __( 'Error', 'suretriggers' ),
148 'response' => __( 'Error creating customer record.', 'suretriggers' ),
149
150 ];
151 } else {
152 $customer_details = CustomerFactory::fromId( absint( $customer_id ) );
153 return [
154 'status' => __( 'Success', 'suretriggers' ),
155 'response' => __( 'Customer successfully created and linked to user.', 'suretriggers' ),
156 'customer' => (array) $customer_details,
157 ];
158 }
159 }
160 } else {
161 return [
162 'status' => __( 'Success', 'suretriggers' ),
163 'response' => __( 'Customer successfully updated.', 'suretriggers' ),
164 'customer' => (array) $customer,
165 ];
166 }
167 }
168 }
169
170 return [
171 'status' => __( 'Error', 'suretriggers' ),
172 'response' => __( 'No customer has been created or updated', 'suretriggers' ),
173
174 ];
175 }
176 }
177
178 AddUpdateProfilepressCustomer::get_instance();
179