|
@@ -8,10 +8,10 @@ discard block |
|
|
block discarded – undo |
|
8
|
8
|
$submission_handler = new Yikes_Inc_Easy_Mailchimp_Extender_Process_Submission_Handler( $is_ajax = true ); |
|
9
|
9
|
|
|
10
|
10
|
// parse our form data |
|
11
|
|
-parse_str( $_POST['form_data'], $data ); |
|
|
11
|
+parse_str( $_POST[ 'form_data' ], $data ); |
|
12
|
12
|
|
|
13
|
13
|
// Get the form_id |
|
14
|
|
-$form_id = absint( $_POST['form_id'] ); |
|
|
14
|
+$form_id = absint( $_POST[ 'form_id' ] ); |
|
15
|
15
|
|
|
16
|
16
|
// Send an error if for some reason we can't find the $form_id |
|
17
|
17
|
$submission_handler->handle_empty_form_id( $form_id ); |
|
@@ -20,7 +20,7 @@ discard block |
|
|
block discarded – undo |
|
20
|
20
|
$submission_handler->set_form_id( $form_id ); |
|
21
|
21
|
|
|
22
|
22
|
// Check our nonce |
|
23
|
|
-$submission_handler->handle_nonce( $_POST['ajax_security_nonce'], 'yikes_mc_form_submission_security_nonce' ); |
|
|
23
|
+$submission_handler->handle_nonce( $_POST[ 'ajax_security_nonce' ], 'yikes_mc_form_submission_security_nonce' ); |
|
24
|
24
|
|
|
25
|
25
|
// Get the form data |
|
26
|
26
|
$interface = yikes_easy_mailchimp_extender_get_form_interface(); |
|
@@ -30,10 +30,10 @@ discard block |
|
|
block discarded – undo |
|
30
|
30
|
$submission_handler->handle_empty_form( $form_data ); |
|
31
|
31
|
|
|
32
|
32
|
// Set up some variables from the form data -- these are required |
|
33
|
|
-$list_id = isset( $form_data['list_id'] ) ? $form_data['list_id'] : null; |
|
34
|
|
-$submission_settings = isset( $form_data['submission_settings'] ) ? $form_data['submission_settings'] : null; |
|
35
|
|
-$optin_settings = isset( $form_data['optin_settings'] ) ? $form_data['optin_settings'] : null; |
|
36
|
|
-$form_fields = isset( $form_data['fields'] ) ? $form_data['fields'] : null; |
|
|
33
|
+$list_id = isset( $form_data[ 'list_id' ] ) ? $form_data[ 'list_id' ] : null; |
|
|
34
|
+$submission_settings = isset( $form_data[ 'submission_settings' ] ) ? $form_data[ 'submission_settings' ] : null; |
|
|
35
|
+$optin_settings = isset( $form_data[ 'optin_settings' ] ) ? $form_data[ 'optin_settings' ] : null; |
|
|
36
|
+$form_fields = isset( $form_data[ 'fields' ] ) ? $form_data[ 'fields' ] : null; |
|
37
|
37
|
|
|
38
|
38
|
// Send an error if for some reason we can't find the required form data |
|
39
|
39
|
$submission_handler->handle_empty_fields_generic( array( $list_id, $submission_settings, $optin_settings, $form_fields ) ); |
|
@@ -47,14 +47,14 @@ discard block |
|
|
block discarded – undo |
|
47
|
47
|
$submission_handler->check_for_required_interest_groups( $data, $form_fields ); |
|
48
|
48
|
|
|
49
|
49
|
// Set up some variables from the form data -- these are not required |
|
50
|
|
-$error_messages = isset( $form_data['error_messages'] ) ? $form_data['error_messages'] : array(); |
|
51
|
|
-$notifications = isset( $form_data['custom_notifications'] ) ? $form_data['custom_notifications'] : array(); |
|
|
50
|
+$error_messages = isset( $form_data[ 'error_messages' ] ) ? $form_data[ 'error_messages' ] : array(); |
|
|
51
|
+$notifications = isset( $form_data[ 'custom_notifications' ] ) ? $form_data[ 'custom_notifications' ] : array(); |
|
52
|
52
|
|
|
53
|
53
|
// Set the error messages in our class |
|
54
|
54
|
$submission_handler->set_error_messages( $error_messages ); |
|
55
|
55
|
|
|
56
|
56
|
// Some other variables we'll need. |
|
57
|
|
-$page_data = isset( $_POST['page_data'] ) ? $_POST['page_data'] : ''; |
|
|
57
|
+$page_data = isset( $_POST[ 'page_data' ] ) ? $_POST[ 'page_data' ] : ''; |
|
58
|
58
|
$merge_variables = array(); |
|
59
|
59
|
$error = 0; |
|
60
|
60
|
$list_handler = yikes_get_mc_api_manager()->get_list_handler(); |
|
@@ -62,13 +62,13 @@ discard block |
|
|
block discarded – undo |
|
62
|
62
|
// As of 6.4 we no longer pass the post object, only the ID. |
|
63
|
63
|
// For any users relying on the $post object for their `yikes-mailchimp-redirect-url` filter we'll grab the post object here. |
|
64
|
64
|
// Eventually we should just pass the $post_id into the filter instead of the whole object. |
|
65
|
|
-$page_data = ! empty( $page_data ) ? get_post( $page_data ) : ''; |
|
|
65
|
+$page_data = ! empty( $page_data ) ? get_post( $page_data ) : ''; |
|
66
|
66
|
|
|
67
|
67
|
// Send an error if for some reason we can't find the list_handler |
|
68
|
68
|
$submission_handler->handle_empty_list_handler( $list_handler ); |
|
69
|
69
|
|
|
70
|
70
|
// Get, sanitize and lowercasify the email |
|
71
|
|
-$submitted_email = isset( $data['EMAIL'] ) ? $data['EMAIL'] : ''; |
|
|
71
|
+$submitted_email = isset( $data[ 'EMAIL' ] ) ? $data[ 'EMAIL' ] : ''; |
|
72
|
72
|
$sanitized_email = $submission_handler->get_sanitized_email( $submitted_email ); |
|
73
|
73
|
$submission_handler->set_email( $sanitized_email ); |
|
74
|
74
|
|
|
@@ -76,26 +76,26 @@ discard block |
|
|
block discarded – undo |
|
76
|
76
|
$submission_handler->handle_empty_email( $sanitized_email ); |
|
77
|
77
|
|
|
78
|
78
|
// Check for Honeypot filled |
|
79
|
|
-$honey_pot_filled = ( isset( $data['yikes-mailchimp-honeypot'] ) && '' !== $data['yikes-mailchimp-honeypot'] ) ? true : false; |
|
|
79
|
+$honey_pot_filled = ( isset( $data[ 'yikes-mailchimp-honeypot' ] ) && '' !== $data[ 'yikes-mailchimp-honeypot' ] ) ? true : false; |
|
80
|
80
|
|
|
81
|
81
|
// Send an error if honey pot is not empty |
|
82
|
82
|
$submission_handler->handle_non_empty_honeypot( $honey_pot_filled ); |
|
83
|
83
|
|
|
84
|
84
|
// Check if reCAPTCHA Response was submitted with the form data, and handle it if needed |
|
85
|
|
-if ( isset( $data['g-recaptcha-response'] ) ) { |
|
86
|
|
- $recaptcha_response = $data['g-recaptcha-response']; |
|
|
85
|
+if ( isset( $data[ 'g-recaptcha-response' ] ) ) { |
|
|
86
|
+ $recaptcha_response = $data[ 'g-recaptcha-response' ]; |
|
87
|
87
|
$submission_handler->handle_recaptcha( $recaptcha_response ); |
|
88
|
88
|
} |
|
89
|
89
|
|
|
90
|
|
-if ( isset( $data['recaptcha_three_response'] ) ) { |
|
91
|
|
- $submission_handler->handle_recaptcha( $data['recaptcha_three_response'], 3 ); |
|
|
90
|
+if ( isset( $data[ 'recaptcha_three_response' ] ) ) { |
|
|
91
|
+ $submission_handler->handle_recaptcha( $data[ 'recaptcha_three_response' ], 3 ); |
|
92
|
92
|
} |
|
93
|
93
|
|
|
94
|
94
|
// Loop through the submitted data to sanitize and format values |
|
95
|
95
|
$merge_variables = $submission_handler->get_submitted_merge_values( $data, $form_fields ); |
|
96
|
96
|
|
|
97
|
97
|
// Submission Setting: Replace interest groups or update interest groups |
|
98
|
|
-$replace_interests = isset( $submission_settings['replace_interests'] ) ? (bool) $submission_settings['replace_interests'] : true; |
|
|
98
|
+$replace_interests = isset( $submission_settings[ 'replace_interests' ] ) ? (bool) $submission_settings[ 'replace_interests' ] : true; |
|
99
|
99
|
|
|
100
|
100
|
// Get the default groups |
|
101
|
101
|
$groups = $submission_handler->get_default_interest_groups( $replace_interests, $list_handler ); |
|
@@ -110,15 +110,15 @@ discard block |
|
|
block discarded – undo |
|
110
|
110
|
* |
|
111
|
111
|
* @param $merge_variables array Array of merge variable to use |
|
112
|
112
|
*/ |
|
113
|
|
-do_action( 'yikes-mailchimp-before-submission', $merge_variables ); |
|
|
113
|
+do_action( 'yikes-mailchimp-before-submission', $merge_variables ); |
|
114
|
114
|
do_action( "yikes-mailchimp-before-submission-{$form_id}", $merge_variables ); |
|
115
|
115
|
|
|
116
|
116
|
// Allow users to check for form values (using the `yikes-mailchimp-filter-before-submission` filter hook in function `get_submitted_merge_values`) |
|
117
|
117
|
// and pass back an error and message to the user |
|
118
|
118
|
// If error is set and no message, default to our class variable's default error message |
|
119
|
|
-if ( isset( $merge_variables['error'] ) ) { |
|
120
|
|
- $merge_error_message = isset( $merge_variables['message'] ) ? $merge_variables['message'] : $submission_handler->default_error_response_message; |
|
121
|
|
- $submission_handler->handle_merge_variables_error( $merge_variables['error'], $merge_error_message ); |
|
|
119
|
+if ( isset( $merge_variables[ 'error' ] ) ) { |
|
|
120
|
+ $merge_error_message = isset( $merge_variables[ 'message' ] ) ? $merge_variables[ 'message' ] : $submission_handler->default_error_response_message; |
|
|
121
|
+ $submission_handler->handle_merge_variables_error( $merge_variables[ 'error' ], $merge_error_message ); |
|
122
|
122
|
} |
|
123
|
123
|
|
|
124
|
124
|
// This is the array we're going to pass through to the Mailchimp API |
|
@@ -129,7 +129,7 @@ discard block |
|
|
block discarded – undo |
|
129
|
129
|
|
|
130
|
130
|
// Only add groups if they exist |
|
131
|
131
|
if ( ! empty( $groups ) ) { |
|
132
|
|
- $member_data['interests'] = $groups; |
|
|
132
|
+ $member_data[ 'interests' ] = $groups; |
|
133
|
133
|
} |
|
134
|
134
|
|
|
135
|
135
|
// Check if this member already exists |
|
@@ -140,12 +140,12 @@ discard block |
|
|
block discarded – undo |
|
140
|
140
|
// Likewise, if this member exists but their status is 'pending' it means we're dealing with a double opt-in list and they never confirmed |
|
141
|
141
|
// Or, if this member but their status is 'unsubscribed' it means we're dealing with someone who unsubscribed and they need to re-subscribe |
|
142
|
142
|
// Continue as if they're a new member to force another double opt-in email |
|
143
|
|
-if ( is_array( $member_exists ) && isset( $member_exists['status'] ) ) { |
|
144
|
|
- $double_optin_resubscribe = $member_exists['status'] === 'pending' || $member_exists['status'] === 'unsubscribed'; |
|
|
143
|
+if ( is_array( $member_exists ) && isset( $member_exists[ 'status' ] ) ) { |
|
|
144
|
+ $double_optin_resubscribe = $member_exists[ 'status' ] === 'pending' || $member_exists[ 'status' ] === 'unsubscribed'; |
|
145
|
145
|
} else { |
|
146
|
146
|
|
|
147
|
147
|
// If this member doesn't exist, set their timestamp signup to the current time. |
|
148
|
|
- $member_data['timestamp_signup'] = current_time( 'Y-m-d H:i:s', 1 ); |
|
|
148
|
+ $member_data[ 'timestamp_signup' ] = current_time( 'Y-m-d H:i:s', 1 ); |
|
149
|
149
|
} |
|
150
|
150
|
|
|
151
|
151
|
if ( is_wp_error( $member_exists ) || $double_optin_resubscribe === true ) { |
|
@@ -154,24 +154,24 @@ discard block |
|
|
block discarded – undo |
|
154
|
154
|
|
|
155
|
155
|
// Check the opt-in value - is it double or single? |
|
156
|
156
|
// Double opt-in means 'status_if_new' => 'pending' |
|
157
|
|
- $double_optin = isset( $optin_settings['optin'] ) ? (int) $optin_settings['optin'] : 0; |
|
|
157
|
+ $double_optin = isset( $optin_settings[ 'optin' ] ) ? (int) $optin_settings[ 'optin' ] : 0; |
|
158
|
158
|
|
|
159
|
159
|
// If the user was unsubscribed and is re-subscribing, we set the status to 'pending', which |
|
160
|
160
|
// causes Mailchimp to send them a confirmation email. This is the only way Mailchimp will |
|
161
|
161
|
// allow us to re-subscribe the user. |
|
162
|
|
- $was_unsubscribed = is_array( $member_exists ) && isset( $member_exists['status'] ) && $member_exists['status'] === 'unsubscribed'; |
|
|
162
|
+ $was_unsubscribed = is_array( $member_exists ) && isset( $member_exists[ 'status' ] ) && $member_exists[ 'status' ] === 'unsubscribed'; |
|
163
|
163
|
$was_unsubscribed = apply_filters( 'yikes_mailchimp_single_resubscribe', $was_unsubscribed ); |
|
164
|
164
|
|
|
165
|
165
|
if ( $double_optin === 1 || $was_unsubscribed === true ) { |
|
166
|
166
|
|
|
167
|
167
|
// Double opt-in |
|
168
|
|
- $member_data['status_if_new'] = 'pending'; |
|
169
|
|
- $member_data['status'] = 'pending'; |
|
|
168
|
+ $member_data[ 'status_if_new' ] = 'pending'; |
|
|
169
|
+ $member_data[ 'status' ] = 'pending'; |
|
170
|
170
|
} else { |
|
171
|
171
|
|
|
172
|
172
|
// Single opt-in |
|
173
|
|
- $member_data['status_if_new'] = 'subscribed'; |
|
174
|
|
- $member_data['status'] = 'subscribed'; |
|
|
173
|
+ $member_data[ 'status_if_new' ] = 'subscribed'; |
|
|
174
|
+ $member_data[ 'status' ] = 'subscribed'; |
|
175
|
175
|
} |
|
176
|
176
|
|
|
177
|
177
|
} else { |
|
@@ -180,10 +180,10 @@ discard block |
|
|
block discarded – undo |
|
180
|
180
|
|
|
181
|
181
|
// But first let's set our flag, and set the Mailchimp status flag |
|
182
|
182
|
$new_subscriber = false; |
|
183
|
|
- $member_data['status'] = 'subscribed'; |
|
|
183
|
+ $member_data[ 'status' ] = 'subscribed'; |
|
184
|
184
|
|
|
185
|
185
|
// Check our update_existing_user optin setting |
|
186
|
|
- $update_existing_user = ( $optin_settings['update_existing_user'] === '1' ) ? true : false; |
|
|
186
|
+ $update_existing_user = ( $optin_settings[ 'update_existing_user' ] === '1' ) ? true : false; |
|
187
|
187
|
|
|
188
|
188
|
// If update_existing_user is false (not allowed) then simply fail and return a response message |
|
189
|
189
|
if ( $update_existing_user === false ) { |
|
@@ -191,7 +191,7 @@ discard block |
|
|
block discarded – undo |
|
191
|
191
|
} |
|
192
|
192
|
|
|
193
|
193
|
// If update_existing_user is true, we need to check our 'send_update_email' option |
|
194
|
|
- $send_update_email = ( $optin_settings['send_update_email'] === '1' ) ? true : false; |
|
|
194
|
+ $send_update_email = ( $optin_settings[ 'send_update_email' ] === '1' ) ? true : false; |
|
195
|
195
|
|
|
196
|
196
|
// If $send_update_email is true (we send the email) then we need to fire off the 'send update email' logic |
|
197
|
197
|
if ( $send_update_email === true ) { |
|
@@ -214,9 +214,9 @@ discard block |
|
|
block discarded – undo |
|
214
|
214
|
|
|
215
|
215
|
// If this is the first time subscriber add the tags along with the subscribe request. |
|
216
|
216
|
// This allows for double opt-in forms submissions to be tagged. |
|
217
|
|
-if ( ! empty( $form_data['tags'] ) && ! is_array( $member_exists ) ) { |
|
218
|
|
- foreach( $form_data['tags'] as $tag ) { |
|
219
|
|
- $member_data['tags'][] = $tag['name']; |
|
|
217
|
+if ( ! empty( $form_data[ 'tags' ] ) && ! is_array( $member_exists ) ) { |
|
|
218
|
+ foreach ( $form_data[ 'tags' ] as $tag ) { |
|
|
219
|
+ $member_data[ 'tags' ][ ] = $tag[ 'name' ]; |
|
220
|
220
|
} |
|
221
|
221
|
} |
|
222
|
222
|
|