Skip to content

Commit 93150c1

Browse files
committed
Apply feedback from code review
1 parent 305de2e commit 93150c1

2 files changed

Lines changed: 69 additions & 33 deletions

File tree

entity-command.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,17 @@
9595
)
9696
);
9797
WP_CLI::add_command( 'user meta', 'User_Meta_Command' );
98-
WP_CLI::add_command( 'user privacy-request', 'User_Privacy_Request_Command' );
98+
WP_CLI::add_command(
99+
'user privacy-request',
100+
'User_Privacy_Request_Command',
101+
array(
102+
'before_invoke' => function () {
103+
if ( Utils\wp_version_compare( '4.9.6', '<' ) ) {
104+
WP_CLI::error( 'Requires WordPress 4.9.6 or greater.' );
105+
}
106+
},
107+
)
108+
);
99109
WP_CLI::add_command( 'user session', 'User_Session_Command' );
100110
WP_CLI::add_command( 'user term', 'User_Term_Command' );
101111

src/User_Privacy_Request_Command.php

Lines changed: 58 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,10 @@ public function list_( $args, $assoc_args ) {
168168
$formatter = new Formatter( $assoc_args, self::REQUEST_FIELDS );
169169

170170
if ( 'ids' === $format ) {
171-
WP_CLI::line( implode( ' ', wp_list_pluck( $requests, 'ID' ) ) );
171+
$ids = wp_list_pluck( $requests, 'ID' );
172+
if ( ! empty( $ids ) ) {
173+
WP_CLI::line( implode( ' ', $ids ) );
174+
}
172175
} else {
173176
$formatter->display_items( $requests );
174177
}
@@ -245,7 +248,10 @@ public function create( $args, $assoc_args ) {
245248
}
246249

247250
if ( Utils\get_flag_value( $assoc_args, 'send-email', false ) ) {
248-
wp_send_user_request( $request_id );
251+
$send_result = wp_send_user_request( $request_id );
252+
if ( is_wp_error( $send_result ) ) {
253+
WP_CLI::error( $send_result );
254+
}
249255
}
250256

251257
if ( Utils\get_flag_value( $assoc_args, 'porcelain', false ) ) {
@@ -297,8 +303,8 @@ public function delete( $args, $assoc_args ) { // phpcs:ignore Generic.CodeAnaly
297303

298304
$result = wp_delete_post( $request_id, true );
299305

300-
if ( is_wp_error( $result ) ) {
301-
WP_CLI::warning( "Failed deleting privacy request {$request_id}: " . $result->get_error_message() );
306+
if ( ! $result ) {
307+
WP_CLI::warning( "Failed deleting privacy request {$request_id}." );
302308
++$errors;
303309
} else {
304310
WP_CLI::log( "Privacy request {$request_id} deleted." );
@@ -355,26 +361,43 @@ public function erase( $args, $assoc_args ) { // phpcs:ignore Generic.CodeAnalys
355361
$response = call_user_func( $eraser['callback'], $email_address, $page );
356362

357363
if ( ! is_array( $response ) ) {
358-
WP_CLI::warning( "Eraser '{$eraser_key}' returned an invalid response." );
359-
break;
364+
WP_CLI::error( "Eraser '{$eraser_key}' did not return an array." );
365+
}
366+
367+
if ( ! array_key_exists( 'items_removed', $response ) ) {
368+
WP_CLI::error( "Expected items_removed key in response array from '{$eraser_key}' eraser." );
369+
}
370+
371+
if ( ! array_key_exists( 'items_retained', $response ) ) {
372+
WP_CLI::error( "Expected items_retained key in response array from '{$eraser_key}' eraser." );
373+
}
374+
375+
if ( ! array_key_exists( 'messages', $response ) ) {
376+
WP_CLI::error( "Expected messages key in response array from '{$eraser_key}' eraser." );
377+
}
378+
379+
if ( ! is_array( $response['messages'] ) ) {
380+
WP_CLI::error( "Expected messages key to reference an array in response array from '{$eraser_key}' eraser." );
381+
}
382+
383+
if ( ! array_key_exists( 'done', $response ) ) {
384+
WP_CLI::error( "Expected done flag in response array from '{$eraser_key}' eraser." );
360385
}
361386

362387
if ( ! empty( $response['messages'] ) ) {
363-
$messages = array_merge( $messages, (array) $response['messages'] );
388+
$messages = array_merge( $messages, $response['messages'] );
364389
}
365390

366-
$done = ! empty( $response['done'] );
391+
$done = (bool) $response['done'];
367392
++$page;
368393
} while ( ! $done );
369394
}
370395

371-
wp_update_post(
372-
[
373-
'ID' => $request_id,
374-
'post_status' => 'request-completed',
375-
]
376-
);
377-
update_post_meta( $request_id, '_wp_user_request_completed_timestamp', time() );
396+
$result = _wp_privacy_completed_request( $request_id );
397+
398+
if ( is_wp_error( $result ) ) {
399+
WP_CLI::error( "Failed completing privacy request {$request_id}: " . $result->get_error_message() );
400+
}
378401

379402
foreach ( $messages as $message ) {
380403
if ( is_scalar( $message ) ) {
@@ -431,8 +454,19 @@ public function export( $args, $assoc_args ) { // phpcs:ignore Generic.CodeAnaly
431454
$response = call_user_func( $exporter['callback'], $email_address, $page );
432455

433456
if ( ! is_array( $response ) ) {
434-
WP_CLI::warning( "Exporter '{$exporter_key}' returned an invalid response." );
435-
break;
457+
WP_CLI::error( "Exporter '{$exporter_key}' did not return an array." );
458+
}
459+
460+
if ( ! array_key_exists( 'data', $response ) ) {
461+
WP_CLI::error( "Expected data in response array from exporter '{$exporter_key}'." );
462+
}
463+
464+
if ( ! is_array( $response['data'] ) ) {
465+
WP_CLI::error( "Expected data array in response array from exporter '{$exporter_key}'." );
466+
}
467+
468+
if ( ! array_key_exists( 'done', $response ) ) {
469+
WP_CLI::error( "Expected done (boolean) in response array from exporter '{$exporter_key}'." );
436470
}
437471

438472
if ( ! empty( $response['data'] ) && is_array( $response['data'] ) ) {
@@ -465,7 +499,7 @@ public function export( $args, $assoc_args ) { // phpcs:ignore Generic.CodeAnaly
465499
}
466500
}
467501

468-
$done = ! empty( $response['done'] );
502+
$done = (bool) $response['done'];
469503
++$page;
470504
} while ( ! $done );
471505
}
@@ -498,13 +532,11 @@ public function export( $args, $assoc_args ) { // phpcs:ignore Generic.CodeAnaly
498532
WP_CLI::error( 'Failed to generate the personal data export file.' );
499533
}
500534

501-
wp_update_post(
502-
[
503-
'ID' => $request_id,
504-
'post_status' => 'request-completed',
505-
]
506-
);
507-
update_post_meta( $request_id, '_wp_user_request_completed_timestamp', time() );
535+
$result = _wp_privacy_completed_request( $request_id );
536+
537+
if ( is_wp_error( $result ) ) {
538+
WP_CLI::error( "Failed completing privacy request {$request_id}: " . $result->get_error_message() );
539+
}
508540

509541
WP_CLI::success( 'Exported personal data to: ' . $file_path );
510542
}
@@ -547,13 +579,7 @@ public function complete( $args, $assoc_args ) { // phpcs:ignore Generic.CodeAna
547579
continue;
548580
}
549581

550-
$result = wp_update_post(
551-
[
552-
'ID' => $request_id,
553-
'post_status' => 'request-completed',
554-
],
555-
true
556-
);
582+
$result = _wp_privacy_completed_request( $request_id );
557583

558584
if ( is_wp_error( $result ) ) {
559585
WP_CLI::warning( "Failed completing privacy request {$request_id}: " . $result->get_error_message() );

0 commit comments

Comments
 (0)