71 lines
1.7 KiB
PHP
Executable File
71 lines
1.7 KiB
PHP
Executable File
<?php
|
|
|
|
namespace WebpConverter\Conversion\Cron;
|
|
|
|
use WebpConverter\Conversion\Format\FormatFactory;
|
|
use WebpConverter\HookableInterface;
|
|
use WebpConverter\PluginData;
|
|
use WebpConverter\Repository\TokenRepository;
|
|
use WebpConverter\Settings\Option\ExtraFeaturesOption;
|
|
|
|
/**
|
|
* Adds cron event that converts images.
|
|
*/
|
|
class CronEventGenerator implements HookableInterface {
|
|
|
|
const CRON_PATHS_ACTION = 'webpc_cron_paths';
|
|
|
|
/**
|
|
* @var PluginData
|
|
*/
|
|
private $plugin_data;
|
|
|
|
/**
|
|
* @var CronInitiator
|
|
*/
|
|
private $cron_initiator;
|
|
|
|
public function __construct(
|
|
PluginData $plugin_data,
|
|
TokenRepository $token_repository,
|
|
FormatFactory $format_factory,
|
|
?CronInitiator $cron_initiator = null
|
|
) {
|
|
$this->plugin_data = $plugin_data;
|
|
$this->cron_initiator = $cron_initiator ?: new CronInitiator( $plugin_data, $token_repository, $format_factory );
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function init_hooks() {
|
|
add_action( 'init', [ $this, 'add_cron_event' ] );
|
|
add_action( self::CRON_PATHS_ACTION, [ $this, 'get_paths_to_conversion' ] );
|
|
}
|
|
|
|
/**
|
|
* Initializes cron event to convert all images.
|
|
*
|
|
* @return void
|
|
* @internal
|
|
*/
|
|
public function add_cron_event() {
|
|
if ( wp_next_scheduled( self::CRON_PATHS_ACTION )
|
|
|| ! ( $settings = $this->plugin_data->get_plugin_settings() )
|
|
|| ! in_array( ExtraFeaturesOption::OPTION_VALUE_CRON_ENABLED, $settings[ ExtraFeaturesOption::OPTION_NAME ] ) ) {
|
|
return;
|
|
}
|
|
|
|
wp_schedule_event( time(), CronSchedulesGenerator::CRON_PATHS_SCHEDULE, self::CRON_PATHS_ACTION );
|
|
}
|
|
|
|
/**
|
|
* @return void
|
|
* @internal
|
|
*/
|
|
public function get_paths_to_conversion() {
|
|
$this->cron_initiator->refresh_paths_to_conversion();
|
|
$this->cron_initiator->init_conversion();
|
|
}
|
|
}
|