PluginProbe ʕ •ᴥ•ʔ
Robin Image Optimizer – Unlimited Image Optimization, WebP & AVIF / trunk
Robin Image Optimizer – Unlimited Image Optimization, WebP & AVIF vtrunk
2.0.5 trunk 1.3.7 1.4.0 1.4.1 1.4.2 1.4.6 1.5.0 1.5.3 1.5.6 1.5.8 1.6.5 1.6.6 1.6.9 1.7.0 1.7.4 1.8.1 1.8.2 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4
robin-image-optimizer / admin / includes / classes / class-rio-optimize-template.php
robin-image-optimizer / admin / includes / classes Last commit date
class-rio-nextgen-landing.php 5 months ago class-rio-optimize-template.php 5 months ago index.php 3 years ago
class-rio-optimize-template.php
413 lines
1 <?php
2 // Exit if accessed directly
3 if ( ! defined( 'ABSPATH' ) ) {
4 exit;
5 }
6
7 /**
8 * Класс реализует шаблон блока статистики
9 *
10 * @version 1.0
11 */
12 class WIO_OptimizePageTemplate {
13
14 /**
15 * Тип страницы
16 */
17 protected $page_type = 'media-library';
18
19
20 public function __construct( $type = 'media-library' ) {
21 $this->page_type = $type;
22 }
23
24 /**
25 * Выводит контент страницы с учётом мультисайта
26 *
27 * @param WRIO_Page $page
28 *
29 * @throws Exception
30 */
31
32 /*
33 public function showPageContent( WRIO_Page $page ) {
34 do_action( 'wbcr/rio/multisite_current_blog' );
35 $this->pageContent( $page );
36 do_action( 'wbcr/rio/multisite_restore_blog' );
37 }*/
38
39 /**
40 * Выбор сайта для мультисайт режима
41 */
42 /*
43 public function selectSite() {
44 if ( ! WRIO_Plugin::app()->isNetworkAdmin() ) {
45 return;
46 }
47 $blogs = WIO_Multisite::getBlogs( $this->page_type );
48 $current_blog = WRIO_Plugin::app()->getPopulateOption( 'current_blog', 1 );
49 ?>
50 <select style="width:200px;display:inline-block; height: 45px; margin-left:40px;" id="wbcr-rio-current-blog"
51 class="factory-dropdown factory-from-control-dropdown form-control"
52 data-context="<?php echo esc_attr( $this->page_type ); ?>"
53 data-nonce="<?php echo wp_create_nonce( 'update_blog_id' ); ?>">
54 <?php foreach ( $blogs as $blog ) : ?>
55 <?php
56 $blog_name = $blog->domain . $blog->path;
57 if ( defined( 'SUBDOMAIN_INSTALL' ) && SUBDOMAIN_INSTALL ) {
58 $blog_name = $blog->domain;
59 }
60 ?>
61 <option <?php selected( $current_blog, $blog->blog_id ); ?>
62 value="<?php echo esc_attr( $blog->blog_id ); ?>"><?php echo esc_attr( $blog_name ); ?></option>
63 <?php endforeach; ?>
64 </select>
65 <?php
66 }*/
67
68 /**
69 * Возвращает html код блока ручной оптимизации
70 *
71 * @param array $params {
72 * Параметры
73 *
74 * @type int $attachment_id Attachment post ID
75 * @type bool $is_optimized Оптимизировано ли изображение
76 * @type string $attach_dimensions Размеры изображения. Например 200x150
77 * @type int $attachment_file_size Размер оригинального основного файла в байта�
78
79 * @type bool $is_skipped Пропущено ли изображение. Изображения с таким флагом больше не участвуют в
80 * оптимизации
81 * @type int $optimized_size Оптимизированный размер основного файла + превьюшек в байта�
82
83 * @type int $original_size Оригинальный размер основного файла + превьюшек в байта�
84
85 * @type int $original_main_size Оригинальный размер основного файла в байта�
86
87 * @type int $thumbnails_optimized Кол-во оптимизированны�
88 превьюшек
89 * @type string $optimization_level Уровень оптимизации
90 * @type string $error_msg Текст ошибки
91 * @type bool $backuped Сделана ли резервная копия
92 * @type float $diff_percent Разница между оригиналом и оптимизацией в процента�
93
94 * @type float $diff_percent_all Общая оптимизация в процента�
95
96 * }
97 *
98 * @return string
99 */
100 public function getMediaColumnTemplate( $params ) {
101 ob_start();
102
103 $ajaxActionOptimize = apply_filters( 'wbcr/rio/optimize_template/reoptimize_ajax_action', 'wio_reoptimize_image', $this->page_type );
104 $ajaxActionConvert = apply_filters( 'wbcr/rio/optimize_template/convert_ajax_action', 'wio_convert_image', $this->page_type );
105 $ajaxActionRestore = apply_filters( 'wbcr/rio/optimize_template/restore_ajax_action', 'wio_restore_image', $this->page_type );
106
107 $attachment_id = $params['attachment_id'];
108 $is_optimized = $params['is_optimized'];
109 $attach_dimensions = $params['attach_dimensions'];
110 $attachment_file_size = $params['attachment_file_size'];
111 $is_skipped = $params['is_skipped'];
112 $is_supported_format = isset( $params['is_supported_format'] ) ? $params['is_supported_format'] : true;
113 $webp_size = $params['webp_size'];
114 $avif_size = isset( $params['avif_size'] ) ? $params['avif_size'] : 0;
115 $webp_percent = isset( $params['webp_percent'] ) ? $params['webp_percent'] : 0;
116 $avif_percent = isset( $params['avif_percent'] ) ? $params['avif_percent'] : 0;
117 $backuped = isset( $params['backuped'] ) ? $params['backuped'] : false;
118
119 if ( $is_skipped ) {
120 return (string) ob_get_clean();
121 }
122
123 // Don't show buttons for unsupported formats
124 if ( ! $is_supported_format ) {
125 return (string) ob_get_clean();
126 }
127
128 if ( $is_optimized ) {
129 $original_main_size = $params['original_main_size'];
130 $thumbnails_optimized = $params['thumbnails_optimized'];
131 $optimization_level = $params['optimization_level'];
132 $error_msg = $params['error_msg'];
133 $diff_percent = $params['diff_percent'];
134 $diff_percent_all = $params['diff_percent_all'];
135
136 ?>
137 <ul class="wio-datas-list" data-size="<?php echo esc_attr( size_format( $attachment_file_size ) ); ?>"
138 data-dimensions="<?php echo esc_attr( $attach_dimensions ); ?>">
139 <li class="wio-data-item"><span
140 class="data"><?php _e( 'New Filesize:', 'robin-image-optimizer' ); ?></span>
141 <strong class="big"><?php echo esc_attr( size_format( $attachment_file_size, 1 ) ); ?></strong>
142 <span class="wio-chart-value">(<?php echo esc_attr( $diff_percent ); ?>%)</span></li>
143 <?php if ( $webp_size ) : ?>
144 <li class="wio-data-item"><span
145 class="data"><?php _e( 'WebP Filesize:', 'robin-image-optimizer' ); ?></span>
146 <strong class="big"><?php echo esc_attr( size_format( $webp_size, 1 ) ); ?></strong>
147 <span class="wio-chart-value">(<?php echo esc_attr( $webp_percent ); ?>%)</span></li>
148 <?php endif; ?>
149 <?php if ( $avif_size ) : ?>
150 <li class="wio-data-item"><span
151 class="data"><?php _e( 'AVIF Filesize:', 'robin-image-optimizer' ); ?></span>
152 <strong class="big"><?php echo esc_attr( size_format( $avif_size, 1 ) ); ?></strong>
153 <span class="wio-chart-value">(<?php echo esc_attr( $avif_percent ); ?>%)</span></li>
154 <?php endif; ?>
155 <li class="wio-data-item">
156 <span class="data"><?php _e( 'Original Filesize:', 'robin-image-optimizer' ); ?></span>
157 <strong class="original"><?php echo esc_attr( size_format( $original_main_size, 1 ) ); ?></strong>
158 </li>
159 <li class="wio-data-item"><span class="data"><?php _e( 'Level:', 'robin-image-optimizer' ); ?></span>
160 <strong>
161 <?php
162 if ( ! $error_msg ) {
163 // если уровень кастомный от 1 до 100
164 if ( is_numeric( $optimization_level ) ) {
165 echo __( 'Custom', 'robin-image-optimizer' ) . ' ' . intval( $optimization_level ) . '%';
166 } else {
167 // если уровень один из настроек
168 if ( $optimization_level == 'normal' ) {
169 echo __( 'Lossless', 'robin-image-optimizer' );
170 } elseif ( $optimization_level == 'aggresive' ) {
171 echo __( 'Lossy', 'robin-image-optimizer' );
172 } else {
173 echo __( 'High', 'robin-image-optimizer' );
174 }
175 }
176 }
177 ?>
178 </strong>
179 </li>
180 <li class="wio-data-item">
181 <span class="data"><?php _e( 'Thumbnails Optimized:', 'robin-image-optimizer' ); ?></span>
182 <strong class="original"><?php echo intval( $thumbnails_optimized ); ?></strong>
183 </li>
184 <li class="wio-data-item">
185 <span class="data"><?php _e( 'Overall Saving:', 'robin-image-optimizer' ); ?></span>
186 <strong class="original"><?php echo esc_attr( $diff_percent_all ); ?>%</strong>
187 </li>
188 <?php if ( $error_msg ) : ?>
189 <li class="wio-data-item">
190 <span class="data"><?php _e( 'Error Message:', 'robin-image-optimizer' ); ?></span>
191 <strong><?php echo esc_attr( $error_msg ); ?></strong></li>
192 <?php endif; ?>
193 </ul>
194 <div class="wio-datas-actions-links" style="display:inline;">
195 <?php if ( $optimization_level != 'normal' ) : ?>
196 <a data-action="<?php echo esc_attr( $ajaxActionOptimize ); ?>"
197 data-id="<?php echo esc_attr( $attachment_id ); ?>"
198 data-level="normal"
199 data-nonce="<?php echo wp_create_nonce( 'reoptimize' ); ?>"
200 href="#"
201 class="wio-reoptimize button-wio-manual-override-upload"
202 data-waiting-label="<?php _e( 'Optimization in progress', 'robin-image-optimizer' ); ?>">
203 <span class="dashicons dashicons-admin-generic"></span>
204 <span
205 class="wio-hide-if-small"
206 >
207 <?php _e( 'Re-Optimize to:', 'robin-image-optimizer' ); ?>
208 </span><?php _e( 'Lossless', 'robin-image-optimizer' ); ?>
209 <span class="wio-hide-if-small"></span>
210 </a>
211 <?php endif; ?>
212 <?php if ( $optimization_level != 'aggresive' ) : ?>
213 <a data-action="<?php echo esc_attr( $ajaxActionOptimize ); ?>"
214 data-id="<?php echo esc_attr( $attachment_id ); ?>"
215 data-level="aggresive"
216 data-nonce="<?php echo wp_create_nonce( 'reoptimize' ); ?>"
217 href="#"
218 class="wio-reoptimize button-wio-manual-override-upload"
219 data-waiting-label="<?php _e( 'Optimization in progress', 'robin-image-optimizer' ); ?>">
220 <span class="dashicons dashicons-admin-generic"></span>
221 <span
222 class="wio-hide-if-small"
223 >
224 <?php _e( 'Re-Optimize to:', 'robin-image-optimizer' ); ?>
225 </span>
226 <?php _e( 'Lossy', 'robin-image-optimizer' ); ?>
227 <span class="wio-hide-if-small"></span>
228 </a>
229 <?php endif; ?>
230 <?php if ( $optimization_level != 'ultra' ) : ?>
231 <a data-action="<?php echo esc_attr( $ajaxActionOptimize ); ?>"
232 data-id="<?php echo esc_attr( $attachment_id ); ?>"
233 data-level="ultra"
234 data-nonce="<?php echo wp_create_nonce( 'reoptimize' ); ?>"
235 href="#"
236 class="wio-reoptimize button-wio-manual-override-upload"
237 data-waiting-label="<?php _e( 'Optimization in progress', 'robin-image-optimizer' ); ?>">
238 <span class="dashicons dashicons-admin-generic"></span>
239 <span
240 class="wio-hide-if-small"
241 >
242 <?php _e( 'Re-Optimize to:', 'robin-image-optimizer' ); ?>
243 </span>
244 <?php _e( 'High', 'robin-image-optimizer' ); ?>
245 <span class="wio-hide-if-small"></span>
246 </a>
247 <?php endif; ?>
248 <?php // WebP conversion is available to all users ?>
249 <a data-action="<?php echo esc_attr( $ajaxActionConvert ); ?>"
250 data-id="<?php echo esc_attr( $attachment_id ); ?>"
251 data-format="webp"
252 data-nonce="<?php echo wp_create_nonce( 'convert' ); ?>"
253 href="#"
254 class="wio-convert button-wio-manual-override-upload"
255 data-waiting-label="<?php esc_html_e( 'Convert in progress', 'robin-image-optimizer' ); ?>">
256 <span class="dashicons dashicons-images-alt2"></span>
257 <?php echo esc_html( $webp_size ? __( 'Re-convert to WebP', 'robin-image-optimizer' ) : __( 'Convert to WebP', 'robin-image-optimizer' ) ); ?>
258 </a>
259 <?php // AVIF conversion is a premium-only feature ?>
260 <?php if ( wrio_is_license_activate() ) : ?>
261 <a data-action="<?php echo esc_attr( $ajaxActionConvert ); ?>"
262 data-id="<?php echo esc_attr( $attachment_id ); ?>"
263 data-format="avif"
264 data-nonce="<?php echo wp_create_nonce( 'convert' ); ?>"
265 href="#"
266 class="wio-convert button-wio-manual-override-upload"
267 data-waiting-label="<?php esc_html_e( 'Convert in progress', 'robin-image-optimizer' ); ?>">
268 <span class="dashicons dashicons-images-alt2"></span>
269 <?php echo esc_html( $avif_size ? __( 'Re-convert to AVIF', 'robin-image-optimizer' ) : __( 'Convert to AVIF', 'robin-image-optimizer' ) ); ?>
270 </a>
271 <?php endif; ?>
272 <?php if ( $backuped ) : ?>
273 <a
274 href="#" data-action="<?php echo esc_attr( $ajaxActionRestore ); ?>"
275 data-id="<?php echo esc_attr( $attachment_id ); ?>"
276 data-nonce="<?php echo wp_create_nonce( 'restore' ); ?>"
277 class="button-wio-restore attachment-has-backup"
278 data-waiting-label="<?php esc_html_e( 'Recovery in progress', 'robin-image-optimizer' ); ?>"
279 >
280 <span class="dashicons dashicons-image-rotate"></span>
281 <?php esc_html_e( 'Restore original', 'robin-image-optimizer' ); ?>
282 </a>
283 <?php endif; ?>
284 </div>
285 <!-- .wio-datas-actions-links -->
286 <?php
287 } elseif ( $attach_dimensions !== '0 x 0' ) {
288 // Show full stats view if any conversion exists
289 if ( $webp_size || $avif_size ) {
290 ?>
291 <ul class="wio-datas-list" data-size="<?php echo esc_attr( size_format( $attachment_file_size ) ); ?>"
292 data-dimensions="<?php echo esc_attr( $attach_dimensions ); ?>">
293 <li class="wio-data-item">
294 <span class="data"><?php esc_html_e( 'Original Filesize:', 'robin-image-optimizer' ); ?></span>
295 <strong class="big"><?php echo esc_attr( size_format( $attachment_file_size, 1 ) ); ?></strong>
296 </li>
297 <?php if ( $webp_size ) : ?>
298 <?php $webp_saving = $attachment_file_size ? round( ( $attachment_file_size - $webp_size ) * 100 / $attachment_file_size ) : 0; ?>
299 <li class="wio-data-item">
300 <span class="data"><?php esc_html_e( 'WebP Filesize:', 'robin-image-optimizer' ); ?></span>
301 <strong class="big"><?php echo esc_attr( size_format( $webp_size, 1 ) ); ?></strong>
302 <span class="wio-chart-value">(<?php echo esc_attr( $webp_saving ); ?>%)</span>
303 </li>
304 <?php endif; ?>
305 <?php if ( $avif_size ) : ?>
306 <?php $avif_saving = $attachment_file_size ? round( ( $attachment_file_size - $avif_size ) * 100 / $attachment_file_size ) : 0; ?>
307 <li class="wio-data-item">
308 <span class="data"><?php esc_html_e( 'AVIF Filesize:', 'robin-image-optimizer' ); ?></span>
309 <strong class="big"><?php echo esc_attr( size_format( $avif_size, 1 ) ); ?></strong>
310 <span class="wio-chart-value">(<?php echo esc_attr( $avif_saving ); ?>%)</span>
311 </li>
312 <?php endif; ?>
313 </ul>
314 <div class="wio-datas-actions-links" style="display:inline;">
315 <a data-action="<?php echo esc_attr( $ajaxActionOptimize ); ?>"
316 data-id="<?php echo esc_attr( $attachment_id ); ?>"
317 data-level=""
318 data-nonce="<?php echo wp_create_nonce( 'reoptimize' ); ?>"
319 href="#"
320 class="wio-reoptimize button-wio-manual-override-upload"
321 data-waiting-label="<?php esc_attr_e( 'Optimization in progress', 'robin-image-optimizer' ); ?>">
322 <span class="dashicons dashicons-admin-generic"></span>
323 <?php esc_html_e( 'Optimize', 'robin-image-optimizer' ); ?>
324 </a>
325 <?php // WebP conversion is available to all users ?>
326 <a data-action="<?php echo esc_attr( $ajaxActionConvert ); ?>"
327 data-id="<?php echo esc_attr( $attachment_id ); ?>"
328 data-format="webp"
329 data-nonce="<?php echo esc_attr( wp_create_nonce( 'convert' ) ); ?>"
330 href="#"
331 class="wio-convert button-wio-manual-override-upload"
332 data-waiting-label="<?php esc_attr_e( 'Convert in progress', 'robin-image-optimizer' ); ?>">
333 <span class="dashicons dashicons-images-alt2"></span>
334 <?php echo esc_html( $webp_size ? __( 'Re-convert to WebP', 'robin-image-optimizer' ) : __( 'Convert to WebP', 'robin-image-optimizer' ) ); ?>
335 </a>
336 <?php // AVIF conversion is a premium-only feature ?>
337 <?php if ( wrio_is_license_activate() ) : ?>
338 <a data-action="<?php echo esc_attr( $ajaxActionConvert ); ?>"
339 data-id="<?php echo esc_attr( $attachment_id ); ?>"
340 data-format="avif"
341 data-nonce="<?php echo esc_attr( wp_create_nonce( 'convert' ) ); ?>"
342 href="#"
343 class="wio-convert button-wio-manual-override-upload"
344 data-waiting-label="<?php esc_attr_e( 'Convert in progress', 'robin-image-optimizer' ); ?>">
345 <span class="dashicons dashicons-images-alt2"></span>
346 <?php echo esc_html( $avif_size ? __( 'Re-convert to AVIF', 'robin-image-optimizer' ) : __( 'Convert to AVIF', 'robin-image-optimizer' ) ); ?>
347 </a>
348 <?php endif; ?>
349 <?php if ( $backuped ) : ?>
350 <a
351 href="#" data-action="<?php echo esc_attr( $ajaxActionRestore ); ?>"
352 data-id="<?php echo esc_attr( $attachment_id ); ?>"
353 data-nonce="<?php echo esc_attr( wp_create_nonce( 'restore' ) ); ?>"
354 class="button-wio-restore attachment-has-backup"
355 data-waiting-label="<?php esc_attr_e( 'Recovery in progress', 'robin-image-optimizer' ); ?>"
356 >
357 <span class="dashicons dashicons-image-rotate"></span>
358 <?php esc_html_e( 'Restore original', 'robin-image-optimizer' ); ?>
359 </a>
360 <?php endif; ?>
361 </div>
362 <!-- .wio-datas-actions-links -->
363 <?php
364 } else {
365 // No conversions yet - show buttons
366 ?>
367 <button
368 type="button" data-action="<?php echo esc_attr( $ajaxActionOptimize ); ?>"
369 data-nonce="<?php echo wp_create_nonce( 'reoptimize' ); ?>"
370 data-id="<?php echo esc_attr( $attachment_id ); ?>" data-level=""
371 class="wio-reoptimize button button-primary button-large"
372 data-waiting-label="<?php esc_attr_e( 'Optimization in progress', 'robin-image-optimizer' ); ?>"
373 data-size="<?php echo esc_attr( size_format( $attachment_file_size ) ); ?>"
374 data-dimensions="<?php echo esc_attr( $attach_dimensions ); ?>"
375 >
376 <?php esc_html_e( 'Optimize', 'robin-image-optimizer' ); ?>
377 </button>
378 <?php // WebP conversion is available to all users ?>
379 <button
380 type="button" data-action="<?php echo esc_attr( $ajaxActionConvert ); ?>"
381 data-nonce="<?php echo wp_create_nonce( 'convert' ); ?>"
382 data-id="<?php echo esc_attr( $attachment_id ); ?>"
383 data-format="webp"
384 class="wio-convert button button-primary button-large"
385 data-waiting-label="<?php esc_attr_e( 'Convert in progress', 'robin-image-optimizer' ); ?>"
386 data-size="<?php echo esc_attr( size_format( $attachment_file_size ) ); ?>"
387 data-dimensions="<?php echo esc_attr( $attach_dimensions ); ?>"
388 >
389 <?php esc_html_e( 'Convert to WebP', 'robin-image-optimizer' ); ?>
390 </button>
391 <?php // AVIF conversion is a premium-only feature ?>
392 <?php if ( wrio_is_license_activate() ) : ?>
393 <button
394 type="button" data-action="<?php echo esc_attr( $ajaxActionConvert ); ?>"
395 data-nonce="<?php echo wp_create_nonce( 'convert' ); ?>"
396 data-id="<?php echo esc_attr( $attachment_id ); ?>"
397 data-format="avif"
398 class="wio-convert button button-primary button-large"
399 data-waiting-label="<?php esc_attr_e( 'Convert in progress', 'robin-image-optimizer' ); ?>"
400 data-size="<?php echo esc_attr( size_format( $attachment_file_size ) ); ?>"
401 data-dimensions="<?php echo esc_attr( $attach_dimensions ); ?>"
402 >
403 <?php esc_html_e( 'Convert to AVIF', 'robin-image-optimizer' ); ?>
404 </button>
405 <?php endif; ?>
406 <?php
407 }
408 }
409
410 return (string) ob_get_clean();
411 }
412 }
413