diff --git a/src/class-tiny-bulk-optimization.php b/src/class-tiny-bulk-optimization.php index 904adc5b..611fbf44 100644 --- a/src/class-tiny-bulk-optimization.php +++ b/src/class-tiny-bulk-optimization.php @@ -125,22 +125,15 @@ private static function populate_optimization_statistics( $settings, $result, $s $image_stats = $tiny_image->get_statistics( $active_sizes, $active_tinify_sizes ); ++$stats['uploaded-images']; - $stats['estimated_credit_use'] += $image_stats['available_uncompressed_sizes']; + $stats['estimated_credit_use'] += $image_stats['available_uncompressed_sizes']; + $stats['available-unoptimized-sizes'] += $image_stats['available_unoptimized_sizes']; + $stats['optimized-image-sizes'] += $image_stats['image_sizes_optimized']; + $stats['optimized-library-size'] += $image_stats['compressed_total_size']; + $stats['unoptimized-library-size'] += $image_stats['initial_total_size']; + if ( $conversion_enabled ) { - $stats['available-unoptimized-sizes'] += - $image_stats['available_unconverted_sizes']; - $stats['optimized-image-sizes'] += - $image_stats['image_sizes_converted']; - $stats['estimated_credit_use'] += - $image_stats['available_unconverted_sizes']; - } else { - $stats['available-unoptimized-sizes'] += - $image_stats['available_uncompressed_sizes']; - $stats['optimized-image-sizes'] += - $image_stats['image_sizes_compressed']; + $stats['estimated_credit_use'] += $image_stats['available_unconverted_sizes']; } - $stats['optimized-library-size'] += $image_stats['compressed_total_size']; - $stats['unoptimized-library-size'] += $image_stats['initial_total_size']; $has_conversions = $image_stats['available_unconverted_sizes'] > 0; $has_compressions = $image_stats['available_uncompressed_sizes'] > 0; diff --git a/src/class-tiny-image.php b/src/class-tiny-image.php index 8c7ceaf1..89c07cbf 100644 --- a/src/class-tiny-image.php +++ b/src/class-tiny-image.php @@ -483,6 +483,10 @@ public function get_statistics( $active_sizes, $active_tinify_sizes ) { $this->statistics['available_uncompressed_sizes'] = 0; $this->statistics['image_sizes_converted'] = 0; $this->statistics['available_unconverted_sizes'] = 0; + $this->statistics['image_sizes_optimized'] = 0; + $this->statistics['available_unoptimized_sizes'] = 0; + + $conversion_enabled = $this->settings->get_conversion_enabled(); foreach ( $this->sizes as $size_name => $size ) { // skip duplicates or inactive sizes @@ -526,6 +530,15 @@ public function get_statistics( $active_sizes, $active_tinify_sizes ) { } else { ++$this->statistics['available_unconverted_sizes']; } + + $needs_compression = $size->uncompressed(); + $needs_conversion = $conversion_enabled && $size->unconverted(); + if ( $needs_compression || $needs_conversion ) { + ++$this->statistics['available_unoptimized_sizes']; + } elseif ( $size->compressed() && ( ! $conversion_enabled + || $size->has_been_converted() ) ) { + ++$this->statistics['image_sizes_optimized']; + } } }// End foreach(). diff --git a/test/unit/TinyImageEmptyTest.php b/test/unit/TinyImageEmptyTest.php index efcb205b..a15936cc 100644 --- a/test/unit/TinyImageEmptyTest.php +++ b/test/unit/TinyImageEmptyTest.php @@ -39,6 +39,8 @@ public function test_get_statistics() { 'available_uncompressed_sizes' => 4, 'available_unconverted_sizes' => 4, 'image_sizes_converted' => 0, + 'image_sizes_optimized' => 0, + 'available_unoptimized_sizes' => 4 ), $this->subject->get_statistics( $active_sizes, $active_tinify_sizes ) ); } } diff --git a/test/unit/TinyImageTest.php b/test/unit/TinyImageTest.php index f70f3b4a..7e0d007d 100644 --- a/test/unit/TinyImageTest.php +++ b/test/unit/TinyImageTest.php @@ -156,16 +156,50 @@ public function test_get_latest_error_should_return_trimmed_message_if_message_i } public function test_get_statistics() { - $active_sizes = $this->settings->get_sizes(); - $active_tinify_sizes = $this->settings->get_active_tinify_sizes(); + $this->wp->addOption( 'tinypng_convert_format', array( + 'convert' => 'off', + ) ); + $settings = new Tiny_Settings(); + $subject = new Tiny_Image( $settings, 1, $this->json( '_wp_attachment_metadata' ) ); + + $active_sizes = $settings->get_sizes(); + $active_tinify_sizes = $settings->get_active_tinify_sizes(); + $stats = $subject->get_statistics( $active_sizes, $active_tinify_sizes ); + + $this->assertEquals( array( + 'initial_total_size' => 360542, + 'compressed_total_size' => 328670, + 'image_sizes_compressed' => 3, + 'available_uncompressed_sizes' => 1, + 'image_sizes_converted' => 0, + 'available_unconverted_sizes' => 4, + 'image_sizes_optimized' => 3, + 'available_unoptimized_sizes' => 1, + ), $stats); + } + + public function test_get_statistics_with_conversion_enabled() { + $this->wp->addOption( 'tinypng_convert_format', array( + 'convert' => 'on', + 'convert_to' => 'smallest', + ) ); + $settings = new Tiny_Settings(); + $subject = new Tiny_Image( $settings, 1, $this->json( '_wp_attachment_metadata' ) ); + + $active_sizes = $settings->get_sizes(); + $active_tinify_sizes = $settings->get_active_tinify_sizes(); + $stats = $subject->get_statistics( $active_sizes, $active_tinify_sizes ); + $this->assertEquals( array( 'initial_total_size' => 360542, 'compressed_total_size' => 328670, 'image_sizes_compressed' => 3, 'available_uncompressed_sizes' => 1, 'image_sizes_converted' => 0, - 'available_unconverted_sizes' => 4 - ), $this->subject->get_statistics( $active_sizes, $active_tinify_sizes ) ); + 'available_unconverted_sizes' => 4, + 'image_sizes_optimized' => 0, + 'available_unoptimized_sizes' => 4, + ), $stats); } public function test_get_image_sizes_available_for_compression_when_file_modified() {