PluginProbe
Image Optimizer – Compress Images and Convert to WebP or AVIF / trunk
Image Optimizer – Compress Images and Convert to WebP or AVIF vtrunk
1.7.7 1.7.6 1.7.5 1.7.4 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.2.0 1.2.1 1.3.0 1.4.0 1.4.1 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 All 33 releases
← All changes | modules/optimization/components/upload-optimization.php +29 -11 1.5.0 → trunk View file →
@@ -6,21 +6,28 @@
6 6 Async_Operation,
7 7 Async_Operation_Hook,
8 8 Async_Operation_Queue,
9 9 };
10 +
10 11 use ImageOptimization\Classes\Image\{
11 12 Exceptions\Invalid_Image_Exception,
12 13 Image_Meta,
13 14 Image_Optimization_Error_Type,
14 - Image_Status
15 + Image_Status,
15 16 };
17 +
18 +use ImageOptimization\Modules\Optimization\Classes\{
19 + Exceptions\Image_File_Already_Exists_Error,
20 + Exceptions\Image_Validation_Error,
21 + Optimize_Image,
22 + Validate_Image,
23 +};
24 +
16 25 use ImageOptimization\Classes\Logger;
17 26 use ImageOptimization\Classes\Exceptions\Quota_Exceeded_Error;
18 -use ImageOptimization\Modules\Optimization\Classes\Exceptions\Image_File_Already_Exists_Error;
19 -use ImageOptimization\Modules\Optimization\Classes\Exceptions\Image_Validation_Error;
20 -use ImageOptimization\Modules\Optimization\Classes\Optimize_Image;
21 -use ImageOptimization\Modules\Optimization\Classes\Validate_Image;
27 +use ImageOptimization\Modules\Connect\Classes\Exceptions\Connection_Error;
22 28 use ImageOptimization\Modules\Settings\Classes\Settings;
29 +
23 30 use Throwable;
24 31 use ImageOptimization\Plugin;
25 32
26 33 if ( ! defined( 'ABSPATH' ) ) {
@@ -27,11 +34,15 @@
27 34 exit; // Exit if accessed directly.
28 35 }
29 36
30 37 class Upload_Optimization {
31 - public function handle_upload( int $attachment_id ) {
38 + public function handle_upload( array $metadata, int $attachment_id, string $context ) {
39 + if ( 'create' !== $context ) {
40 + return $metadata;
41 + }
42 +
32 43 if ( ! Settings::get( Settings::OPTIMIZE_ON_UPLOAD_OPTION_NAME ) ) {
33 - return;
44 + return $metadata;
34 45 }
35 46
36 47 // @var ImageOptimizer/Modules/ConnectManager/Module
37 48 $module = Plugin::instance()->modules_manager->get_modules( 'connect-manager' );
@@ -36,15 +47,15 @@
36 47 // @var ImageOptimizer/Modules/ConnectManager/Module
37 48 $module = Plugin::instance()->modules_manager->get_modules( 'connect-manager' );
38 49
39 50 if ( ! $module->connect_instance->is_connected() || ! $module->connect_instance->is_activated() ) {
40 - return;
51 + return $metadata;
41 52 }
42 53
43 54 try {
44 55 Validate_Image::is_valid( $attachment_id );
45 56 } catch ( Invalid_Image_Exception | Image_Validation_Error $iie ) {
46 - return;
57 + return $metadata;
47 58 }
48 59
49 60 $meta = new Image_Meta( $attachment_id );
50 61
@@ -62,8 +73,10 @@
62 73 $meta
63 74 ->set_status( Image_Status::OPTIMIZATION_FAILED )
64 75 ->save();
65 76 }
77 +
78 + return $metadata;
66 79 }
67 80
68 81 /** @async */
69 82 public function optimize_image_on_upload( int $image_id ) {
@@ -78,8 +91,13 @@
78 91 ( new Image_Meta( $image_id ) )
79 92 ->set_status( Image_Status::OPTIMIZATION_FAILED )
80 93 ->set_error_type( Image_Optimization_Error_Type::QUOTA_EXCEEDED )
81 94 ->save();
95 + } catch ( Connection_Error $ce ) {
96 + ( new Image_Meta( $image_id ) )
97 + ->set_status( Image_Status::OPTIMIZATION_FAILED )
98 + ->set_error_type( Image_Optimization_Error_Type::CONNECTION_ERROR )
99 + ->save();
82 100 } catch ( Image_File_Already_Exists_Error $fe ) {
83 101 ( new Image_Meta( $image_id ) )
84 102 ->set_status( Image_Status::OPTIMIZATION_FAILED )
85 103 ->set_error_type( Image_Optimization_Error_Type::FILE_ALREADY_EXISTS )
@@ -84,9 +102,9 @@
84 102 ->set_status( Image_Status::OPTIMIZATION_FAILED )
85 103 ->set_error_type( Image_Optimization_Error_Type::FILE_ALREADY_EXISTS )
86 104 ->save();
87 105 } catch ( Throwable $t ) {
88 - Logger::log( Logger::LEVEL_ERROR, 'Optimization error. Reason: ' . $t->getMessage() );
106 + Logger::error( 'Upload optimization error. Reason: ' . $t->getMessage() );
89 107
90 108 ( new Image_Meta( $image_id ) )
91 109 ->set_status( Image_Status::OPTIMIZATION_FAILED )
92 110 ->set_error_type( Image_Optimization_Error_Type::GENERIC )
@@ -94,8 +112,8 @@
94 112 }
95 113 }
96 114
97 115 public function __construct() {
98 - add_action( 'add_attachment', [ $this, 'handle_upload' ] );
116 + add_action( 'wp_generate_attachment_metadata', [ $this, 'handle_upload' ], 10, 3 );
99 117 add_action( Async_Operation_Hook::OPTIMIZE_ON_UPLOAD, [ $this, 'optimize_image_on_upload' ] );
100 118 }
101 119 }