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 “%s” 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; |