vate function validate_array_and_quote( array $items ) {
$items_array = array_filter( $items, 'is_string' );
return array_map(
static function ( $item ) {
return preg_quote( $item, '/' );
},
$items_array
);
}
/**
* Check if database has at least one completed row.
*
* @return bool
*/
public function has_one_completed_row_at_least() {
return $this->used_css_query->get_completed_count() > 0;
}
/**
* Process on submit jobs.
*
* @return void
*/
public function process_on_submit_jobs() {
if ( ! $this->is_enabled() ) {
$this->logger::debug( 'RUCSS: Stop processing cron iteration because option is disabled.' );
return;
}
/**
* Pending rows cont.
*
* @param int $count Number of rows.
*/
$pending_job = (int) apply_filters( 'rocket_rucss_pending_jobs_cron_rows_count', 100 );
/**
* Maximum processing rows.
*
* @param int $max Max processing rows.
*/
$max_pending_rows = (int) apply_filters( 'rocket_rucss_max_pending_jobs', 3 * $pending_job, $pending_job );
$rows = $this->used_css_query->get_on_submit_jobs( $max_pending_rows );
foreach ( $rows as $row ) {
$response = $this->send_api( $row->url, (bool) $row->is_mobile );
if ( false === $response || ! isset( $response['contents'], $response['contents']['jobId'], $response['contents']['queueName'] ) ) {
$this->used_css_query->make_status_failed( (int) $row->id, '', '' );
continue;
}
/**
* Lock preload URL.
*
* @param string $url URL to lock
*/
do_action( 'rocket_preload_lock_url', $row->url );
$this->used_css_query->make_status_pending(
(int) $row->id,
$response['contents']['jobId'],
$response['contents']['queueName'],
(bool) $row->is_mobile
);
}
}
/**
* Send the job to the API.
*
* @param string $url URL to work on.
* @param bool $is_mobile Is the page for mobile.
* @return array|false
*/
protected function send_api( string $url, bool $is_mobile ) {
/**
* Filters the RUCSS safelist
*
* @since 3.11
*
* @param array $safelist Array of safelist values.
*/
$safelist = apply_filters( 'rocket_rucss_safelist', $this->options->get( 'remove_unused_css_safelist', [] ) );
/**
* Filters the styles attributes to be skipped (blocked) by RUCSS.
*
* @since 3.14
*
* @param array $skipped_attr Array of safelist values.
*/
$skipped_attr = apply_filters( 'rocket_rucss_skip_styles_with_attr', [] );
$skipped_attr = ( is_array( $skipped_attr ) ) ? $skipped_attr : [];
$config = [
'treeshake' => 1,
'rucss_safelist' => $safelist,
'skip_attr' => $skipped_attr,
'is_mobile' => $is_mobile,
'is_home' => $this->is_home( $url ),
];
$add_to_queue_response = $this->api->add_to_queue( $url, $config );
if ( 200 !== $add_to_queue_response['code'] ) {
$this->logger::error(
'Error when contacting the RUCSS API.',
[
'rucss error',
'url' => $url,
'code' => $add_to_queue_response['code'],
'message' => $add_to_queue_response['message'],
]
);
return false;
}
return $add_to_queue_response;
}
}
Fatal error: Uncaught TypeError: Argument 3 passed to WP_Rocket\Engine\Optimization\RUCSS\Admin\Subscriber::__construct() must be an instance of WP_Rocket\Engine\Optimization\RUCSS\Controller\UsedCSS, string given in /home/merciket/public_html/wp-content/plugins/wp-rocket/inc/Engine/Optimization/RUCSS/Admin/Subscriber.php:49
Stack trace:
#0 [internal function]: WP_Rocket\Engine\Optimization\RUCSS\Admin\Subscriber->__construct(Object(WP_Rocket\Engine\Optimization\RUCSS\Admin\Settings), Object(WP_Rocket\Engine\Optimization\RUCSS\Admin\Database), 'WP_Rocket\\Engin...', Object(WP_Rocket\Engine\Optimization\RUCSS\Controller\Queue))
#1 /home/merciket/public_html/wp-content/plugins/wp-rocket/inc/Dependencies/League/Container/Definition/Definition.php(256): ReflectionClass->newInstanceArgs(Array)
#2 /home/merciket/public_html/wp-content/plugins/wp-rocket/inc/Dependencies/League/Container/Definition/Definition.php(212): WP_Rocket\Dependencies\League\Container\Definition\Definition->resolveClass('WP_Rocket\\Engin...')
#3 /home/merc in /home/merciket/public_html/wp-content/plugins/wp-rocket/inc/Engine/Optimization/RUCSS/Admin/Subscriber.php on line 49