Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 7 additions & 14 deletions src/class-tiny-bulk-optimization.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
13 changes: 13 additions & 0 deletions src/class-tiny-image.php
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Comment thread
tijmenbruggeman marked this conversation as resolved.

foreach ( $this->sizes as $size_name => $size ) {
// skip duplicates or inactive sizes
Expand Down Expand Up @@ -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().

Expand Down
2 changes: 1 addition & 1 deletion src/class-tiny-plugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,7 @@ public function compress_image_for_bulk() {
$result['message'] = $tiny_image->get_latest_error();
$result['image_sizes_compressed'] = $image_statistics['image_sizes_compressed'];
$result['image_sizes_converted'] = $image_statistics['image_sizes_converted'];
$result['image_sizes_optimized'] = $image_statistics['image_sizes_compressed'];
$result['image_sizes_optimized'] = $image_statistics['image_sizes_optimized'];

$result['initial_total_size'] = size_format(
$image_statistics['initial_total_size'],
Expand Down
2 changes: 2 additions & 0 deletions test/unit/TinyImageEmptyTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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 ) );
}
}
68 changes: 64 additions & 4 deletions test/unit/TinyImageTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -156,16 +156,76 @@ 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();
Comment thread
tijmenbruggeman marked this conversation as resolved.
$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_image_sizes_optimized_is_independent_of_image_sizes_compressed_when_conversion_is_pending() {
$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' ) );

$stats = $subject->get_statistics(
$settings->get_sizes(),
$settings->get_active_tinify_sizes()
);

$this->assertEquals( 3, $stats['image_sizes_compressed'],
'Three sizes have been compressed.'
);
$this->assertEquals( 0, $stats['image_sizes_optimized'],
'No sizes count as fully optimized because conversion has not been done but has been enabled.'
);
$this->assertNotEquals(
$stats['image_sizes_compressed'],
$stats['image_sizes_optimized'],
'the number of compressed images should not be equal to the number of optimized images.'
);
}

public function test_get_image_sizes_available_for_compression_when_file_modified() {
Expand Down
Loading