From 1a9150536d47b7c525880025f113da176c1c142e Mon Sep 17 00:00:00 2001 From: Alain Schlesser Date: Fri, 2 Sep 2022 11:28:00 -0500 Subject: [PATCH 1/2] Fix read error detection in EXIF discovery --- features/media-regenerate.feature | 1 + src/Media_Command.php | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/features/media-regenerate.feature b/features/media-regenerate.feature index 944f0c07..51d4bd3b 100644 --- a/features/media-regenerate.feature +++ b/features/media-regenerate.feature @@ -1561,6 +1561,7 @@ Feature: Regenerate WordPress attachments # Make canola.jpg fail. Given a wp-content/uploads/canola.jpg file: """ + We need to have some bytes at least to avoid a PHP notice in exif_imagetype(). """ When I try `WP_CLI_TEST_MEDIA_REGENERATE_PDF=1 wp media regenerate --yes` diff --git a/src/Media_Command.php b/src/Media_Command.php index 45c303d1..231548a4 100644 --- a/src/Media_Command.php +++ b/src/Media_Command.php @@ -597,6 +597,14 @@ private function process_regeneration( $id, $skip_delete, $only_missing, $image_ return; } + // On read error, we might only get the filesize returned and nothing else. + if ( 1 === count( $metadata ) && array_key_exists( 'filesize', $metadata ) ) { + WP_CLI::warning( sprintf( 'Read error while retrieving metadata. (ID %d)', $id ) ); + WP_CLI::log( "$progress Couldn't regenerate thumbnails for $att_desc." ); + $errors++; + return; + } + // Note it's possible for no metadata to be generated for PDFs if restricted to a specific image size. if ( empty( $metadata ) && ! ( $is_pdf && $image_size ) ) { WP_CLI::warning( sprintf( 'No metadata. (ID %d)', $id ) ); From 56f2c038ade49d70dc0e475b246357fcf043e0d3 Mon Sep 17 00:00:00 2001 From: Alain Schlesser Date: Fri, 2 Sep 2022 12:08:49 -0500 Subject: [PATCH 2/2] Adapt logic to not break PDFs --- src/Media_Command.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Media_Command.php b/src/Media_Command.php index 231548a4..38a0f211 100644 --- a/src/Media_Command.php +++ b/src/Media_Command.php @@ -597,17 +597,17 @@ private function process_regeneration( $id, $skip_delete, $only_missing, $image_ return; } - // On read error, we might only get the filesize returned and nothing else. - if ( 1 === count( $metadata ) && array_key_exists( 'filesize', $metadata ) ) { - WP_CLI::warning( sprintf( 'Read error while retrieving metadata. (ID %d)', $id ) ); + // Note it's possible for no metadata to be generated for PDFs if restricted to a specific image size. + if ( empty( $metadata ) && ! ( $is_pdf && $image_size ) ) { + WP_CLI::warning( sprintf( 'No metadata. (ID %d)', $id ) ); WP_CLI::log( "$progress Couldn't regenerate thumbnails for $att_desc." ); $errors++; return; } - // Note it's possible for no metadata to be generated for PDFs if restricted to a specific image size. - if ( empty( $metadata ) && ! ( $is_pdf && $image_size ) ) { - WP_CLI::warning( sprintf( 'No metadata. (ID %d)', $id ) ); + // On read error, we might only get the filesize returned and nothing else. + if ( 1 === count( $metadata ) && array_key_exists( 'filesize', $metadata ) && ! ( $is_pdf && $image_size ) ) { + WP_CLI::warning( sprintf( 'Read error while retrieving metadata. (ID %d)', $id ) ); WP_CLI::log( "$progress Couldn't regenerate thumbnails for $att_desc." ); $errors++; return;