plugins.php ➔ give_deactivation_popup()   B
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 137

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 0
dl 0
loc 137
rs 8
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * Admin Plugins
4
 *
5
 * @package     Give
6
 * @subpackage  Admin/Plugins
7
 * @copyright   Copyright (c) 2016, GiveWP
8
 * @license     https://opensource.org/licenses/gpl-license GNU Public License
9
 * @since       1.4
10
 */
11
12
// Exit if accessed directly.
13
if ( ! defined( 'ABSPATH' ) ) {
14
	exit;
15
}
16
17
/**
18
 * Plugins row action links
19
 *
20
 * @since 1.4
21
 *
22
 * @param array $actions An array of plugin action links.
23
 *
24
 * @return array An array of updated action links.
25
 */
26
function give_plugin_action_links( $actions ) {
27
	$new_actions = array(
28
		'settings' => sprintf(
29
			'<a href="%1$s">%2$s</a>',
30
			admin_url( 'edit.php?post_type=give_forms&page=give-settings' ),
31
			__( 'Settings', 'give' )
32
		),
33
	);
34
35
	return array_merge( $new_actions, $actions );
36
}
37
38
add_filter( 'plugin_action_links_' . GIVE_PLUGIN_BASENAME, 'give_plugin_action_links' );
39
40
41
/**
42
 * Plugin row meta links
43
 *
44
 * @since 1.4
45
 *
46
 * @param array $plugin_meta An array of the plugin's metadata.
47
 * @param string $plugin_file Path to the plugin file, relative to the plugins directory.
48
 *
49
 * @return array
50
 */
51
function give_plugin_row_meta( $plugin_meta, $plugin_file ) {
52
	if ( GIVE_PLUGIN_BASENAME !== $plugin_file ) {
53
		return $plugin_meta;
54
	}
55
56
	$new_meta_links = array(
57
		sprintf(
58
			'<a href="%1$s" target="_blank">%2$s</a>',
59
			esc_url(
60
				add_query_arg(
61
					array(
62
						'utm_source'   => 'plugins-page',
63
						'utm_medium'   => 'plugin-row',
64
						'utm_campaign' => 'admin',
65
					), 'https://givewp.com/documentation/'
66
				)
67
			),
68
			__( 'Documentation', 'give' )
69
		),
70
		sprintf(
71
			'<a href="%1$s" target="_blank">%2$s</a>',
72
			esc_url(
73
				add_query_arg(
74
					array(
75
						'utm_source'   => 'plugins-page',
76
						'utm_medium'   => 'plugin-row',
77
						'utm_campaign' => 'admin',
78
					), 'https://givewp.com/addons/'
79
				)
80
			),
81
			__( 'Add-ons', 'give' )
82
		),
83
	);
84
85
	return array_merge( $plugin_meta, $new_meta_links );
86
}
87
88
add_filter( 'plugin_row_meta', 'give_plugin_row_meta', 10, 2 );
89
90
91
/**
92
 * Get the Parent Page Menu Title in admin section.
93
 * Based on get_admin_page_title WordPress Function.
94
 *
95
 * @since 1.8.17
96
 *
97
 * @global array $submenu
98
 * @global string $plugin_page
99
 *
100
 * @return string $title Page title
101
 */
102
function give_get_admin_page_menu_title() {
103
	$title = '';
104
	global $submenu, $plugin_page;
105
106
	foreach ( array_keys( $submenu ) as $parent ) {
107
		if ( 'edit.php?post_type=give_forms' !== $parent ) {
108
			continue;
109
		}
110
111
		foreach ( $submenu[ $parent ] as $submenu_array ) {
112
			if ( $plugin_page !== $submenu_array[2] ) {
113
				continue;
114
			}
115
116
			$title = isset( $submenu_array[0] ) ?
117
				$submenu_array[0] :
118
				$submenu_array[3];
119
		}
120
	}
121
122
	return $title;
123
}
124
125
/**
126
 * Store recently activated Give's addons to wp options.
127
 *
128
 * @since 2.1.0
129
 */
130
function give_recently_activated_addons() {
131
	// Check if action is set.
132
	if ( isset( $_REQUEST['action'] ) ) {
133
		$plugin_action = ( '-1' !== $_REQUEST['action'] ) ? $_REQUEST['action'] : ( isset( $_REQUEST['action2'] ) ? $_REQUEST['action2'] : '' );
0 ignored issues
show
introduced by
Detected access of super global var $_REQUEST, probably need manual inspection.
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_REQUEST
Loading history...
134
		$plugins       = array();
0 ignored issues
show
introduced by
Overridding WordPress globals is prohibited
Loading history...
135
136
		switch ( $plugin_action ) {
137
			case 'activate': // Single add-on activation.
138
				$plugins[] = $_REQUEST['plugin'];
0 ignored issues
show
introduced by
Detected access of super global var $_REQUEST, probably need manual inspection.
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_REQUEST
Loading history...
139
				break;
140
			case 'activate-selected': // If multiple add-ons activated.
141
				$plugins = $_REQUEST['checked'];
0 ignored issues
show
introduced by
Overridding WordPress globals is prohibited
Loading history...
introduced by
Detected access of super global var $_REQUEST, probably need manual inspection.
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_REQUEST
Loading history...
142
				break;
143
		}
144
0 ignored issues
show
Coding Style introduced by
Functions must not contain multiple empty lines in a row; found 2 empty lines
Loading history...
145
146
		if ( ! empty( $plugins ) ) {
147
148
			$give_addons = give_get_recently_activated_addons();
149
150
			foreach ( $plugins as $plugin ) {
151
				// Get plugins which has 'Give-' as prefix.
152
				if ( stripos( $plugin, 'Give-' ) !== false ) {
0 ignored issues
show
introduced by
Found "!== false". Use Yoda Condition checks, you must
Loading history...
153
					$give_addons[] = $plugin;
154
				}
155
			}
156
157
			if ( ! empty( $give_addons ) ) {
158
				// Update the Give's activated add-ons.
159
				update_option( 'give_recently_activated_addons', $give_addons, false );
160
			}
161
		}
162
	}
163
}
164
165
// Add add-on plugins to wp option table.
166
add_action( 'activated_plugin', 'give_recently_activated_addons', 10 );
167
168
/**
169
 * Create new menu in plugin section that include all the add-on
170
 *
171
 * @since 2.1.0
172
 *
173
 * @param $plugin_menu
174
 *
175
 * @return mixed
176
 */
177
function give_filter_addons_do_filter_addons( $plugin_menu ) {
178
	global $plugins;
179
180
	foreach ( $plugins['all'] as $plugin_slug => $plugin_data ) {
181
182
		if ( false !== strpos( $plugin_data['Name'], 'Give' ) && ( false !== strpos( $plugin_data['AuthorName'], 'WordImpress' ) || false !== strpos( $plugin_data['AuthorName'], 'GiveWP' ) ) ) {
183
			$plugins['give'][ $plugin_slug ]           = $plugins['all'][ $plugin_slug ];
184
			$plugins['give'][ $plugin_slug ]['plugin'] = $plugin_slug;
185
			// replicate the next step.
186
			if ( current_user_can( 'update_plugins' ) ) {
187
				$current = get_site_transient( 'update_plugins' );
188
				if ( isset( $current->response[ $plugin_slug ] ) ) {
189
					$plugins['give'][ $plugin_slug ]['update'] = true;
190
				}
191
			}
192
		}
193
	}
194
195
	return $plugin_menu;
196
197
}
198
199
add_filter( 'show_advanced_plugins', 'give_filter_addons_do_filter_addons' );
200
add_filter( 'show_network_active_plugins', 'give_filter_addons_do_filter_addons' );
201
202
/**
203
 * Keep activating the same add-on when admin activate or deactivate from Give Menu
204
 *
205
 * @since 2.2.0
206
 *
207
 * @param $action
208
 * @param $result
209
 */
210
function give_prepare_filter_addons_referer( $action, $result ) {
0 ignored issues
show
Unused Code introduced by
The parameter $action is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $result is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
211
	if ( ! function_exists( 'get_current_screen' ) ) {
212
		return;
213
	}
214
	$screen = get_current_screen();
215
	if ( is_object( $screen ) && $screen->base === 'plugins' && ! empty( $_REQUEST['plugin_status'] ) && $_REQUEST['plugin_status'] === 'give' ) {
0 ignored issues
show
introduced by
Found "=== '". Use Yoda Condition checks, you must
Loading history...
introduced by
Detected access of super global var $_REQUEST, probably need manual inspection.
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_REQUEST
Loading history...
216
		global $status;
217
		$status = 'give';
0 ignored issues
show
introduced by
Overridding WordPress globals is prohibited
Loading history...
218
	}
219
}
220
221
add_action( 'check_admin_referer', 'give_prepare_filter_addons_referer', 10, 2 );
222
223
/**
224
 * Make the Give Menu as an default menu and update the Menu Name
225
 *
226
 * @since 2.1.0
227
 *
228
 * @param $views
229
 *
230
 * @return mixed
231
 */
232
function give_filter_addons_filter_addons( $views ) {
233
234
	global $status, $plugins;
235
236
	if ( ! empty( $plugins['give'] ) ) {
237
		$class = '';
238
239
		if ( 'give' === $status ) {
240
			$class = 'current';
241
		}
242
243
		$views['give'] = sprintf(
244
			'<a class="%s" href="plugins.php?plugin_status=give"> %s <span class="count">(%s) </span></a>',
245
			$class,
246
			__( 'Give', 'give' ),
247
			count( $plugins['give'] )
248
		);
249
	}
250
251
	return $views;
252
}
253
254
add_filter( 'views_plugins', 'give_filter_addons_filter_addons' );
255
add_filter( 'views_plugins-network', 'give_filter_addons_filter_addons' );
256
257
/**
258
 * Set the Give as the Main menu when admin click on the Give Menu in Plugin section.
259
 *
260
 * @since 2.1.0
261
 *
262
 * @param $plugins
263
 *
264
 * @return mixed
265
 */
266
function give_prepare_filter_addons( $plugins ) {
267
	global $status;
268
269
	if ( isset( $_REQUEST['plugin_status'] ) && 'give' === $_REQUEST['plugin_status'] ) {
270
		$status = 'give';
0 ignored issues
show
introduced by
Overridding WordPress globals is prohibited
Loading history...
271
	}
272
273
	return $plugins;
274
}
275
276
add_filter( 'all_plugins', 'give_prepare_filter_addons' );
277
278
279
/**
280
 * Display the upgrade notice message.
281
 *
282
 * @param array $data Array of plugin metadata.
283
 * @param array $response An array of metadata about the available plugin update.
284
 *
285
 * @since 2.1
286
 */
287
function give_in_plugin_update_message( $data, $response ) {
0 ignored issues
show
Unused Code introduced by
The parameter $response is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
288
	$new_version           = $data['new_version'];
289
	$current_version_parts = explode( '.', GIVE_VERSION );
290
	$new_version_parts     = explode( '.', $new_version );
291
292
	// If it is a minor upgrade then return.
293
	if ( version_compare( $current_version_parts[0] . '.' . $current_version_parts[1], $new_version_parts[0] . '.' . $new_version_parts[1], '=' ) ) {
294
295
		return;
296
	}
297
298
	// Get the upgrade notice from the trunk.
299
	$upgrade_notice = give_get_plugin_upgrade_notice( $new_version );
300
301
	// Display upgrade notice.
302
	echo apply_filters( 'give_in_plugin_update_message', $upgrade_notice ? '</p>' . wp_kses_post( $upgrade_notice ) . '<p class="dummy">' : '' );
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'apply_filters'
Loading history...
303
}
304
305
// Display upgrade notice.
306
add_action( 'in_plugin_update_message-' . GIVE_PLUGIN_BASENAME, 'give_in_plugin_update_message', 10, 2 );
307
308
309
/**
310
 * Get the upgrade notice from WordPress.org.
311
 *
312
 * Note: internal purpose use only
313
 *
314
 * @since 2.1
315
 *
316
 * @param string $new_version New verison of the plugin.
317
 *
318
 * @return string
319
 */
320
function give_get_plugin_upgrade_notice( $new_version ) {
321
322
	// Cache the upgrade notice.
323
	$transient_name = "give_upgrade_notice_{$new_version}";
324
	$upgrade_notice = get_transient( $transient_name );
325
326
	if ( false === $upgrade_notice ) {
327
		$response = wp_safe_remote_get( 'https://plugins.svn.wordpress.org/give/trunk/readme.txt' );
328
329
		if ( ! is_wp_error( $response ) && ! empty( $response['body'] ) ) {
330
			$upgrade_notice = give_parse_plugin_update_notice( $response['body'], $new_version );
331
			set_transient( $transient_name, $upgrade_notice, DAY_IN_SECONDS );
332
		}
333
	}
334
335
	return $upgrade_notice;
336
}
337
338
339
/**
340
 * Parse update notice from readme file.
341
 *
342
 * Note: internal purpose use only
343
 *
344
 * @since 2.1
345
 *
346
 * @param  string $content Content of the readme.txt file.
347
 * @param  string $new_version The version with current version is compared.
348
 *
349
 * @return string
350
 */
351
function give_parse_plugin_update_notice( $content, $new_version ) {
352
	$version_parts     = explode( '.', $new_version );
353
	$check_for_notices = array(
354
		$version_parts[0] . '.0',
355
		$version_parts[0] . '.0.0',
356
		$version_parts[0] . '.' . $version_parts[1] . '.' . '0',
357
	);
358
359
	// Regex to extract Upgrade notice from the readme.txt file.
360
	$notice_regexp = '~==\s*Upgrade Notice\s*==\s*=\s*(.*)\s*=(.*)(=\s*' . preg_quote( $new_version ) . '\s*=|$)~Uis';
361
362
	$upgrade_notice = '';
363
364
	foreach ( $check_for_notices as $check_version ) {
365
		if ( version_compare( GIVE_VERSION, $check_version, '>' ) ) {
366
			continue;
367
		}
368
369
		$matches = null;
370
371
		if ( preg_match( $notice_regexp, $content, $matches ) ) {
372
			$notices = (array) preg_split( '~[\r\n]+~', trim( $matches[2] ) );
373
374
			if ( version_compare( trim( $matches[1] ), $check_version, '=' ) ) {
375
				$upgrade_notice .= '<p class="give-plugin-upgrade-notice">';
376
377
				foreach ( $notices as $index => $line ) {
378
					$upgrade_notice .= preg_replace( '~\[([^\]]*)\]\(([^\)]*)\)~', '<a href="${2}">${1}</a>', $line );
379
				}
380
381
				$upgrade_notice .= '</p>';
382
			}
383
384
			if ( ! empty( $upgrade_notice ) ) {
385
				break;
386
			}
387
		}
388
	}
389
390
	return wp_kses_post( $upgrade_notice );
391
}
392
393
394
/**
395
 * Add styling to the plugin upgrade notice.
396
 *
397
 * @since 2.1
398
 */
399
function give_plugin_notice_css() {
400
	?>
401
	<style type="text/css">
402
		#give-update .give-plugin-upgrade-notice {
403
			font-weight: 400;
404
			background: #fff8e5 !important;
405
			border-left: 4px solid #ffb900;
406
			border-top: 1px solid #ffb900;
407
			padding: 9px 0 9px 12px !important;
408
			margin: 0 -12px 0 -16px !important;
409
		}
410
411
		#give-update .give-plugin-upgrade-notice:before {
412
			content: '\f348';
413
			display: inline-block;
414
			font: 400 18px/1 dashicons;
415
			speak: none;
416
			margin: 0 8px 0 -2px;
417
			vertical-align: top;
418
		}
419
420
		#give-update .dummy {
421
			display: none;
422
		}
423
	</style>
424
	<?php
425
}
426
427
add_action( 'admin_head', 'give_plugin_notice_css' );
428
429
/**
430
 * Get list of add-on last activated.
431
 *
432
 * @since 2.1.3
433
 *
434
 * @return mixed|array list of recently activated add-on
435
 */
436
function give_get_recently_activated_addons() {
437
	return get_option( 'give_recently_activated_addons', array() );
438
}
439
440
/**
441
 * Renders the Give Deactivation Survey Form.
442
 * Note: only for internal use
443
 *
444
 * @since 2.2
445
 */
446
function give_deactivation_popup() {
447
	// Bailout.
448
	if ( ! current_user_can( 'delete_plugins' ) ) {
449
		give_die();
450
	}
451
452
	$results = array();
453
454
	// Start output buffering.
455
	ob_start();
456
	?>
457
458
	<h2 id="deactivation-survey-title">
459
		<img src="<?php echo esc_url( GIVE_PLUGIN_URL ) ?>/assets/dist/images/give-icon-full-circle.svg">
460
		<span><?php esc_html_e( 'Give Deactivation', 'give' ); ?></span>
461
	</h2>
462
	<form class="deactivation-survey-form" method="POST">
463
		<p><?php esc_html_e( 'If you have a moment, please let us know why you are deactivating Give. All submissions are anonymous and we only use this feedback to improve this plugin.', 'give' ); ?></p>
464
465
		<div>
466
			<label class="give-field-description">
467
				<input type="radio" name="give-survey-radios" value="1">
468
				<?php esc_html_e( "I'm only deactivating temporarily", 'give' ); ?>
469
			</label>
470
		</div>
471
472
		<div>
473
			<label class="give-field-description">
474
				<input type="radio" name="give-survey-radios" value="2">
475
				<?php esc_html_e( 'I no longer need the plugin', 'give' ); ?>
476
			</label>
477
		</div>
478
479
		<div>
480
			<label class="give-field-description">
481
				<input type="radio" name="give-survey-radios" value="3" data-has-field="true">
482
				<?php esc_html_e( 'I found a better plugin', 'give' ); ?>
483
			</label>
484
485
			<div class="give-survey-extra-field">
486
				<p><?php esc_html_e( 'What is the name of the plugin?', 'give' ); ?></p>
487
				<input type="text" name="user-reason" class="widefat">
488
			</div>
489
		</div>
490
491
		<div>
492
			<label class="give-field-description">
493
				<input type="radio" name="give-survey-radios" value="4">
494
				<?php esc_html_e( 'I only needed the plugin for a short period', 'give' ); ?>
495
			</label>
496
		</div>
497
498
		<div>
499
			<label class="give-field-description">
500
				<input type="radio" name="give-survey-radios" value="5" data-has-field="true">
501
				<?php esc_html_e( 'The plugin broke my site', 'give' ); ?>
502
			</label>
503
504
			<div class="give-survey-extra-field">
505
				<p><?php
506
					printf(
507
						'%1$s %2$s %3$s',
508
						__( "We're sorry to hear that, check", 'give' ),
509
						'<a href="https://wordpress.org/support/plugin/give">Give Support</a>.',
510
						__( 'Can you describe the issue?', 'give' )
511
					);
512
					?>
513
				</p>
514
				<textarea disabled name="user-reason" class="widefat" rows="6"></textarea disabled>
515
			</div>
516
		</div>
517
518
		<div>
519
			<label class="give-field-description">
520
				<input type="radio" name="give-survey-radios" value="6" data-has-field="true">
521
				<?php esc_html_e( 'The plugin suddenly stopped working', 'give' ); ?>
522
			</label>
523
524
			<div class="give-survey-extra-field">
525
				<p><?php
526
					printf(
527
						'%1$s %2$s %3$s',
528
						__( "We're sorry to hear that, check", 'give' ),
529
						'<a href="https://wordpress.org/support/plugin/give">Give Support</a>.',
530
						__( 'Can you describe the issue?', 'give' )
531
					);
532
					?>
533
				</p>
534
				<textarea disabled name="user-reason" class="widefat" rows="6"></textarea disabled>
535
			</div>
536
		</div>
537
538
		<div>
539
			<label class="give-field-description">
540
				<input type="radio" name="give-survey-radios" value="7" data-has-field="true">
541
				<?php esc_html_e( 'Other', 'give' ); ?>
542
			</label>
543
544
			<div class="give-survey-extra-field">
545
				<p><?php esc_html_e( "Please describe why you're deactivating Give", 'give' ); ?></p>
546
				<textarea disabled name="user-reason" class="widefat" rows="6"></textarea disabled>
547
			</div>
548
		</div>
549
550
		<div id="survey-and-delete-data">
551
			<p>
552
				<label>
553
					<input type="checkbox" name="confirm_reset_store" value="1">
554
					<?php esc_html_e( 'Would you like to delete all Give data?', 'give' ); ?>
555
				</label>
556
				<section class="give-field-description">
557
					<?php esc_html_e( 'By default the custom roles, Give options, and database entries are not deleted when you deactivate Give. If you are deleting Give completely from your website and want those items removed as well check this option. Note: This will permanently delete all Give data from your database.', 'give' ); ?>
558
				</section>
559
			</p>
560
		</div>
561
		<?php
562
		$current_user       = wp_get_current_user();
563
		$current_user_email = $current_user->user_email;
564
		?>
565
		<input type="hidden" name="current-user-email" value="<?php echo $current_user_email; ?>">
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$current_user_email'
Loading history...
566
		<input type="hidden" name="current-site-url" value="<?php echo esc_url( get_bloginfo( 'url' ) ); ?>">
567
		<input type="hidden" name="give-export-class" value="Give_Tools_Reset_Stats">
568
		<?php wp_nonce_field( 'give_ajax_export', 'give_ajax_export' ); ?>
569
	</form>
570
571
	<?php
572
573
	// Echo content (deactivation form) from the output buffer.
574
	$output = ob_get_contents();
575
576
	// Erase and stop output buffer.
577
	ob_end_clean();
578
579
	$results['html'] = $output;
580
581
	wp_send_json( $results );
582
}
583
584
add_action( 'wp_ajax_give_deactivation_popup', 'give_deactivation_popup' );
585
586
/**
587
 * Ajax callback after the deactivation survey form has been submitted.
588
 * Note: only for internal use
589
 *
590
 * @since 2.2
591
 */
592
function give_deactivation_form_submit() {
593
594
	if ( ! check_ajax_referer( 'deactivation_survey_nonce', 'nonce', false ) ) {
595
		wp_send_json_error();
596
		wp_die();
597
	}
598
599
	$form_data = give_clean( wp_parse_args( $_POST['form-data'] ) );
0 ignored issues
show
introduced by
Detected access of super global var $_POST, probably need manual inspection.
Loading history...
introduced by
Detected usage of a non-validated input variable: $_POST
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_POST
Loading history...
600
601
	// Get the selected radio value.
602
	$radio_value = isset( $form_data['give-survey-radios'] ) ? $form_data['give-survey-radios'] : 0;
603
604
	// Get the reason if any radio button has an optional text field.
605
	$user_reason = isset( $form_data['user-reason'] ) ? $form_data['user-reason'] : '';
606
607
	// Get the email of the user who deactivated the plugin.
608
	$user_email = isset( $form_data['current-user-email'] ) ? $form_data['current-user-email'] : '';
609
610
	// Get the URL of the website on which Give plugin is being deactivated.
611
	$site_url = isset( $form_data['current-site-url'] ) ? $form_data['current-site-url'] : '';
612
613
	// Get the value of the checkbox for deleting Give's data.
614
	$delete_data = isset( $form_data['confirm_reset_store'] ) ? $form_data['confirm_reset_store'] : '';
615
616
	/**
617
	 * Make a POST request to the endpoint to send the survey data.
618
	 */
619
	$response = wp_remote_post(
620
		'http://survey.givewp.com/wp-json/give/v2/survey/',
621
		array(
622
			'body' => array(
623
				'radio_value'        => $radio_value,
624
				'user_reason'        => $user_reason,
625
				'current_user_email' => $user_email,
626
				'site_url'           => $site_url,
627
			),
628
		)
629
	);
630
631
	// Check if the data is sent and stored correctly.
632
	$response = wp_remote_retrieve_body( $response );
633
634
	if ( 'true' === $response ) {
635
		if ( '1' === $delete_data ) {
636
			wp_send_json_success(
637
				array(
638
					'delete_data' => true,
639
				)
640
			);
641
		} else {
642
			wp_send_json_success(
643
				array(
644
					'delete_data' => false,
645
				)
646
			);
647
		}
648
	} else {
649
		wp_send_json_error();
650
	}
651
652
	wp_die();
653
}
654
655
add_action( 'wp_ajax_deactivation_form_submit', 'give_deactivation_form_submit' );
656