Phase 6: WebP image conversion - Converter for Media plugin with Nginx rewrite rules
This commit is contained in:
+70
@@ -0,0 +1,70 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user