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 / slice-wp / actions / slicewp-create-affiliate.php
suretriggers / src / Integrations / slice-wp / actions Last commit date
slicewp-create-affiliate.php 11 months ago slicewp-create-commission.php 11 months ago slicewp-list-affiliates.php 11 months ago
slicewp-create-affiliate.php
168 lines
1 <?php
2 /**
3 * SliceWPCreateAffiliate.
4 * php version 5.6
5 *
6 * @category SliceWPCreateAffiliate
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\SliceWP\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Traits\SingletonLoader;
18 use Exception;
19
20 /**
21 * SliceWPCreateAffiliate
22 *
23 * @category SliceWPCreateAffiliate
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 SliceWPCreateAffiliate extends AutomateAction {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'SliceWP';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'slicewp_create_affiliate';
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' => __( 'Create Affiliate', '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 selectedOptions.
70 * @psalm-suppress UndefinedMethod
71 * @throws Exception Exception.
72 *
73 * @return array|bool|void
74 */
75 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
76
77
78 if ( ! function_exists( 'slicewp_insert_affiliate' ) ) {
79 return [
80 'status' => 'error',
81 'message' => 'SliceWP functions not found.',
82 ];
83 }
84
85 // Get user by email.
86 $wp_user = get_user_by( 'email', $selected_options['user_login'] );
87 if ( ! $wp_user ) {
88 return [
89 'status' => 'error',
90 'message' => 'User not found. Please provide a valid user email.',
91 ];
92 }
93
94 $userid = $wp_user->data->ID;
95
96 // Check if user is already an affiliate.
97 if ( function_exists( 'slicewp_get_affiliate_by_user_id' ) ) {
98 $existing_affiliate = slicewp_get_affiliate_by_user_id( $userid );
99 if ( $existing_affiliate ) {
100 return [
101 'status' => 'error',
102 'message' => 'User is already an affiliate.',
103 ];
104 }
105 }
106
107 // Prepare affiliate data exactly like SliceWP implementation.
108 $affiliate = [];
109 $affiliate['user_id'] = absint( $userid );
110 $affiliate['date_created'] = ! empty( $selected_options['affiliate_date'] ) ? $selected_options['affiliate_date'] : ( function_exists( 'slicewp_mysql_gmdate' ) ? slicewp_mysql_gmdate() : current_time( 'mysql', true ) );
111 $affiliate['date_modified'] = $affiliate['date_created'];
112 $affiliate['payment_email'] = ! empty( $selected_options['payment_email'] ) ? sanitize_email( $selected_options['payment_email'] ) : '';
113 $affiliate['website'] = ! empty( $selected_options['website'] ) ? esc_url( $selected_options['website'] ) : '';
114 $affiliate['status'] = ! empty( $selected_options['status'] ) ? sanitize_text_field( $selected_options['status'] ) : 'active';
115
116 // Handle welcome email flag for backward compatibility - handle both string and integer inputs.
117 $welcome_email_input = ! empty( $selected_options['welcome_email'] ) ? $selected_options['welcome_email'] : false;
118
119 // Convert various inputs to boolean.
120 if ( 'true' === $welcome_email_input || true === $welcome_email_input || 1 === $welcome_email_input || '1' === $welcome_email_input ) {
121 $affiliate['welcome_email'] = true;
122 } else {
123 $affiliate['welcome_email'] = false;
124 }
125
126
127
128
129
130 // Insert affiliate into the database.
131 $affiliate_id = slicewp_insert_affiliate( $affiliate );
132 if ( ! $affiliate_id ) {
133 return [
134 'status' => 'error',
135 'message' => 'Not able to create new affiliate, try later.',
136 ];
137 } else {
138 // Get affiliate name using SliceWP's function (same as in SliceWP admin).
139 $affiliate_name = '';
140 if ( function_exists( 'slicewp_get_affiliate_name' ) ) {
141 $affiliate_name = slicewp_get_affiliate_name( $affiliate_id );
142 }
143
144 // Prepare comprehensive response data.
145 $response = [
146 'status' => 'success',
147 'affiliate_id' => $affiliate_id,
148 'user_id' => $userid,
149 'affiliate_name' => $affiliate_name,
150 'user_email' => $wp_user->user_email,
151 'user_login' => $wp_user->user_login,
152 'first_name' => $wp_user->first_name,
153 'last_name' => $wp_user->last_name,
154 'display_name' => $wp_user->display_name,
155 'payment_email' => $affiliate['payment_email'],
156 'website' => $affiliate['website'],
157 'affiliate_status' => $affiliate['status'],
158 'date_created' => $affiliate['date_created'],
159 'date_modified' => $affiliate['date_modified'],
160 ];
161
162 return $response;
163 }
164 }
165 }
166
167 SliceWPCreateAffiliate::get_instance();
168