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/backups
File: class-backups-controller.php
<?php
[0] Fix | Delete
[1] Fix | Delete
namespace Smush\Core\Backups;
[2] Fix | Delete
[3] Fix | Delete
use Smush\Core\Controller;
[4] Fix | Delete
use Smush\Core\Core;
[5] Fix | Delete
use Smush\Core\File_System;
[6] Fix | Delete
use Smush\Core\Helper;
[7] Fix | Delete
use Smush\Core\Media\Media_Item_Cache;
[8] Fix | Delete
use Smush\Core\Media\Media_Item_Optimizer;
[9] Fix | Delete
use WP_Smush;
[10] Fix | Delete
[11] Fix | Delete
class Backups_Controller extends Controller {
[12] Fix | Delete
/**
[13] Fix | Delete
* @var Media_Item_Cache
[14] Fix | Delete
*/
[15] Fix | Delete
private $media_item_cache;
[16] Fix | Delete
/**
[17] Fix | Delete
* @var \WDEV_Logger|null
[18] Fix | Delete
*/
[19] Fix | Delete
private $logger;
[20] Fix | Delete
/**
[21] Fix | Delete
* @var File_System
[22] Fix | Delete
*/
[23] Fix | Delete
private $fs;
[24] Fix | Delete
[25] Fix | Delete
public function __construct() {
[26] Fix | Delete
$this->media_item_cache = Media_Item_Cache::get_instance();
[27] Fix | Delete
$this->logger = Helper::logger();
[28] Fix | Delete
$this->fs = new File_System();
[29] Fix | Delete
[30] Fix | Delete
$this->register_action( 'wp_ajax_smush_restore_image', array( $this, 'handle_restore_ajax' ) );
[31] Fix | Delete
$this->register_action( 'delete_attachment', array( $this, 'delete_backup_file' ) );
[32] Fix | Delete
}
[33] Fix | Delete
[34] Fix | Delete
public function handle_restore_ajax() {
[35] Fix | Delete
if ( empty( $_POST['attachment_id'] ) || empty( $_POST['_nonce'] ) ) {
[36] Fix | Delete
wp_send_json_error( array(
[37] Fix | Delete
'error_msg' => esc_html__( 'Error in processing restore action, fields empty.', 'wp-smushit' ),
[38] Fix | Delete
) );
[39] Fix | Delete
}
[40] Fix | Delete
[41] Fix | Delete
$nonce_value = filter_input( INPUT_POST, '_nonce', FILTER_SANITIZE_SPECIAL_CHARS );
[42] Fix | Delete
$attachment_id = filter_input( INPUT_POST, 'attachment_id', FILTER_SANITIZE_NUMBER_INT );
[43] Fix | Delete
[44] Fix | Delete
if ( ! wp_verify_nonce( $nonce_value, "wp-smush-restore-$attachment_id" ) ) {
[45] Fix | Delete
wp_send_json_error( array(
[46] Fix | Delete
'error_msg' => esc_html__( 'Image not restored, nonce verification failed.', 'wp-smushit' ),
[47] Fix | Delete
) );
[48] Fix | Delete
}
[49] Fix | Delete
[50] Fix | Delete
// Check capability.
[51] Fix | Delete
// TODO: change Helper::is_user_allowed to a non static method
[52] Fix | Delete
if ( ! Helper::is_user_allowed( 'upload_files' ) ) {
[53] Fix | Delete
wp_send_json_error( array(
[54] Fix | Delete
'error_msg' => esc_html__( "You don't have permission to work with uploaded files.", 'wp-smushit' ),
[55] Fix | Delete
) );
[56] Fix | Delete
}
[57] Fix | Delete
[58] Fix | Delete
$attachment_id = (int) $attachment_id;
[59] Fix | Delete
$media_item = Media_Item_Cache::get_instance()->get( $attachment_id );
[60] Fix | Delete
if ( ! $media_item->is_mime_type_supported() ) {
[61] Fix | Delete
wp_send_json_error( array(
[62] Fix | Delete
'error_msg' => $media_item->get_errors()->get_error_message(),
[63] Fix | Delete
) );
[64] Fix | Delete
}
[65] Fix | Delete
[66] Fix | Delete
$optimizer = new Media_Item_Optimizer( $media_item );
[67] Fix | Delete
$restored = $optimizer->restore();
[68] Fix | Delete
[69] Fix | Delete
if ( ! $restored ) {
[70] Fix | Delete
wp_send_json_error( array(
[71] Fix | Delete
'error_msg' => esc_html__( 'Unable to restore image', 'wp-smushit' ),
[72] Fix | Delete
) );
[73] Fix | Delete
}
[74] Fix | Delete
[75] Fix | Delete
$button_html = WP_Smush::get_instance()->library()->generate_markup( $attachment_id );
[76] Fix | Delete
$file_path = $media_item->get_main_size()->get_file_path();
[77] Fix | Delete
$size = $this->fs->file_exists( $file_path )
[78] Fix | Delete
? $this->fs->filesize( $file_path )
[79] Fix | Delete
: 0;
[80] Fix | Delete
if ( $size > 0 ) {
[81] Fix | Delete
$update_size = size_format( $size );
[82] Fix | Delete
}
[83] Fix | Delete
[84] Fix | Delete
wp_send_json_success( array(
[85] Fix | Delete
'stats' => $button_html,
[86] Fix | Delete
'new_size' => isset( $update_size ) ? $update_size : 0,
[87] Fix | Delete
) );
[88] Fix | Delete
}
[89] Fix | Delete
[90] Fix | Delete
public function delete_backup_file( $attachment_id ) {
[91] Fix | Delete
$media_item = $this->media_item_cache->get( $attachment_id );
[92] Fix | Delete
if ( $media_item->is_valid() && $media_item->get_default_backup_size() ) {
[93] Fix | Delete
// Delete the file
[94] Fix | Delete
$default_backup_path = $media_item->get_default_backup_size()->get_file_path();
[95] Fix | Delete
if ( $this->fs->file_exists( $default_backup_path ) ) {
[96] Fix | Delete
$this->fs->unlink( $default_backup_path );
[97] Fix | Delete
}
[98] Fix | Delete
[99] Fix | Delete
// Delete the meta
[100] Fix | Delete
$media_item->remove_default_backup_size();
[101] Fix | Delete
$media_item->save();
[102] Fix | Delete
} else {
[103] Fix | Delete
$this->logger->error( sprintf( 'Count not delete webp versions of the media item [%d]', $attachment_id ) );
[104] Fix | Delete
}
[105] Fix | Delete
}
[106] Fix | Delete
}
[107] Fix | Delete
[108] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function