WordPress Version: 9.6
/**
* Handle list table actions.
*
* @since 4.9.6
* @access private
*/
function _wp_personal_data_handle_actions()
{
if (isset($_POST['privacy_action_email_retry'])) {
// WPCS: input var ok.
check_admin_referer('bulk-privacy_requests');
$request_id = absint(current(array_keys((array) wp_unslash($_POST['privacy_action_email_retry']))));
// WPCS: input var ok, sanitization ok.
$result = _wp_privacy_resend_request($request_id);
if (is_wp_error($result)) {
add_settings_error('privacy_action_email_retry', 'privacy_action_email_retry', $result->get_error_message(), 'error');
} else {
add_settings_error('privacy_action_email_retry', 'privacy_action_email_retry', __('Confirmation request sent again successfully.'), 'updated');
}
} elseif (isset($_POST['action'])) {
$action = isset($_POST['action']) ? sanitize_key(wp_unslash($_POST['action'])) : '';
// WPCS: input var ok, CSRF ok.
switch ($action) {
case 'add_export_personal_data_request':
case 'add_remove_personal_data_request':
check_admin_referer('personal-data-request');
if (!isset($_POST['type_of_action'], $_POST['username_or_email_to_export'])) {
// WPCS: input var ok.
add_settings_error('action_type', 'action_type', __('Invalid action.'), 'error');
}
$action_type = sanitize_text_field(wp_unslash($_POST['type_of_action']));
// WPCS: input var ok.
$username_or_email_address = sanitize_text_field(wp_unslash($_POST['username_or_email_to_export']));
// WPCS: input var ok.
$email_address = '';
if (!in_array($action_type, _wp_privacy_action_request_types(), true)) {
add_settings_error('action_type', 'action_type', __('Invalid action.'), 'error');
}
if (!is_email($username_or_email_address)) {
$user = get_user_by('login', $username_or_email_address);
if (!$user instanceof WP_User) {
add_settings_error('username_or_email_to_export', 'username_or_email_to_export', __('Unable to add this request. A valid email address or username must be supplied.'), 'error');
} else {
$email_address = $user->user_email;
}
} else {
$email_address = $username_or_email_address;
}
if (empty($email_address)) {
break;
}
$request_id = wp_create_user_request($email_address, $action_type);
if (is_wp_error($request_id)) {
add_settings_error('username_or_email_to_export', 'username_or_email_to_export', $request_id->get_error_message(), 'error');
break;
} elseif (!$request_id) {
add_settings_error('username_or_email_to_export', 'username_or_email_to_export', __('Unable to initiate confirmation request.'), 'error');
break;
}
wp_send_user_request($request_id);
add_settings_error('username_or_email_to_export', 'username_or_email_to_export', __('Confirmation request initiated successfully.'), 'updated');
break;
}
}
}