Ticket #44266: 44266.7.diff
File 44266.7.diff, 12.2 KB (added by , 4 years ago) |
---|
-
src/wp-admin/css/forms.css
1223 1223 position: static; 1224 1224 } 1225 1225 1226 .privacy_requests .row-actions .remove-personal-data, 1227 .privacy_requests .row-actions .export-personal-data { 1228 display: inline-block; 1229 } 1230 1226 1231 .privacy_requests tbody .has-request-results th { 1227 1232 box-shadow: none; 1228 1233 } -
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 } elseif ( isset( $_REQUEST['resent'] ) ) { 238 $messages[] = __( 'Failed resending request confirmations.') 239 } 240 241 if ( $deleted > 0 ) { 242 /* translators: %d: Number of requests. */ 243 $messages[] = sprintf( _n( 'Deleted %d request.', 'Deleted %d requests.', $deleted ), $deleted ); 244 } elseif ( isset( $_REQUEST['resent'] ) ) { 245 $messages[] = __( 'Failed deleting requests.') 246 } 247 } 248 249 if ( ! empty( $messages ) ) { 250 add_settings_error( 251 'bulk_action', 252 'bulk_action', 253 implode( "<br/>\n", $messages ), 254 'success' 255 ); 256 } 257 } 258 259 /** 260 * Process bulk & row actions. 261 * 221 262 * @since 4.9.6 263 * @since 5.6.0 Handle processing of the row actions. 222 264 */ 223 265 public function process_bulk_action() { 224 266 $action = $this->current_action(); … … 230 272 check_admin_referer( 'bulk-privacy_requests' ); 231 273 } 232 274 275 $sendback = wp_get_referer(); 276 $sendback = remove_query_arg( array( 'resent', 'deleted', 'ids' ), $sendback ); 277 233 278 switch ( $action ) { 234 case 'delete': 279 case 'resend': 280 $sent_ids = array(); 235 281 foreach ( $request_ids as $request_id ) { 236 if ( wp_delete_post( $request_id, true ) ) { 237 $count ++; 282 $resend = _wp_privacy_resend_request( $request_id ); 283 284 if ( $resend && ! is_wp_error( $resend ) ) { 285 $count++; 286 $sent_ids[] = $request_id; 238 287 } 239 288 } 240 289 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' 290 wp_redirect( 291 add_query_arg( 292 array( 293 'resent' => $count, 294 'ids' => $sent_ids, 295 ), 296 $sendback 297 ) 247 298 ); 299 exit; 248 300 break; 249 case ' resend':301 case 'delete': 250 302 foreach ( $request_ids as $request_id ) { 251 $resend = _wp_privacy_resend_request( $request_id ); 252 253 if ( $resend && ! is_wp_error( $resend ) ) { 303 if ( wp_delete_post( $request_id, true ) ) { 254 304 $count++; 255 305 } 256 306 } 257 307 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' 308 wp_redirect( 309 add_query_arg( 310 array( 311 'deleted' => $count 312 ), 313 $sendback 314 ) 264 315 ); 316 exit; 265 317 break; 266 318 } 267 319 }