wp/wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php
changeset 18 be944660c56a
parent 16 a86126ab1dd4
child 21 48c4eec2b7e6
equal deleted inserted replaced
17:34716fd837a4 18:be944660c56a
    45 	 */
    45 	 */
    46 	public function column_email( $item ) {
    46 	public function column_email( $item ) {
    47 		$row_actions = array();
    47 		$row_actions = array();
    48 
    48 
    49 		// Allow the administrator to "force remove" the personal data even if confirmation has not yet been received.
    49 		// Allow the administrator to "force remove" the personal data even if confirmation has not yet been received.
    50 		$status = $item->status;
    50 		$status      = $item->status;
       
    51 		$request_id  = $item->ID;
       
    52 		$row_actions = array();
    51 		if ( 'request-confirmed' !== $status ) {
    53 		if ( 'request-confirmed' !== $status ) {
    52 			/** This filter is documented in wp-admin/includes/ajax-actions.php */
    54 			/** This filter is documented in wp-admin/includes/ajax-actions.php */
    53 			$erasers       = apply_filters( 'wp_privacy_personal_data_erasers', array() );
    55 			$erasers       = apply_filters( 'wp_privacy_personal_data_erasers', array() );
    54 			$erasers_count = count( $erasers );
    56 			$erasers_count = count( $erasers );
    55 			$request_id    = $item->ID;
       
    56 			$nonce         = wp_create_nonce( 'wp-privacy-erase-personal-data-' . $request_id );
    57 			$nonce         = wp_create_nonce( 'wp-privacy-erase-personal-data-' . $request_id );
    57 
    58 
    58 			$remove_data_markup = '<div class="remove-personal-data force-remove-personal-data" ' .
    59 			$remove_data_markup = '<span class="remove-personal-data force-remove-personal-data" ' .
    59 				'data-erasers-count="' . esc_attr( $erasers_count ) . '" ' .
    60 				'data-erasers-count="' . esc_attr( $erasers_count ) . '" ' .
    60 				'data-request-id="' . esc_attr( $request_id ) . '" ' .
    61 				'data-request-id="' . esc_attr( $request_id ) . '" ' .
    61 				'data-nonce="' . esc_attr( $nonce ) .
    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 Erase 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 erase personal data' ) . '</button></span>' .
    65 				'<span class="remove-personal-data-processing hidden">' . __( 'Erasing Data...' ) . ' <span class="erasure-progress"></span></span>' .
    66 				'<span class="remove-personal-data-processing hidden">' . __( 'Erasing data...' ) . ' <span class="erasure-progress"></span></span>' .
    66 				'<span class="remove-personal-data-success hidden">' . __( 'Erasure completed.' ) . '</span>' .
    67 				'<span class="remove-personal-data-success hidden">' . __( 'Erasure completed.' ) . '</span>' .
    67 				'<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 				'<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 			$remove_data_markup .= '</div>';
    70 			$remove_data_markup .= '</span>';
    70 
    71 
    71 			$row_actions = array(
    72 			$row_actions['remove-data'] = $remove_data_markup;
    72 				'remove-data' => $remove_data_markup,
    73 		}
       
    74 
       
    75 		if ( 'request-completed' !== $status ) {
       
    76 			$complete_request_markup  = '<span>';
       
    77 			$complete_request_markup .= sprintf(
       
    78 				'<a href="%s" class="complete-request" aria-label="%s">%s</a>',
       
    79 				esc_url(
       
    80 					wp_nonce_url(
       
    81 						add_query_arg(
       
    82 							array(
       
    83 								'action'     => 'complete',
       
    84 								'request_id' => array( $request_id ),
       
    85 							),
       
    86 							admin_url( 'erase-personal-data.php' )
       
    87 						),
       
    88 						'bulk-privacy_requests'
       
    89 					)
       
    90 				),
       
    91 				esc_attr(
       
    92 					sprintf(
       
    93 						/* translators: %s: Request email. */
       
    94 						__( 'Mark export request for &#8220;%s&#8221; as completed.' ),
       
    95 						$item->email
       
    96 					)
       
    97 				),
       
    98 				__( 'Complete request' )
    73 			);
    99 			);
       
   100 			$complete_request_markup .= '</span>';
       
   101 		}
       
   102 
       
   103 		if ( ! empty( $complete_request_markup ) ) {
       
   104 			$row_actions['complete-request'] = $complete_request_markup;
    74 		}
   105 		}
    75 
   106 
    76 		return sprintf( '<a href="%1$s">%2$s</a> %3$s', esc_url( 'mailto:' . $item->email ), $item->email, $this->row_actions( $row_actions ) );
   107 		return sprintf( '<a href="%1$s">%2$s</a> %3$s', esc_url( 'mailto:' . $item->email ), $item->email, $this->row_actions( $row_actions ) );
    77 	}
   108 	}
    78 
   109 
   103 					'data-request-id="' . esc_attr( $request_id ) . '" ' .
   134 					'data-request-id="' . esc_attr( $request_id ) . '" ' .
   104 					'data-nonce="' . esc_attr( $nonce ) .
   135 					'data-nonce="' . esc_attr( $nonce ) .
   105 					'">';
   136 					'">';
   106 
   137 
   107 				?>
   138 				?>
   108 				<span class="remove-personal-data-idle"><button type="button" class="button-link remove-personal-data-handle"><?php _e( 'Erase Personal Data' ); ?></button></span>
   139 				<span class="remove-personal-data-idle"><button type="button" class="button-link remove-personal-data-handle"><?php _e( 'Erase personal data' ); ?></button></span>
   109 				<span class="remove-personal-data-processing hidden"><?php _e( 'Erasing Data...' ); ?> <span class="erasure-progress"></span></span>
   140 				<span class="remove-personal-data-processing hidden"><?php _e( 'Erasing data...' ); ?> <span class="erasure-progress"></span></span>
   110 				<span class="remove-personal-data-success success-message hidden" ><?php _e( 'Erasure completed.' ); ?></span>
   141 				<span class="remove-personal-data-success success-message hidden" ><?php _e( 'Erasure completed.' ); ?></span>
   111 				<span class="remove-personal-data-failed hidden"><?php _e( 'Data Erasure has failed.' ); ?> <button type="button" class="button-link remove-personal-data-handle"><?php _e( 'Retry' ); ?></button></span>
   142 				<span class="remove-personal-data-failed hidden"><?php _e( 'Data erasure has failed.' ); ?> <button type="button" class="button-link remove-personal-data-handle"><?php _e( 'Retry' ); ?></button></span>
   112 				<?php
   143 				<?php
   113 
   144 
   114 				echo '</div>';
   145 				echo '</div>';
   115 
   146 
   116 				break;
   147 				break;