Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/wp-smush.../core
File: class-cli.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Class CLI
[2] Fix | Delete
*
[3] Fix | Delete
* @since 3.1
[4] Fix | Delete
* @package Smush\Core
[5] Fix | Delete
*/
[6] Fix | Delete
[7] Fix | Delete
namespace Smush\Core;
[8] Fix | Delete
[9] Fix | Delete
use Smush\Core\Media\Media_Item_Cache;
[10] Fix | Delete
use Smush\Core\Media\Media_Item_Optimizer;
[11] Fix | Delete
use WP_CLI;
[12] Fix | Delete
use WP_CLI_Command;
[13] Fix | Delete
use WP_Smush;
[14] Fix | Delete
[15] Fix | Delete
if ( ! defined( 'WPINC' ) ) {
[16] Fix | Delete
die;
[17] Fix | Delete
}
[18] Fix | Delete
[19] Fix | Delete
/**
[20] Fix | Delete
* Reduce image file sizes, improve performance and boost your SEO using the free WPMU DEV Smush API.
[21] Fix | Delete
*/
[22] Fix | Delete
class CLI extends WP_CLI_Command {
[23] Fix | Delete
[24] Fix | Delete
/**
[25] Fix | Delete
* Optimize image.
[26] Fix | Delete
*
[27] Fix | Delete
* ## OPTIONS
[28] Fix | Delete
*
[29] Fix | Delete
* [--type=<type>]
[30] Fix | Delete
* : Optimize single image, batch or all images.
[31] Fix | Delete
* ---
[32] Fix | Delete
* default: all
[33] Fix | Delete
* options:
[34] Fix | Delete
* - all
[35] Fix | Delete
* - single
[36] Fix | Delete
* - batch
[37] Fix | Delete
* ---
[38] Fix | Delete
*
[39] Fix | Delete
* [--image=<ID>]
[40] Fix | Delete
* : Attachment ID to compress.
[41] Fix | Delete
* ---
[42] Fix | Delete
* default: 0
[43] Fix | Delete
* ---
[44] Fix | Delete
*
[45] Fix | Delete
* ## EXAMPLES
[46] Fix | Delete
*
[47] Fix | Delete
* # Smush all images.
[48] Fix | Delete
* $ wp smush compress
[49] Fix | Delete
*
[50] Fix | Delete
* # Smush single image with ID = 10.
[51] Fix | Delete
* $ wp smush compress --type=single --image=10
[52] Fix | Delete
*
[53] Fix | Delete
* # Smush first 5 images.
[54] Fix | Delete
* $ wp smush compress --type=batch --image=5
[55] Fix | Delete
*
[56] Fix | Delete
* @param array $args All the positional arguments.
[57] Fix | Delete
* @param array $assoc_args All the arguments defined like --key=value or --flag or --no-flag.
[58] Fix | Delete
*/
[59] Fix | Delete
public function compress( $args, $assoc_args ) {
[60] Fix | Delete
$type = $assoc_args['type'];
[61] Fix | Delete
$image = $assoc_args['image'];
[62] Fix | Delete
[63] Fix | Delete
switch ( $type ) {
[64] Fix | Delete
case 'single':
[65] Fix | Delete
/* translators: %d - image ID */
[66] Fix | Delete
$msg = sprintf( __( 'Smushing image ID: %d', 'wp-smushit' ), absint( $image ) );
[67] Fix | Delete
$this->smush( $msg, array( $image ) );
[68] Fix | Delete
$this->_list( array() );
[69] Fix | Delete
break;
[70] Fix | Delete
case 'batch':
[71] Fix | Delete
/* translators: %d - number of images */
[72] Fix | Delete
$msg = sprintf( __( 'Smushing first %d images', 'wp-smushit' ), absint( $image ) );
[73] Fix | Delete
$this->smush_all( $msg, $image );
[74] Fix | Delete
break;
[75] Fix | Delete
case 'all':
[76] Fix | Delete
default:
[77] Fix | Delete
$this->smush_all( __( 'Smushing all images', 'wp-smushit' ) );
[78] Fix | Delete
break;
[79] Fix | Delete
}
[80] Fix | Delete
}
[81] Fix | Delete
[82] Fix | Delete
/**
[83] Fix | Delete
* List unoptimized images.
[84] Fix | Delete
*
[85] Fix | Delete
* ## OPTIONS
[86] Fix | Delete
*
[87] Fix | Delete
* [<count>]
[88] Fix | Delete
* : Limit number of images to get.
[89] Fix | Delete
*
[90] Fix | Delete
* ## EXAMPLES
[91] Fix | Delete
*
[92] Fix | Delete
* # Get all unoptimized images.
[93] Fix | Delete
* $ wp smush list
[94] Fix | Delete
*
[95] Fix | Delete
* # Get the first 100 images that are not optimized.
[96] Fix | Delete
* $ wp smush list 100
[97] Fix | Delete
*
[98] Fix | Delete
* @subcommand list
[99] Fix | Delete
* @when after_wp_load
[100] Fix | Delete
*
[101] Fix | Delete
* @param array $args All the positional arguments.
[102] Fix | Delete
*/
[103] Fix | Delete
public function _list( $args ) {
[104] Fix | Delete
if ( ! empty( $args ) ) {
[105] Fix | Delete
list( $count ) = $args;
[106] Fix | Delete
} else {
[107] Fix | Delete
$count = -1;
[108] Fix | Delete
}
[109] Fix | Delete
[110] Fix | Delete
$response = WP_CLI::launch_self(
[111] Fix | Delete
'post list',
[112] Fix | Delete
array( '--meta_compare=NOT EXISTS' ),
[113] Fix | Delete
array(
[114] Fix | Delete
'post_type' => 'attachment',
[115] Fix | Delete
'fields' => 'ID, guid, post_mime_type',
[116] Fix | Delete
'meta_key' => 'wp-smpro-smush-data',
[117] Fix | Delete
'format' => 'json',
[118] Fix | Delete
'posts_per_page' => (int) $count,
[119] Fix | Delete
),
[120] Fix | Delete
false,
[121] Fix | Delete
true
[122] Fix | Delete
);
[123] Fix | Delete
[124] Fix | Delete
$images = json_decode( $response->stdout );
[125] Fix | Delete
[126] Fix | Delete
if ( empty( $images ) ) {
[127] Fix | Delete
WP_CLI::success( __( 'No uncompressed images found', 'wp-smushit' ) );
[128] Fix | Delete
return;
[129] Fix | Delete
}
[130] Fix | Delete
[131] Fix | Delete
WP_CLI::success( __( 'Unsmushed images:', 'wp-smushit' ) );
[132] Fix | Delete
WP_CLI\Utils\format_items( 'table', $images, array( 'ID', 'guid', 'post_mime_type' ) );
[133] Fix | Delete
}
[134] Fix | Delete
[135] Fix | Delete
/**
[136] Fix | Delete
* Restore image.
[137] Fix | Delete
*
[138] Fix | Delete
* ## OPTIONS
[139] Fix | Delete
*
[140] Fix | Delete
* [--id=<ID>]
[141] Fix | Delete
* : Attachment ID to restore.
[142] Fix | Delete
* ---
[143] Fix | Delete
* default: all
[144] Fix | Delete
* ---
[145] Fix | Delete
*
[146] Fix | Delete
* ## EXAMPLES
[147] Fix | Delete
*
[148] Fix | Delete
* # Restore all images that have backups.
[149] Fix | Delete
* $ wp smush restore
[150] Fix | Delete
*
[151] Fix | Delete
* # Restore single image with ID = 10.
[152] Fix | Delete
* $ wp smush restore --id=10
[153] Fix | Delete
*
[154] Fix | Delete
* @param array $args All the positional arguments.
[155] Fix | Delete
* @param array $assoc_args All the arguments defined like --key=value or --flag or --no-flag.
[156] Fix | Delete
*/
[157] Fix | Delete
public function restore( $args, $assoc_args ) {
[158] Fix | Delete
$id = $assoc_args['id'];
[159] Fix | Delete
[160] Fix | Delete
if ( 'all' === $id ) {
[161] Fix | Delete
$this->restore_image();
[162] Fix | Delete
} else {
[163] Fix | Delete
$this->restore_image( absint( $id ) );
[164] Fix | Delete
}
[165] Fix | Delete
}
[166] Fix | Delete
[167] Fix | Delete
/**
[168] Fix | Delete
* Smush single image.
[169] Fix | Delete
*
[170] Fix | Delete
* @since 3.1
[171] Fix | Delete
*
[172] Fix | Delete
* @param string $msg Message for progress bar status.
[173] Fix | Delete
* @param array $images Attachment IDs.
[174] Fix | Delete
*/
[175] Fix | Delete
private function smush( $msg = '', $images = array() ) {
[176] Fix | Delete
$success = false;
[177] Fix | Delete
$errors = array();
[178] Fix | Delete
$progress = WP_CLI\Utils\make_progress_bar( $msg, count( $images ) + 1 );
[179] Fix | Delete
[180] Fix | Delete
$core = WP_Smush::get_instance()->core();
[181] Fix | Delete
[182] Fix | Delete
// We need to initialize the database module (maybe all other modules as well?).
[183] Fix | Delete
Settings::get_instance()->init();
[184] Fix | Delete
[185] Fix | Delete
$unsmushed_attachments = $core->get_unsmushed_attachments();
[186] Fix | Delete
[187] Fix | Delete
while ( $images ) {
[188] Fix | Delete
$progress->tick();
[189] Fix | Delete
[190] Fix | Delete
$attachment_id = array_pop( $images );
[191] Fix | Delete
[192] Fix | Delete
// Skip if already Smushed.
[193] Fix | Delete
$should_convert = $core->mod->webp->should_be_converted( $attachment_id );
[194] Fix | Delete
if ( ! in_array( (int) $attachment_id, $unsmushed_attachments, true ) && ! $should_convert ) {
[195] Fix | Delete
/* translators: %d - attachment ID */
[196] Fix | Delete
$errors[] = sprintf( __( 'Image (ID: %d) already compressed', 'wp-smushit' ), $attachment_id );
[197] Fix | Delete
continue;
[198] Fix | Delete
}
[199] Fix | Delete
[200] Fix | Delete
$status = $core->mod->smush->smush_single( $attachment_id, true );
[201] Fix | Delete
[202] Fix | Delete
if ( is_array( $status ) && isset( $status['error'] ) ) {
[203] Fix | Delete
/* translators: %1$d - attachment ID, %2$s - error. */
[204] Fix | Delete
$errors[] = sprintf( __( 'Error compressing image (ID: %1$d). %2$s', 'wp-smushit' ), $attachment_id, $status['error'] );
[205] Fix | Delete
continue;
[206] Fix | Delete
}
[207] Fix | Delete
[208] Fix | Delete
$success = true;
[209] Fix | Delete
}
[210] Fix | Delete
[211] Fix | Delete
$progress->tick();
[212] Fix | Delete
$progress->finish();
[213] Fix | Delete
[214] Fix | Delete
if ( ! empty( $errors ) ) {
[215] Fix | Delete
foreach ( $errors as $error ) {
[216] Fix | Delete
WP_CLI::warning( $error );
[217] Fix | Delete
}
[218] Fix | Delete
}
[219] Fix | Delete
[220] Fix | Delete
if ( $success ) {
[221] Fix | Delete
WP_CLI::success( __( 'Image compressed', 'wp-smushit' ) );
[222] Fix | Delete
}
[223] Fix | Delete
}
[224] Fix | Delete
[225] Fix | Delete
/**
[226] Fix | Delete
* Smush all uncompressed images.
[227] Fix | Delete
*
[228] Fix | Delete
* @since 3.1
[229] Fix | Delete
*
[230] Fix | Delete
* @param string $msg Message for progress bar status.
[231] Fix | Delete
* @param int $batch Compress only this number of images.
[232] Fix | Delete
*/
[233] Fix | Delete
private function smush_all( $msg, $batch = 0 ) {
[234] Fix | Delete
$attachments = WP_Smush::get_instance()->core()->get_unsmushed_attachments();
[235] Fix | Delete
[236] Fix | Delete
if ( $batch > 0 ) {
[237] Fix | Delete
$attachments = array_slice( $attachments, 0, $batch );
[238] Fix | Delete
}
[239] Fix | Delete
[240] Fix | Delete
$progress = WP_CLI\Utils\make_progress_bar( $msg, count( $attachments ) );
[241] Fix | Delete
[242] Fix | Delete
foreach ( $attachments as $attachment_id ) {
[243] Fix | Delete
WP_Smush::get_instance()->core()->mod->smush->smush_single( $attachment_id, true );
[244] Fix | Delete
$progress->tick();
[245] Fix | Delete
}
[246] Fix | Delete
[247] Fix | Delete
$progress->finish();
[248] Fix | Delete
WP_CLI::success( __( 'All images compressed', 'wp-smushit' ) );
[249] Fix | Delete
}
[250] Fix | Delete
[251] Fix | Delete
/**
[252] Fix | Delete
* Restore all images.
[253] Fix | Delete
*
[254] Fix | Delete
* @since 3.1
[255] Fix | Delete
*
[256] Fix | Delete
* @param int $id Image ID to restore. Default: 0 - restores all images.
[257] Fix | Delete
*/
[258] Fix | Delete
private function restore_image( $id = 0 ) {
[259] Fix | Delete
$core = WP_Smush::get_instance()->core();
[260] Fix | Delete
[261] Fix | Delete
$attachments = $core->get_smushed_attachments();
[262] Fix | Delete
if ( empty( $attachments ) ) {
[263] Fix | Delete
WP_CLI::success( __( 'No images available to restore', 'wp-smushit' ) );
[264] Fix | Delete
return;
[265] Fix | Delete
}
[266] Fix | Delete
[267] Fix | Delete
if ( 0 !== $id ) {
[268] Fix | Delete
if ( ! in_array( (string) $id, $attachments, true ) ) {
[269] Fix | Delete
WP_CLI::warning( __( 'Image with defined ID not found', 'wp-smushit' ) );
[270] Fix | Delete
return;
[271] Fix | Delete
}
[272] Fix | Delete
[273] Fix | Delete
$attachments = array( $id );
[274] Fix | Delete
}
[275] Fix | Delete
[276] Fix | Delete
$progress = WP_CLI\Utils\make_progress_bar( __( 'Restoring images', 'wp-smushit' ), count( $attachments ) );
[277] Fix | Delete
[278] Fix | Delete
$warning = false;
[279] Fix | Delete
foreach ( $attachments as $attachment_id ) {
[280] Fix | Delete
if ( ! $core->mod->backup->backup_exists( $attachment_id ) ) {
[281] Fix | Delete
$warning = true;
[282] Fix | Delete
[283] Fix | Delete
$warning_text = sprintf(/* translators: %d - attachment ID */
[284] Fix | Delete
esc_html__( 'Image %d cannot be restored', 'wp-smushit' ),
[285] Fix | Delete
(int) $attachment_id
[286] Fix | Delete
);
[287] Fix | Delete
WP_CLI::warning( $warning_text );
[288] Fix | Delete
$progress->tick();
[289] Fix | Delete
continue;
[290] Fix | Delete
}
[291] Fix | Delete
[292] Fix | Delete
$media_item = Media_Item_Cache::get_instance()->get( $attachment_id );
[293] Fix | Delete
$optimizer = new Media_Item_Optimizer( $media_item );
[294] Fix | Delete
$restored = $optimizer->restore();
[295] Fix | Delete
if ( ! $restored ) {
[296] Fix | Delete
$warning = true;
[297] Fix | Delete
}
[298] Fix | Delete
[299] Fix | Delete
$progress->tick();
[300] Fix | Delete
}
[301] Fix | Delete
[302] Fix | Delete
$progress->finish();
[303] Fix | Delete
[304] Fix | Delete
if ( $warning ) {
[305] Fix | Delete
WP_CLI::error( __( 'There were issues restoring some images', 'wp-smushit' ) );
[306] Fix | Delete
} else {
[307] Fix | Delete
WP_CLI::success( __( 'All images restored', 'wp-smushit' ) );
[308] Fix | Delete
}
[309] Fix | Delete
}
[310] Fix | Delete
[311] Fix | Delete
}
[312] Fix | Delete
[313] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function