Ticket #44266: 44266.6.diff
File 44266.6.diff, 12.0 KB (added by , 4 years ago) |
---|
-
src/wp-admin/css/forms.css
1218 1218 position: static; 1219 1219 } 1220 1220 1221 .privacy_requests .row-actions .remove-personal-data, 1222 .privacy_requests .row-actions .export-personal-data { 1223 display: inline-block; 1224 } 1225 1221 1226 .privacy_requests tbody .has-request-results th { 1222 1227 box-shadow: none; 1223 1228 } -
src/wp-admin/erase-personal-data.php
44 44 ) 45 45 ); 46 46 47 $requests_table->handle_bulk_messages(); 47 48 $requests_table->process_bulk_action(); 48 49 $requests_table->prepare_items(); 49 50 -
src/wp-admin/export-personal-data.php
44 44 ) 45 45 ); 46 46 47 $requests_table->handle_bulk_messages(); 47 48 $requests_table->process_bulk_action(); 48 49 $requests_table->prepare_items(); 49 50 -
src/wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php
49 49 $exporters_count = count( $exporters ); 50 50 $request_id = $item->ID; 51 51 $nonce = wp_create_nonce( 'wp-privacy-export-personal-data-' . $request_id ); 52 $row_actions = array(); 52 53 53 54 $download_data_markup = '<div class="export-personal-data" ' . 54 55 'data-exporters-count="' . esc_attr( $exporters_count ) . '" ' . … … 56 57 'data-nonce="' . esc_attr( $nonce ) . 57 58 '">'; 58 59 59 $download_data_markup .= '<span class="export-personal-data-idle"><button type="button" class="button-link export-personal-data-handle">' . __( 'Download PersonalData' ) . '</button></span>' .60 $download_data_markup .= '<span class="export-personal-data-idle"><button type="button" class="button-link export-personal-data-handle">' . __( 'Download Data' ) . '</button></span>' . 60 61 '<span class="export-personal-data-processing hidden">' . __( 'Downloading Data...' ) . ' <span class="export-progress"></span></span>' . 61 62 '<span class="export-personal-data-success hidden"><button type="button" class="button-link export-personal-data-handle">' . __( 'Download Personal Data Again' ) . '</button></span>' . 62 63 '<span class="export-personal-data-failed hidden">' . __( 'Download failed.' ) . ' <button type="button" class="button-link">' . __( 'Retry' ) . '</button></span>'; … … 63 64 64 65 $download_data_markup .= '</div>'; 65 66 66 $row_actions = array( 67 'download-data' => $download_data_markup, 67 $row_actions['download-data'] = $download_data_markup; 68 69 // Suppress resend when request is in a confirmed state. 70 if ( 'request-confirmed' !== $status ) { 71 $resend_confirmation_markup = '<span>'; 72 $resend_confirmation_markup .= sprintf( 73 '<a href="%s" class="resend-confirmation" aria-label="%s">%s</a>', 74 esc_url( 75 wp_nonce_url( 76 add_query_arg( 77 array( 78 'action' => 'resend', 79 'request_id' => array( $request_id ), 80 ), 81 admin_url( 'export-personal-data.php' ) 82 ), 83 'bulk-privacy_requests' 84 ) 85 ), 86 esc_attr( 87 sprintf( 88 /* translators: %s: Request email. */ 89 __( 'Resend export confirmation request to “%s”.' ), 90 $item->email 91 ) 92 ), 93 __( 'Resend Confirmation' ) 94 ); 95 $resend_confirmation_markup .= '</span>'; 96 97 $row_actions['resend-confirmation'] = $resend_confirmation_markup; 98 } 99 100 $delete_request_markup = '<span class="trash">'; 101 $delete_request_markup .= sprintf( 102 '<a href="%s" class="delete-request" aria-label="%s">%s</a>', 103 esc_url( 104 wp_nonce_url( 105 add_query_arg( 106 array( 107 'action' => 'delete', 108 'request_id' => array( $request_id ), 109 ), 110 admin_url( 'export-personal-data.php' ) 111 ), 112 'bulk-privacy_requests' 113 ) 114 ), 115 esc_attr( 116 sprintf( 117 /* translators: %s: Request email. */ 118 __( 'Delete export request for “%s”.' ), 119 $item->email 120 ) 121 ), 122 __( 'Delete Request' ) 68 123 ); 124 $delete_request_markup .= '</span>'; 69 125 126 $row_actions['delete-request'] = $delete_request_markup; 127 70 128 return sprintf( '<a href="%1$s">%2$s</a> %3$s', esc_url( 'mailto:' . $item->email ), $item->email, $this->row_actions( $row_actions ) ); 71 129 } 72 130 -
src/wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php
47 47 $row_actions = array(); 48 48 49 49 // Allow the administrator to "force remove" the personal data even if confirmation has not yet been received. 50 $status = $item->status; 50 $request_id = $item->ID; 51 $status = $item->status; 52 $row_actions = array(); 51 53 if ( 'request-confirmed' !== $status ) { 52 54 /** This filter is documented in wp-admin/includes/ajax-actions.php */ 53 55 $erasers = apply_filters( 'wp_privacy_personal_data_erasers', array() ); 54 56 $erasers_count = count( $erasers ); 55 $request_id = $item->ID;56 57 $nonce = wp_create_nonce( 'wp-privacy-erase-personal-data-' . $request_id ); 57 58 58 59 $remove_data_markup = '<div class="remove-personal-data force-remove-personal-data" ' . … … 61 62 'data-nonce="' . esc_attr( $nonce ) . 62 63 '">'; 63 64 64 $remove_data_markup .= '<span class="remove-personal-data-idle"><button type="button" class="button-link remove-personal-data-handle">' . __( 'Force Eras e Personal Data' ) . '</button></span>' .65 $remove_data_markup .= '<span class="remove-personal-data-idle"><button type="button" class="button-link remove-personal-data-handle">' . __( 'Force Erasure' ) . '</button></span>' . 65 66 '<span class="remove-personal-data-processing hidden">' . __( 'Erasing Data...' ) . ' <span class="erasure-progress"></span></span>' . 66 67 '<span class="remove-personal-data-success hidden">' . __( 'Erasure completed.' ) . '</span>' . 67 68 '<span class="remove-personal-data-failed hidden">' . __( 'Force Erasure has failed.' ) . ' <button type="button" class="button-link remove-personal-data-handle">' . __( 'Retry' ) . '</button></span>'; … … 68 69 69 70 $remove_data_markup .= '</div>'; 70 71 71 $row_actions = array( 72 'remove-data' => $remove_data_markup, 72 $row_actions['remove-data'] = $remove_data_markup; 73 74 $resend_confirmation_markup = '<span>'; 75 $resend_confirmation_markup .= sprintf( 76 '<a href="%s" class="resend-confirmation" aria-label="%s">%s</a>', 77 esc_url( 78 wp_nonce_url( 79 add_query_arg( 80 array( 81 'action' => 'resend', 82 'request_id' => array( $request_id ), 83 ), 84 admin_url( 'erase-personal-data.php' ) 85 ), 86 'bulk-privacy_requests' 87 ) 88 ), 89 esc_attr( 90 sprintf( 91 /* translators: %s: Request email. */ 92 __( 'Resend erasure confirmation request to “%s”.' ), 93 $item->email 94 ) 95 ), 96 __( 'Resend Confirmation' ) 73 97 ); 98 $resend_confirmation_markup .= '</span>'; 99 100 $row_actions['resend-confirmation'] = $resend_confirmation_markup; 74 101 } 75 102 103 $delete_request_markup = '<span class="trash">'; 104 $delete_request_markup .= sprintf( 105 '<a href="%s" class="delete-request" aria-label="%s">%s</a>', 106 esc_url( 107 wp_nonce_url( 108 add_query_arg( 109 array( 110 'action' => 'delete', 111 'request_id' => array( $request_id ), 112 ), 113 admin_url( 'erase-personal-data.php' ) 114 ), 115 'bulk-privacy_requests' 116 ) 117 ), 118 esc_attr( 119 sprintf( 120 /* translators: %s: Request email. */ 121 __( 'Delete erasure request for “%s”.' ), 122 $item->email 123 ) 124 ), 125 __( 'Delete Request' ) 126 ); 127 $delete_request_markup .= '</span>'; 128 129 $row_actions['delete-request'] = $delete_request_markup; 130 76 131 return sprintf( '<a href="%1$s">%2$s</a> %3$s', esc_url( 'mailto:' . $item->email ), $item->email, $this->row_actions( $row_actions ) ); 77 132 } 78 133 -
src/wp-admin/includes/class-wp-privacy-requests-table.php
216 216 } 217 217 218 218 /** 219 * Process bulk actions.219 * Handle bulk & row action messages. 220 220 * 221 * @since 5.6.0 222 */ 223 public function handle_bulk_messages() { 224 if ( isset( $_REQUEST['resent'] ) || isset( $_REQUEST['deleted'] ) ) { 225 $resent = isset( $_REQUEST['resent'] ) ? (int) $_REQUEST['resent'] : 0; 226 $deleted = isset( $_REQUEST['deleted'] ) ? (int) $_REQUEST['deleted'] : 0; 227 228 if ( $resent > 0 ) { 229 if ( 1 === $resent && isset( $_REQUEST['ids'] ) ) { 230 $email = get_the_title( $_REQUEST['ids'][0] ); 231 /* translators: %1$s: Request email. */ 232 $messages[] = sprintf( __( 'Request confirmation has been re-sent to %1$s.' ), esc_attr( $email ) ); 233 } else { 234 /* translators: %d: Number of requests. */ 235 $messages[] = sprintf( _n( 'Re-sent %d request.', 'Re-sent %d requests.', $resent ), $resent ); 236 } 237 } 238 239 if ( $deleted > 0 ) { 240 /* translators: %d: Number of requests. */ 241 $messages[] = sprintf( _n( 'Deleted %d request.', 'Deleted %d requests.', $deleted ), $deleted ); 242 } 243 } 244 245 if ( ! empty( $messages ) ) { 246 add_settings_error( 247 'bulk_action', 248 'bulk_action', 249 implode( "<br/>\n", $messages ), 250 'success' 251 ); 252 } 253 } 254 255 /** 256 * Process bulk & row actions. 257 * 221 258 * @since 4.9.6 259 * @since 5.6.0 Handle processing of the row actions. 222 260 */ 223 261 public function process_bulk_action() { 224 262 $action = $this->current_action(); … … 230 268 check_admin_referer( 'bulk-privacy_requests' ); 231 269 } 232 270 271 $sendback = wp_get_referer(); 272 $sendback = remove_query_arg( array( 'resent', 'deleted', 'ids' ), $sendback ); 273 233 274 switch ( $action ) { 234 case 'delete': 275 case 'resend': 276 $sent_ids = array(); 235 277 foreach ( $request_ids as $request_id ) { 236 if ( wp_delete_post( $request_id, true ) ) { 237 $count ++; 278 $resend = _wp_privacy_resend_request( $request_id ); 279 280 if ( $resend && ! is_wp_error( $resend ) ) { 281 $count++; 282 $sent_ids[] = $request_id; 238 283 } 239 284 } 240 285 241 add_settings_error( 242 'bulk_action', 243 'bulk_action', 244 /* translators: %d: Number of requests. */ 245 sprintf( _n( 'Deleted %d request.', 'Deleted %d requests.', $count ), $count ), 246 'success' 286 wp_redirect( 287 add_query_arg( 288 array( 289 'resent' => $count, 290 'ids' => $sent_ids, 291 ), 292 $sendback 293 ) 247 294 ); 295 exit; 248 296 break; 249 case ' resend':297 case 'delete': 250 298 foreach ( $request_ids as $request_id ) { 251 $resend = _wp_privacy_resend_request( $request_id ); 252 253 if ( $resend && ! is_wp_error( $resend ) ) { 299 if ( wp_delete_post( $request_id, true ) ) { 254 300 $count++; 255 301 } 256 302 } 257 303 258 add_settings_error( 259 'bulk_action', 260 'bulk_action', 261 /* translators: %d: Number of requests. */ 262 sprintf( _n( 'Re-sent %d request.', 'Re-sent %d requests.', $count ), $count ), 263 'success' 304 wp_redirect( 305 add_query_arg( 306 array( 307 'deleted' => $count 308 ), 309 $sendback 310 ) 264 311 ); 312 exit; 265 313 break; 266 314 } 267 315 }