File: /var/www/delta/wp-content/plugins/wp-smushit/core/media/class-media-item-controller.php
<?php
namespace Smush\Core\Media;
use Smush\Core\Controller;
use Smush\Core\Error_Handler;
use Smush\Core\Helper;
use Smush\Core\Stats\Global_Stats;
use WP_Smush;
/**
 * Performs operations on the media item
 */
class Media_Item_Controller extends Controller {
	public function __construct() {
		$this->register_action( 'wp_ajax_ignore_bulk_image', array( $this, 'ignore_bulk_image' ) );
		$this->register_action( 'wp_ajax_remove_from_skip_list', array( $this, 'remove_from_skip_list' ) );
		$this->register_action( 'wp_ajax_wp_smush_ignore_all_failed_items', array(
			$this,
			'ignore_all_failed_items',
		) );
	}
	public function remove_from_skip_list() {
		check_ajax_referer( 'wp-smush-remove-skipped' );
		if ( ! Helper::is_user_allowed( 'upload_files' ) ) {
			wp_send_json_error( array(
				'error_message' => esc_html__( "You don't have permission to work with uploaded files.", 'wp-smushit' ),
			), 403 );
		}
		if ( ! isset( $_POST['id'] ) ) {
			wp_send_json_error();
		}
		$attachment_id = absint( $_POST['id'] );
		$changed = $this->change_attachment_ignored_status( $attachment_id, false );
		if ( ! $changed ) {
			wp_send_json_error();
		}
		wp_send_json_success(
			array(
				'html' => WP_Smush::get_instance()->library()->generate_markup( $attachment_id ),
			)
		);
	}
	public function ignore_bulk_image() {
		check_ajax_referer( 'wp-smush-ajax' );
		if ( ! Helper::is_user_allowed( 'upload_files' ) ) {
			wp_send_json_error( array(
				'error_msg' => esc_html__( "You don't have permission to work with uploaded files.", 'wp-smushit' ),
			), 403 );
		}
		if ( ! isset( $_POST['id'] ) ) {
			wp_send_json_error();
		}
		$attachment_id = absint( $_POST['id'] );
		$changed       = $this->change_attachment_ignored_status( $attachment_id, true );
		if ( ! $changed ) {
			wp_send_json_error();
		}
		wp_send_json_success( array(
			'html' => WP_Smush::get_instance()->library()->generate_markup( $attachment_id ),
		) );
	}
	public function ignore_all_failed_items() {
		check_ajax_referer( 'wp-smush-ajax' );
		if ( ! Helper::is_user_allowed() ) {
			wp_send_json_error( array(
				'message' => __( "You don't have permission to do this.", 'wp-smushit' ),
			), 403 );
		}
		$failed_images = Error_Handler::get_all_failed_images();
		if ( empty( $failed_images ) ) {
			wp_send_json_error( array( 'message' => __( 'Not found any failed items.', 'wp-smushit' ) ) );
		}
		foreach ( $failed_images as $failed_image_id ) {
			$this->change_attachment_ignored_status( $failed_image_id, true );
		}
		wp_send_json_success();
	}
	private function change_attachment_ignored_status( $attachment_id, $new_status ) {
		$media_item = Media_Item_Cache::get_instance()->get( $attachment_id );
		if ( ! $media_item->is_mime_type_supported() ) {
			return false;
		}
		$media_item->set_ignored( $new_status );
		$media_item->save();
		do_action( 'wp_smush_attachment_ignored_status_changed', $attachment_id, $new_status );
		return true;
	}
}