From ddcb81606ba86ddce421e5e3e8e27a7fdcd4acbd Mon Sep 17 00:00:00 2001 From: Daniel Bachhuber Date: Mon, 11 Apr 2016 04:54:46 -0700 Subject: [PATCH 1/2] Failing test case for #2608 --- features/media-regenerate.feature | 48 +++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/features/media-regenerate.feature b/features/media-regenerate.feature index fb4f99be60..0981e41c87 100644 --- a/features/media-regenerate.feature +++ b/features/media-regenerate.feature @@ -144,3 +144,51 @@ Feature: Regenerate WordPress attachments """ Success: Finished regenerating all images. """ + + Scenario: Regenerate images which are missing globally-defined image sizes + Given download: + | path | url | + | {CACHE_DIR}/large-image.jpg | http://wp-cli.org/behat-data/large-image.jpg | + And I run `wp option update uploads_use_yearmonth_folders 0` + + When I run `wp media import {CACHE_DIR}/large-image.jpg --title="My imported attachment" --porcelain` + Then save STDOUT as {ATTACHMENT_ID} + And the wp-content/uploads/large-image-100x100.jpg file should not exist + + Given a wp-content/mu-plugins/media-settings.php file: + """ + Date: Mon, 11 Apr 2016 04:56:55 -0700 Subject: [PATCH 2/2] Consider image sizes missing when `sizes` doesn't have registered sizes Also considers image needing regeneration if `sizes` is empty (which means its missing all sizes). --- php/commands/media.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/php/commands/media.php b/php/commands/media.php index fd77715e4c..df37e75215 100644 --- a/php/commands/media.php +++ b/php/commands/media.php @@ -315,7 +315,11 @@ private function needs_regeneration( $att_id ) { $original_path = $dir_path . basename( $metadata['file'] ); if ( empty( $metadata['sizes'] ) ) { - return false; + return true; + } + + if ( array_diff( get_intermediate_image_sizes(), array_keys( $metadata['sizes'] ) ) ) { + return true; } foreach( $metadata['sizes'] as $size_info ) {