From f3787b2c900540a17e22df9221c4b70019d43350 Mon Sep 17 00:00:00 2001 From: Ian Dunn Date: Wed, 9 May 2018 01:01:12 +0000 Subject: [PATCH] Privacy: Mark erasure requests as completed after processing. r42986 introduced the beginnings of an Ajax handler for processing requests to erase personal data. At the time, a method for marking requests as completed was planned, but had not yet been created. This commit introduces that mechanism, bringing the erasure process closer to completion. Props coreymckrill, allendav. Fixes #43922. git-svn-id: https://develop.svn.wordpress.org/trunk@43185 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/admin-filters.php | 1 + src/wp-admin/includes/user.php | 68 +++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/src/wp-admin/includes/admin-filters.php b/src/wp-admin/includes/admin-filters.php index 72edd467e0..68592b6d41 100644 --- a/src/wp-admin/includes/admin-filters.php +++ b/src/wp-admin/includes/admin-filters.php @@ -133,6 +133,7 @@ add_action( 'upgrader_process_complete', 'wp_update_plugins', 10, 0 ); add_action( 'upgrader_process_complete', 'wp_update_themes', 10, 0 ); // Privacy hooks +add_filter( 'wp_privacy_personal_data_erasure_page', 'wp_privacy_process_personal_data_erasure_page', 10, 5 ); add_filter( 'wp_privacy_personal_data_export_page', 'wp_privacy_process_personal_data_export_page', 10, 7 ); add_action( 'wp_privacy_personal_data_export_file', 'wp_privacy_generate_personal_data_export_file', 10 ); diff --git a/src/wp-admin/includes/user.php b/src/wp-admin/includes/user.php index 2d3d276dcc..1267bdebc7 100644 --- a/src/wp-admin/includes/user.php +++ b/src/wp-admin/includes/user.php @@ -917,6 +917,74 @@ function _wp_personal_data_removal_page() { action_name ) { + wp_send_json_error( __( 'Invalid request ID when processing eraser data.' ) ); + } + + /** This filter is documented in wp-admin/includes/ajax-actions.php */ + $erasers = apply_filters( 'wp_privacy_personal_data_erasers', array() ); + $is_last_eraser = count( $erasers ) === $eraser_index; + $eraser_done = $response['done']; + + if ( ! $is_last_eraser || ! $eraser_done ) { + return $response; + } + + _wp_privacy_completed_request( $request_id ); + + return $response; +} + /** * Add requests pages. *