Файловый менеджер - Редактировать - /var/www/xthruster/html/wp-content/plugins/image-optimization/modules/optimization/classes/single-optimization.php
Назад
<?php namespace ImageOptimization\Modules\Optimization\Classes; use ImageOptimization\Classes\Async_Operation\{ Async_Operation, Async_Operation_Hook, Async_Operation_Queue, Exceptions\Async_Operation_Exception, Queries\Image_Optimization_Operation_Query }; use ImageOptimization\Classes\Image\{ Image_Meta, Image_Status, }; use ImageOptimization\Modules\Optimization\Classes\Exceptions\Image_Optimization_Already_In_Progress_Error; use Throwable; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class Single_Optimization { /** * @throws Throwable|Async_Operation_Exception */ public static function optimize_many( array $image_ids, bool $is_reoptimize = false ): void { foreach ( $image_ids as $image_id ) { try { self::schedule_single_optimization( $image_id, $is_reoptimize ); } catch ( Image_Optimization_Already_In_Progress_Error $ioe ) { continue; } catch ( Throwable $t ) { throw $t; } } } /** * @throws Throwable|Async_Operation_Exception|Image_Optimization_Already_In_Progress_Error */ public static function schedule_single_optimization( int $image_id, bool $is_reoptimize = false ): void { if ( self::is_optimization_in_progress( $image_id ) ) { throw new Image_Optimization_Already_In_Progress_Error( esc_html__( 'Optimization is already in progress', 'image-optimization' ) ); } $meta = new Image_Meta( $image_id ); try { $meta ->set_status( $is_reoptimize ? Image_Status::REOPTIMIZING_IN_PROGRESS : Image_Status::OPTIMIZATION_IN_PROGRESS ) ->save(); Async_Operation::create( $is_reoptimize ? Async_Operation_Hook::REOPTIMIZE_SINGLE : Async_Operation_Hook::OPTIMIZE_SINGLE, [ 'attachment_id' => $image_id ], Async_Operation_Queue::OPTIMIZE ); } catch ( Throwable $t ) { $meta ->set_status( $is_reoptimize ? Image_Status::REOPTIMIZING_FAILED : Image_Status::OPTIMIZATION_FAILED ) ->save(); throw $t; } } /** * @throws Async_Operation_Exception */ private static function is_optimization_in_progress( int $image_id ): bool { $query = ( new Image_Optimization_Operation_Query() ) ->set_status( [ Async_Operation::OPERATION_STATUS_PENDING, Async_Operation::OPERATION_STATUS_RUNNING ] ) ->set_image_id( $image_id ) ->return_ids(); $operations = Async_Operation::get( $query ); return count( $operations ) > 0; } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.3-4ubuntu2.24 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка