From dee47fcd89a8b0459e88dc0b5d88ba7dfd32b2cc Mon Sep 17 00:00:00 2001 From: tijmen Date: Wed, 3 Jun 2026 10:54:00 +0200 Subject: [PATCH 1/5] add union of compress/convert in statistics --- src/class-tiny-bulk-optimization.php | 15 ++------------- src/class-tiny-image.php | 12 ++++++++++++ test/unit/TinyImageTest.php | 4 +++- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/class-tiny-bulk-optimization.php b/src/class-tiny-bulk-optimization.php index 904adc5b..0a271504 100644 --- a/src/class-tiny-bulk-optimization.php +++ b/src/class-tiny-bulk-optimization.php @@ -126,19 +126,8 @@ private static function populate_optimization_statistics( $settings, $result, $s ++$stats['uploaded-images']; $stats['estimated_credit_use'] += $image_stats['available_uncompressed_sizes']; - 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['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']; diff --git a/src/class-tiny-image.php b/src/class-tiny-image.php index 8c7ceaf1..70493549 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,14 @@ 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/TinyImageTest.php b/test/unit/TinyImageTest.php index f70f3b4a..41d570d5 100644 --- a/test/unit/TinyImageTest.php +++ b/test/unit/TinyImageTest.php @@ -164,7 +164,9 @@ public function test_get_statistics() { 'image_sizes_compressed' => 3, 'available_uncompressed_sizes' => 1, 'image_sizes_converted' => 0, - 'available_unconverted_sizes' => 4 + 'available_unconverted_sizes' => 4, + 'image_sizes_optimized' => 3, + 'available_unoptimized_sizes' => 1, ), $this->subject->get_statistics( $active_sizes, $active_tinify_sizes ) ); } From 01dea52819a81269e43a5e94022d99949e713709 Mon Sep 17 00:00:00 2001 From: tijmen Date: Wed, 3 Jun 2026 11:08:47 +0200 Subject: [PATCH 2/5] conversions still count extra credits --- src/class-tiny-bulk-optimization.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/class-tiny-bulk-optimization.php b/src/class-tiny-bulk-optimization.php index 0a271504..e77346fd 100644 --- a/src/class-tiny-bulk-optimization.php +++ b/src/class-tiny-bulk-optimization.php @@ -131,6 +131,10 @@ private static function populate_optimization_statistics( $settings, $result, $s $stats['optimized-library-size'] += $image_stats['compressed_total_size']; $stats['unoptimized-library-size'] += $image_stats['initial_total_size']; + if ($conversion_enabled) { + $stats['estimated_credit_use'] += $image_stats['available_unconverted_sizes']; + } + $has_conversions = $image_stats['available_unconverted_sizes'] > 0; $has_compressions = $image_stats['available_uncompressed_sizes'] > 0; $has_optimizations = $has_compressions || ( From b6882dc71e0ac41c8ba6510578cfb7479c04a929 Mon Sep 17 00:00:00 2001 From: tijmen Date: Wed, 3 Jun 2026 11:38:07 +0200 Subject: [PATCH 3/5] add/change tests --- test/unit/TinyImageEmptyTest.php | 2 ++ test/unit/TinyImageTest.php | 42 ++++++++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 5 deletions(-) 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 41d570d5..7e0d007d 100644 --- a/test/unit/TinyImageTest.php +++ b/test/unit/TinyImageTest.php @@ -156,8 +156,40 @@ 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, @@ -165,9 +197,9 @@ public function test_get_statistics() { 'available_uncompressed_sizes' => 1, 'image_sizes_converted' => 0, 'available_unconverted_sizes' => 4, - 'image_sizes_optimized' => 3, - 'available_unoptimized_sizes' => 1, - ), $this->subject->get_statistics( $active_sizes, $active_tinify_sizes ) ); + 'image_sizes_optimized' => 0, + 'available_unoptimized_sizes' => 4, + ), $stats); } public function test_get_image_sizes_available_for_compression_when_file_modified() { From b5c891a307347545a39f47c8be654e0779d69292 Mon Sep 17 00:00:00 2001 From: tijmen Date: Wed, 3 Jun 2026 11:38:14 +0200 Subject: [PATCH 4/5] format --- src/class-tiny-bulk-optimization.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/class-tiny-bulk-optimization.php b/src/class-tiny-bulk-optimization.php index e77346fd..611fbf44 100644 --- a/src/class-tiny-bulk-optimization.php +++ b/src/class-tiny-bulk-optimization.php @@ -125,13 +125,13 @@ 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']; + $stats['optimized-library-size'] += $image_stats['compressed_total_size']; + $stats['unoptimized-library-size'] += $image_stats['initial_total_size']; - if ($conversion_enabled) { + if ( $conversion_enabled ) { $stats['estimated_credit_use'] += $image_stats['available_unconverted_sizes']; } From 29a74c4f041c8f991d5a3fc8d55c5565c04e345b Mon Sep 17 00:00:00 2001 From: tijmen Date: Wed, 3 Jun 2026 11:54:27 +0200 Subject: [PATCH 5/5] format --- src/class-tiny-image.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/class-tiny-image.php b/src/class-tiny-image.php index 70493549..89c07cbf 100644 --- a/src/class-tiny-image.php +++ b/src/class-tiny-image.php @@ -535,7 +535,8 @@ public function get_statistics( $active_sizes, $active_tinify_sizes ) { $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() ) ) { + } elseif ( $size->compressed() && ( ! $conversion_enabled + || $size->has_been_converted() ) ) { ++$this->statistics['image_sizes_optimized']; } }