@@ -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