From 4467a9226c1f87217fb5e202faf0ea3fdc0e02ee Mon Sep 17 00:00:00 2001 From: iandunn Date: Wed, 9 May 2018 01:02:22 +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. Built from https://develop.svn.wordpress.org/trunk@43185 git-svn-id: http://core.svn.wordpress.org/trunk@43014 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/includes/admin-filters.php | 1 + wp-admin/includes/user.php | 68 +++++++++++++++++++++++++++++ wp-includes/version.php | 2 +- 3 files changed, 70 insertions(+), 1 deletion(-) diff --git a/wp-admin/includes/admin-filters.php b/wp-admin/includes/admin-filters.php index 72edd467e0..68592b6d41 100644 --- a/wp-admin/includes/admin-filters.php +++ b/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/wp-admin/includes/user.php b/wp-admin/includes/user.php index 2d3d276dcc..1267bdebc7 100644 --- a/wp-admin/includes/user.php +++ b/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. * diff --git a/wp-includes/version.php b/wp-includes/version.php index 4edbb109a9..31a86df4d8 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '5.0-alpha-43184'; +$wp_version = '5.0-alpha-43185'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.