PluginProbe
QuickWebP – WebP & AVIF Image Optimizer, Compression & SEO for WordPress / 4.1.2
QuickWebP – WebP & AVIF Image Optimizer, Compression & SEO for WordPress v4.1.2
4.1.2 4.1.1 4.1.0 4.0.1 4.0.0 3.3.1 3.3.0 trunk 1.0.0 2.0.0 2.1.0 3.0.0 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8
← All changes | admin/class-wp-media-extends.php +143 -85 3.2.64.1.2 View file →
@@ -38,39 +38,44 @@
38 38 public function __construct( $plugin_name, $version ) {
39 39
40 40 $this->plugin_name = $plugin_name;
41 41 $this->version = $version;
42 -
43 42 }
44 43
45 - public function enqueue_scripts(){
46 - global $pagenow;
47 -
48 - if ( get_option('quickwebp_settings_paste_image', quickwebp_settings_default('quickwebp_settings_paste_image')) == '1' ){
44 + /**
45 + * Enqueue scripts and styles for the media uploader
46 + */
47 + public function enqueue_scripts( $hook_suffix ){
48 + global $post_type;
49 49
50 - $wp_media_extends_assets = include( QUICKWEBP_PLUGIN_PATH . 'public/assets/build/wp-media-extends.asset.php' );
51 - wp_enqueue_style( 'quickwebp-wp-media-extends', QUICKWEBP_PLUGIN_URL . 'public/assets/build/wp-media-extends.css', array(), $wp_media_extends_assets['version'], 'all' );
52 - wp_enqueue_script( 'quickwebp-wp-media-extends', QUICKWEBP_PLUGIN_URL . 'public/assets/build/wp-media-extends.js', $wp_media_extends_assets['dependencies'], $wp_media_extends_assets['version'], true );
53 - wp_localize_script( 'quickwebp-wp-media-extends', 'quickwebp_wp_media_extends', array(
54 - 'is_upload_page' => $pagenow ? $pagenow === 'upload.php' : false,
55 - 'nonce' => wp_create_nonce( 'media-form' ),
56 - 'tmpl_tab_media_paste' => file_get_contents( QUICKWEBP_PLUGIN_PATH . 'admin/templates/tab-media-paste.php' ),
57 - 'tmpl_button_media_paste' => file_get_contents( QUICKWEBP_PLUGIN_PATH . 'admin/templates/button-media-paste.php' ),
58 - 'l10n' => array(
59 - 'prompt_text' => __( 'Please enter the name of your image', QUICKWEBP_TEXT_DOMAIN ),
60 - 'button_text' => __( 'Quickwebp paste image', QUICKWEBP_TEXT_DOMAIN ),
61 - 'click_paste' => __( 'Click here, and paste your image.', QUICKWEBP_TEXT_DOMAIN )
62 - )
50 + if ( 'upload.php' === $hook_suffix || ( ! empty( $post_type ) && 'post.php' === $hook_suffix && 'attachment' === $post_type ) ) {
51 +
52 + if ( get_option('quickwebp_settings_paste_image', quickwebp_settings_default('quickwebp_settings_paste_image')) == '1' ){
53 +
54 + $wp_media_extends_assets = include( QUICKWEBP_PLUGIN_PATH . 'public/assets/build/wp-media-extends.asset.php' );
55 + wp_enqueue_style( 'quickwebp-wp-media-extends', QUICKWEBP_PLUGIN_URL . 'public/assets/build/wp-media-extends.css', array(), $wp_media_extends_assets['version'], 'all' );
56 + wp_enqueue_script( 'quickwebp-wp-media-extends', QUICKWEBP_PLUGIN_URL . 'public/assets/build/wp-media-extends.js', $wp_media_extends_assets['dependencies'], $wp_media_extends_assets['version'], true );
57 + wp_localize_script( 'quickwebp-wp-media-extends', 'quickwebp_wp_media_extends', array(
58 + 'is_upload_page' => $hook_suffix === 'upload.php',
59 + 'nonce' => wp_create_nonce( 'media-form' ),
60 + 'tmpl_tab_media_paste' => file_get_contents( QUICKWEBP_PLUGIN_PATH . 'admin/templates/tab-media-paste.php' ),
61 + 'tmpl_button_media_paste' => file_get_contents( QUICKWEBP_PLUGIN_PATH . 'admin/templates/button-media-paste.php' ),
62 + 'l10n' => array(
63 + 'prompt_text' => __( 'Please enter the name of your image', 'quickwebp' ),
64 + 'button_text' => __( 'Quickwebp paste image', 'quickwebp' ),
65 + 'click_paste' => __( 'Click here, and paste your image.', 'quickwebp' )
66 + )
67 + ));
68 + }
69 +
70 + $admin_attachment_assets = include( QUICKWEBP_PLUGIN_PATH . 'public/assets/build/admin-attachment.asset.php' );
71 + wp_enqueue_style( 'quickwebp-admin-attachment', QUICKWEBP_PLUGIN_URL . 'public/assets/build/admin-attachment.css', array(), $admin_attachment_assets['version'], 'all' );
72 + wp_enqueue_script( 'quickwebp-admin-attachment', QUICKWEBP_PLUGIN_URL . 'public/assets/build/admin-attachment.js', $admin_attachment_assets['dependencies'], $admin_attachment_assets['version'], true );
73 + wp_localize_script( 'quickwebp-admin-attachment', 'QUICKWEBP_ADMIN_ATTACHMENT', array(
74 + 'nonce' => wp_create_nonce( 'quickwebp_admin_attachment' ),
75 + 'ajaxUrl' => admin_url( 'admin-ajax.php' )
63 76 ));
64 77 }
65 -
66 - $admin_attachment_assets = include( QUICKWEBP_PLUGIN_PATH . 'public/assets/build/admin-attachment.asset.php' );
67 - wp_enqueue_style( 'quickwebp-admin-attachment', QUICKWEBP_PLUGIN_URL . 'public/assets/build/admin-attachment.css', array(), $admin_attachment_assets['version'], 'all' );
68 - wp_enqueue_script( 'quickwebp-admin-attachment', QUICKWEBP_PLUGIN_URL . 'public/assets/build/admin-attachment.js', $admin_attachment_assets['dependencies'], $admin_attachment_assets['version'], true );
69 - wp_localize_script( 'quickwebp-admin-attachment', 'QUICKWEBP_ADMIN_ATTACHMENT', array(
70 - 'nonce' => wp_create_nonce( 'quickwebp_admin_attachment' ),
71 - 'ajaxUrl' => admin_url( 'admin-ajax.php' )
72 - ));
73 78 }
74 79
75 80 /**
76 81 * Add "Quickwebp" column in the Media Uploader
@@ -85,25 +90,47 @@
85 90 if ( ! $this->valid_mimetype( $post->ID ) ) {
86 91 return $form_fields;
87 92 }
88 93
89 - $data = get_post_meta( $post->ID, 'quickwebp_data', true );
90 - $has_error = get_post_meta( $post->ID, 'quickwebp_has_error', true );
94 + $image_optimizer = new Quickwebp_Image_Optimizer( $this->plugin_name, $this->version );
95 + $settings = $image_optimizer->get_settings();
91 96
92 - if ( ! is_array( $data ) ) {
97 + $html = '';
98 + $status = '0';
99 + $already_optimized = get_post_meta( $post->ID, 'quickwebp_already_optimized', true );
100 + $data = get_post_meta( $post->ID, 'quickwebp_data', true );
93 101
94 - $html = $this->optimize_btn( $post->ID );
102 + $mode_enabled = $settings['quickwebp_settings_conversion'];
95 103
96 - if ( ! empty( $has_error ) ) {
97 - $html .= '<br>' . esc_html__( 'Error attempting to optimize this image', QUICKWEBP_TEXT_DOMAIN );
104 + if ( '1' == $already_optimized && ( '1' == $mode_enabled || '0' == $mode_enabled ) ) {
105 + if ( is_array( $data ) ) {
106 + $status = '1';
107 + } else {
108 + $status = '2';
98 109 }
110 + }
99 111
100 - } else {
112 + if ( '2' == $already_optimized && ( '2' == $mode_enabled || '0' == $mode_enabled ) ) {
113 + if ( is_array( $data ) ) {
114 + $status = '1';
115 + } else {
116 + $status = '2';
117 + }
118 + }
101 119
102 - $html = $this->attachment_data( $data, $post->ID );
120 + switch ( $status ) {
121 + case '0':
122 + $html = $this->optimize_btn( $post->ID );
123 + break;
124 + case '1':
125 + $html = $this->attachment_data( $data, $post->ID );
126 + break;
127 + case '2':
128 + $html = '<br>' . esc_html__( 'Image already optimized.', 'quickwebp' );
129 + break;
103 130 }
104 131
105 - $form_fields['quickwebp'] = array(
132 + $form_fields['wpmtk_media_encoder'] = array(
106 133 'label' => 'Quickwebp',
107 134 'input' => 'html',
108 135 'html' => $html,
109 136 'show_in_edit' => true,
@@ -116,11 +143,9 @@
116 143 /**
117 144 * Add "quickwebp" column in upload.php
118 145 */
119 146 public function add_media_columns( $columns ) {
120 -
121 - $columns['quickwebp'] = __( 'Quickwebp', QUICKWEBP_TEXT_DOMAIN );
122 -
147 + $columns['quickwebp'] = 'QuickWebP';
123 148 return $columns;
124 149 }
125 150
126 151 /**
@@ -132,26 +157,48 @@
132 157 return;
133 158 }
134 159
135 160 if ( ! $this->valid_mimetype( $attachment_id ) ) {
136 - echo __( 'Image type not supported', QUICKWEBP_TEXT_DOMAIN );
161 + echo esc_html__( 'Image type not supported', 'quickwebp' );
137 162 return;
138 163 }
139 164
140 - $data = get_post_meta( $attachment_id, 'quickwebp_data', true );
141 - $has_error = get_post_meta( $attachment_id, 'quickwebp_has_error', true );
165 + $image_optimizer = new Quickwebp_Image_Optimizer( $this->plugin_name, $this->version );
166 + $settings = $image_optimizer->get_settings();
142 167
143 - if ( ! is_array( $data ) ) {
168 + $html = '';
169 + $status = '0';
170 + $already_optimized = get_post_meta( $attachment_id, 'quickwebp_already_optimized', true );
171 + $data = get_post_meta( $attachment_id, 'quickwebp_data', true );
144 172
145 - echo $this->optimize_btn( $attachment_id );
173 + $mode_enabled = $settings['quickwebp_settings_conversion'];
146 174
147 - if ( ! empty( $has_error ) ) {
148 - echo esc_html__( 'Error attempting to optimize this image', QUICKWEBP_TEXT_DOMAIN );
175 + if ( '1' == $already_optimized && ( '1' == $mode_enabled || '0' == $mode_enabled ) ) {
176 + if ( is_array( $data ) ) {
177 + $status = '1';
178 + } else {
179 + $status = '2';
149 180 }
181 + }
150 182
151 - } else {
183 + if ( '2' == $already_optimized && ( '2' == $mode_enabled || '0' == $mode_enabled ) ) {
184 + if ( is_array( $data ) ) {
185 + $status = '1';
186 + } else {
187 + $status = '2';
188 + }
189 + }
152 190
153 - echo $this->attachment_data( $data, $attachment_id );
191 + switch ( $status ) {
192 + case '0':
193 + echo wp_kses_post( $this->optimize_btn( $attachment_id ) );
194 + break;
195 + case '1':
196 + echo wp_kses_post( $this->attachment_data( $data, $attachment_id ) );
197 + break;
198 + case '2':
199 + echo wp_kses_post( '<br>' . esc_html__( 'Image already optimized.', 'quickwebp' ) );
200 + break;
154 201 }
155 202 }
156 203
157 204 /**
@@ -163,27 +210,47 @@
163 210 if ( ! $this->valid_mimetype( $post->ID ) ) {
164 211 return;
165 212 }
166 213
167 - $data = get_post_meta( $post->ID, 'quickwebp_data', true );
168 - $has_error = get_post_meta( $post->ID, 'quickwebp_has_error', true );
214 + $image_optimizer = new Quickwebp_Image_Optimizer( $this->plugin_name, $this->version );
215 + $settings = $image_optimizer->get_settings();
169 216
170 - if ( ! is_array( $data ) ) {
217 + $html = '';
218 + $status = '0';
219 + $already_optimized = get_post_meta( $post->ID, 'quickwebp_already_optimized', true );
220 + $data = get_post_meta( $post->ID, 'quickwebp_data', true );
171 221
172 - echo '<table><tr><td>';
173 - echo $this->optimize_btn( $post->ID );
222 + $mode_enabled = $settings['quickwebp_settings_conversion'];
174 223
175 - if ( ! empty( $has_error ) ) {
176 - echo esc_html__( 'Error attempting to optimize this image', QUICKWEBP_TEXT_DOMAIN );
224 + if ( '1' == $already_optimized && ( '1' == $mode_enabled || '0' == $mode_enabled ) ) {
225 + if ( is_array( $data ) ) {
226 + $status = '1';
227 + } else {
228 + $status = '2';
177 229 }
230 + }
178 231
179 - echo '</td></tr></table>';
232 + if ( '2' == $already_optimized && ( '2' == $mode_enabled || '0' == $mode_enabled ) ) {
233 + if ( is_array( $data ) ) {
234 + $status = '1';
235 + } else {
236 + $status = '2';
237 + }
238 + }
180 239
181 - } else {
182 -
183 - echo '<table><tr><td>' . $this->attachment_data( $data, $post->ID ) . '</td></tr></table>';
240 + echo '<table><tr><td><div><strong>QuickWebP</strong></div>';
241 + switch ( $status ) {
242 + case '0':
243 + echo wp_kses_post( $this->optimize_btn( $post->ID ) );
244 + break;
245 + case '1':
246 + echo wp_kses_post( $this->attachment_data( $data, $post->ID ) );
247 + break;
248 + case '2':
249 + echo esc_html__( 'Image already optimized.', 'quickwebp' );
250 + break;
184 251 }
185 -
252 + echo '</td></tr></table>';
186 253 }
187 254
188 255 /**
189 256 * Get all data to display for a specific media
@@ -188,31 +255,30 @@
188 255 /**
189 256 * Get all data to display for a specific media
190 257 */
191 258 public function attachment_data( $data, $attachment_id ) {
259 + $available_formats = array( '1' => 'WebP', '2' => 'AVIF' );
260 + $full_image_data = $data['full'] ?? array();
261 + $format = $available_formats[ $full_image_data['format'] ?? '' ] ?? '';
192 262
193 - $full_image_data = $data['full'] ?? array();
194 -
195 263 if ( ! empty( $full_image_data ) ) {
196 -
197 264 ob_start();
198 -
199 265 ?>
200 266 <div>
201 - <strong><?php _e( 'Original Image: ', QUICKWEBP_TEXT_DOMAIN ); ?></strong>
202 - <span><?php echo round( $full_image_data['original_size'] / 1024, 2 ) . 'KB'; ?></span>
267 + <strong><?php esc_html_e( 'Original Image: ', 'quickwebp' ); ?></strong>
268 + <span><?php echo esc_html( round( $full_image_data['original_size'] / 1024, 2 ) . 'KB' ); ?></span>
203 269 </div>
204 270 <div>
205 - <strong><?php _e( 'Webp: ', QUICKWEBP_TEXT_DOMAIN ); ?></strong>
206 - <span><?php echo round( $full_image_data['optimized_size'] / 1024, 2 ) . 'KB'; ?></span>
271 + <strong><?php echo esc_html( $format ); ?>: </strong>
272 + <span><?php echo esc_html( round( $full_image_data['optimized_size'] / 1024, 2 ) . 'KB' ); ?></span>
207 273 </div>
208 274 <div>
209 - <strong><?php _e( 'Save: ', QUICKWEBP_TEXT_DOMAIN ); ?></strong>
210 - <span><?php echo $full_image_data['percent'] . '%'; ?></span>
275 + <strong><?php esc_html_e( 'Save: ', 'quickwebp' ); ?></strong>
276 + <span><?php echo esc_html( $full_image_data['percent'] . '%' ); ?></span>
211 277 </div>
212 278 <div>
213 279 <button class="button button-sacondary quickwebp-undo-single-optimization-btn" data-attachment-id="<?php echo esc_attr( $attachment_id ); ?>">
214 - <?php _e( 'Undo optimization', QUICKWEBP_TEXT_DOMAIN ); ?>
280 + <?php esc_html_e( 'Undo optimization', 'quickwebp' ); ?>
215 281 <div class="spinner"></div>
216 282 </button>
217 283 <div class="quickwebp-undo-single-optimization-msg"></div>
218 284 </div>
@@ -219,9 +285,8 @@
219 285 <?php
220 286
221 287 return ob_get_clean();
222 288 }
223 -
224 289 }
225 290
226 291 /**
227 292 * Display optimize button in the media uploader
@@ -226,14 +291,12 @@
226 291 /**
227 292 * Display optimize button in the media uploader
228 293 */
229 294 public function optimize_btn( $attachment_id ) {
230 -
231 295 ob_start();
232 -
233 296 ?>
234 297 <button class="button button-sacondary quickwebp-single-optimization-btn" data-attachment-id="<?php echo esc_attr( $attachment_id ); ?>">
235 - <?php _e( 'Optimize', QUICKWEBP_TEXT_DOMAIN ); ?>
298 + <?php esc_html_e( 'Optimize', 'quickwebp' ); ?>
236 299 <div class="spinner"></div>
237 300 </button>
238 301 <div class="quickwebp-single-optimization-msg"></div>
239 302 <?php
@@ -243,17 +306,12 @@
243 306
244 307 /**
245 308 * Check the mimetype of the file
246 309 */
247 - public function valid_mimetype( $post_id ) {
310 + private function valid_mimetype( $post_id ) {
311 + $image_optimizer = new Quickwebp_Image_Optimizer( $this->plugin_name, $this->version );
312 + $allowed_mime_types = $image_optimizer->allowed_mime_types;
313 + $post_mime_type = get_post_mime_type( $post_id );
248 314
249 - // check the mime type
250 - $image_optimizer = new Quickwebp_Image_Optimizer( $this->plugin_name, $this->version );
251 - $mime_types = $image_optimizer->allowed_mime_types;
252 - $index = array_search( 'image/webp', $mime_types );
253 - unset( $mime_types[$index] );
254 - $mime_type = get_post_mime_type( $post_id );
255 -
256 - return in_array( $mime_type, $mime_types );
315 + return in_array( $post_mime_type, $allowed_mime_types );
257 316 }
258 -
259 -}
317 +}