: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
* @package Smush\Core\Modules\Async
* @author Umesh Kumar <umesh@incsub.com>
* @copyright (c) 2016, Incsub (http://incsub.com)
namespace Smush\Core\Modules\Async;
if ( ! defined( 'WPINC' ) ) {
class Async extends Abstract_Async {
* @var int $argument_count
protected $argument_count = 2;
protected $priority = 12;
* Whenever a attachment metadata is generated
* Had to be hooked on generate and not update, else it goes in infinite loop
protected $action = 'wp_generate_attachment_metadata';
* Prepare data for the asynchronous request
* @throws Exception If for any reason the request should not happen.
* @param array $data An array of data sent to the hook.
protected function prepare_data( $data ) {
// We don't have the data, bail out.
// Return a associative array.
$image_meta['metadata'] = ! empty( $data[0] ) ? $data[0] : '';
$image_meta['id'] = ! empty( $data[1] ) ? $data[1] : '';
* AJAX Thumbnail Rebuild integration.
* @see https://app.asana.com/0/14491813218786/730814863045197/f
if ( ! empty( $_POST['action'] ) && 'ajax_thumbnail_rebuild' === $_POST['action'] && ! empty( $_POST['thumbnails'] ) ) { // Input var ok.
$image_meta['regen'] = wp_unslash( $_POST['thumbnails'] ); // Input var ok.
* Run the async task action
* TODO: See if auto smush is enabled or not.
* TODO: Check if async is enabled or not.
protected function run_action() {
// Nonce validated in parent method.
$id = ! empty( $_POST['id'] ) ? (int) $_POST['id'] : ''; // phpcs:ignore WordPress.Security.NonceVerification.Missing
// Get metadata from $_POST.
if ( ! empty( $_POST['metadata'] ) && wp_attachment_is_image( $id ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
// Allow the Asynchronous task to run.
do_action( "wp_async_$this->action", $id );
protected function should_run( $data ) {
if ( empty( $data['metadata'] ) && empty( $data['id'] ) ) {
$attachment_id = $data['id'];
$smush = WP_Smush::get_instance()->core()->mod->smush;
return $smush->should_auto_smush( $attachment_id );