uawdijnntqw1x1x1
IP : 216.73.216.109
Hostname : premium160.web-hosting.com
Kernel : Linux premium160.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
home
/
batcwwjx
/
public_html
/
wp-content
/
plugins
/
wp-smushit
/
core
/
cli
/
class-cli-optimizer.php
/
/
<?php /** * Class CLI * * @since 3.1 * @package Smush\Core */ namespace Smush\Core\CLI; use Smush\Core\Array_Utils; use Smush\Core\Media\Media_Item_Cache; use Smush\Core\Media\Media_Item_Optimizer; use WP_CLI; use WP_Smush; if ( ! defined( 'WPINC' ) ) { die; } class CLI_Optimizer { const IMAGE_ID_KEY = 'ID'; const EDIT_LINK_KEY = 'Edit Link'; const ERROR_MESSAGE_KEY = 'Error Message'; const IMAGE_LINK_KEY = 'IMAGE LINK'; const MIME_TYPE_KEY = 'MIME TYPE'; /** * @var int */ private $limit; /** * @var array */ private $errors; /** * @var array */ private $ids; /** * @var Array_Utils */ private $array_utils; public function __construct( $array_utils ) { $this->array_utils = $array_utils; } public function bulk_restore( $start_message ) { WP_CLI::log( $start_message ); $total_images = $this->get_count(); if ( $total_images < 1 ) { WP_CLI::success( __( 'No images available to restore', 'wp-smushit' ) ); return; } $progress = WP_CLI\Utils\make_progress_bar( __( 'Progress:', 'wp-smushit' ), $total_images ); $optimize_ids = $this->get_ids(); WP_CLI::log( sprintf( __( 'Found %d attachments that need to be restored!', 'wp-smushit' ), $total_images ) ); $this->log_start_restore(); foreach ( $optimize_ids as $attachment_id ) { $this->restore( (int) $attachment_id ); $progress->tick(); } $progress->finish(); $this->render_restore_status(); $this->reset(); } private function log_start_restore() { if ( 1 === $this->get_limit() ) { return WP_CLI::log( __( 'Starting restoration ...', 'wp-smushit' ) ); } return WP_CLI::log( __( 'Starting bulk restoration ...', 'wp-smushit' ) ); } private function restore( $attachment_id ) { $media_item = Media_Item_Cache::get_instance()->get( $attachment_id ); $optimizer = new Media_Item_Optimizer( $media_item ); $restored = $optimizer->restore(); if ( ! $restored ) { $error_message = sprintf( /* translators: %d - attachment ID */ esc_html__( 'Image %d cannot be restored.', 'wp-smushit' ), (int) $attachment_id ); $this->add_error( $this->get_error_item( $attachment_id, $error_message ) ); } return $restored; } private function render_restore_status() { $total_images = $this->get_count(); $errors = $this->get_errors(); if ( 1 === $this->get_limit() ) { $this->render_single_restore_status( $errors ); return; } $this->render_bulk_restore_status( $total_images, $errors ); } private function render_single_restore_status( $errors ) { if ( empty( $errors ) ) { WP_CLI::success( __( 'Image restored successfully!', 'wp-smushit' ) ); return; } WP_CLI::warning( sprintf( /* translators: %s: Error message */ __( 'Image could not be restored: %s', 'wp-smushit' ), $this->array_utils->get_array_value( $errors[0], self::ERROR_MESSAGE_KEY ) ) ); } private function render_bulk_restore_status( $total_images, $errors ) { $no_errors = count( $errors ); $bulk_restore_message = $this->get_bulk_restore_message( $no_errors, $total_images ); if ( empty( $no_errors ) ) { WP_CLI::success( $bulk_restore_message ); return; } WP_CLI::warning( $bulk_restore_message ); WP_CLI\Utils\format_items( 'table', $errors, array( self::IMAGE_ID_KEY, self::EDIT_LINK_KEY, self::ERROR_MESSAGE_KEY ) ); } private function get_bulk_restore_message( $no_errors, $total_images ) { if ( $no_errors === $total_images ) { return esc_html__( 'All of your images failed to restore. Find out why and how to resolve the issue(s) below.', 'wp-smushit' ); } elseif ( $no_errors > 0 ) { $no_restored = $total_images - $no_errors; $bulk_restore_message = esc_html__( '{{smushed}}/{{total}} images restored successfully, {{errors}} images were not restored, find out why and how to resolve the issue(s) below.', 'wp-smushit' ); $bulk_restore_message = str_replace( array( '{{smushed}}', '{{total}}', '{{errors}}' ), array( $no_restored, $total_images, $no_errors ), $bulk_restore_message ); return $bulk_restore_message; } return WP_CLI::success( __( 'All images restored.', 'wp-smushit' ) ); } public function bulk_optimize( $start_message ) { WP_CLI::log( $start_message ); $total_images = $this->get_count(); if ( $total_images < 1 ) { WP_CLI::success( __( 'No images available to smush.', 'wp-smushit' ) ); return; } $progress = WP_CLI\Utils\make_progress_bar( __( 'Progress:', 'wp-smushit' ), $total_images ); $optimize_ids = $this->get_ids(); WP_CLI::log( sprintf( __( 'Found %d attachments that need smushing!', 'wp-smushit' ), $total_images ) ); $this->log_start_smush(); foreach ( $optimize_ids as $attachment_id ) { $this->optimize( (int) $attachment_id ); $progress->tick(); } $progress->finish(); $this->render_smush_status(); $this->reset(); } private function log_start_smush() { if ( 1 === $this->get_limit() ) { return WP_CLI::log( __( 'Starting smush ...', 'wp-smushit' ) ); } return WP_CLI::log( __( 'Starting smush ...', 'wp-smushit' ) ); } private function optimize( $attachment_id ) { $media_item = Media_Item_Cache::get_instance()->get( $attachment_id ); $optimizer = new Media_Item_Optimizer( $media_item ); $optimized = $optimizer->optimize(); if ( $optimized ) { return true; } if ( $media_item->has_errors() ) { $this->add_error( $this->get_error_item( $attachment_id, $media_item->get_errors()->get_error_message() ) ); } else { $this->add_error( $this->get_error_item( $attachment_id, $optimizer->get_errors()->get_error_message() ) ); } return false; } private function get_error_item( $attachment_id, $error_message ) { $media_item = Media_Item_Cache::get_instance()->get( $attachment_id ); return array( self::IMAGE_ID_KEY => $attachment_id, self::EDIT_LINK_KEY => $media_item->get_edit_link(), self::ERROR_MESSAGE_KEY => $error_message, ); } private function render_smush_status() { $total_images = $this->get_count(); $errors = $this->get_errors(); if ( 1 === $this->get_limit() ) { $this->render_single_smush_status( $errors ); return; } $this->render_bulk_smush_status( $total_images, $errors ); } private function render_single_smush_status( $errors ) { if ( empty( $errors ) ) { WP_CLI::success( __( 'Image smushed.', 'wp-smushit' ) ); return; } WP_CLI::warning( sprintf( /* translators: %s: Error message */ __( 'Image could not be smushed: %s', 'wp-smushit' ), $this->array_utils->get_array_value( $errors[0], self::ERROR_MESSAGE_KEY ) ) ); } private function render_bulk_smush_status( $total_images, $errors ) { $no_errors = count( $errors ); $bulk_smush_message = $this->get_bulk_smush_message( $no_errors, $total_images ); if ( empty( $no_errors ) ) { WP_CLI::success( $bulk_smush_message ); return; } WP_CLI::warning( $bulk_smush_message ); WP_CLI\Utils\format_items( 'table', $errors, array( self::IMAGE_ID_KEY, self::EDIT_LINK_KEY, self::ERROR_MESSAGE_KEY ) ); } private function get_bulk_smush_message( $no_errors, $total_images ) { $localize_strings = WP_Smush::get_instance()->core()->get_localize_strings(); if ( $no_errors === $total_images ) { return $this->array_utils->get_array_value( $localize_strings, 'all_failed' ); } elseif ( $no_errors > 0 ) { $no_smushed = $total_images - $no_errors; $bulk_smush_message = $this->array_utils->get_array_value( $localize_strings, 'error_in_bulk' ); $bulk_smush_message = str_replace( array( '{{smushed}}', '{{total}}', '{{errors}}' ), array( $no_smushed, $total_images, $no_errors ), $bulk_smush_message ); return $bulk_smush_message; } return $this->array_utils->get_array_value( $localize_strings, 'all_smushed' ); } public function render_optimize_list( $title ) { $optimize_list = $this->get_optimize_list(); if ( empty( $optimize_list ) ) { WP_CLI::success( __( 'We did not find any images that need smushing.', 'wp-smushit' ) ); return; } WP_CLI::log( $title ); WP_CLI\Utils\format_items( 'table', $this->get_optimize_list(), array( self::IMAGE_ID_KEY, self::IMAGE_LINK_KEY, self::MIME_TYPE_KEY ) ); $this->reset(); } private function get_optimize_list() { $optimize_list = array(); $optimize_ids = $this->get_ids(); foreach ( $optimize_ids as $attachment_id ) { $media_item = Media_Item_Cache::get_instance()->get( $attachment_id ); if ( ! $media_item->is_valid() || ! $media_item->get_main_size() ) { continue; } $optimize_list[] = $this->get_optimize_item( $media_item ); } return $optimize_list; } private function get_ids() { return $this->ids; } public function set_ids( $ids ) { $limit = $this->get_limit(); $ids = (array) $ids; if ( $limit && $limit < count( $ids ) ) { $ids = array_slice( $ids, 0, $limit ); } $this->ids = $ids; return $this; } public function get_optimize_item( $media_item ) { return array( self::IMAGE_ID_KEY => $media_item->get_id(), self::IMAGE_LINK_KEY => $media_item->get_main_size()->get_file_url(), self::MIME_TYPE_KEY => $media_item->get_mime_type(), ); } private function get_count() { return count( $this->get_ids() ); } private function get_limit() { return $this->limit; } public function set_limit( $limit ) { $this->limit = $limit > 0 ? $limit : 0; return $this; } private function add_error( $error_item ) { $this->errors[] = $error_item; } public function get_errors() { return (array) $this->errors; } private function set_errors( array $errors ) { $this->errors = $errors; return $this; } public function reset() { $this->set_limit( 0 ); $this->set_errors( array() ); $this->set_ids( array() ); } }
/home/batcwwjx/public_html/wp-content/plugins/wp-smushit/core/cli/class-cli-optimizer.php