Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 14 |
AutomatedCron | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
30 | |
0.00% |
0 / 14 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
onTerminate | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 8 |
|||
getSubscribedEvents | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\automated_cron\EventSubscriber\AutomatedCron. | |
*/ | |
namespace Drupal\automated_cron\EventSubscriber; | |
use Drupal\Core\Config\ConfigFactoryInterface; | |
use Drupal\Core\CronInterface; | |
use Drupal\Core\State\StateInterface; | |
use Symfony\Component\EventDispatcher\EventSubscriberInterface; | |
use Symfony\Component\HttpKernel\Event\PostResponseEvent; | |
use Symfony\Component\HttpKernel\KernelEvents; | |
/** | |
* A subscriber running cron after a response is sent. | |
*/ | |
class AutomatedCron implements EventSubscriberInterface { | |
/** | |
* The cron service. | |
* | |
* @var \Drupal\Core\CronInterface | |
*/ | |
protected $cron; | |
/** | |
* The cron configuration. | |
* | |
* @var \Drupal\Core\Config\Config | |
*/ | |
protected $config; | |
/** | |
* The state key value store. | |
* | |
* @var \Drupal\Core\State\StateInterface; | |
*/ | |
protected $state; | |
/** | |
* Constructs a new automated cron runner. | |
* | |
* @param \Drupal\Core\CronInterface $cron | |
* The cron service. | |
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory | |
* The config factory. | |
* @param \Drupal\Core\State\StateInterface $state | |
* The state key-value store service. | |
*/ | |
public function __construct(CronInterface $cron, ConfigFactoryInterface $config_factory, StateInterface $state) { | |
$this->cron = $cron; | |
$this->config = $config_factory->get('automated_cron.settings'); | |
$this->state = $state; | |
} | |
/** | |
* Run the automated cron if enabled. | |
* | |
* @param \Symfony\Component\HttpKernel\Event\PostResponseEvent $event | |
* The Event to process. | |
*/ | |
public function onTerminate(PostResponseEvent $event) { | |
$interval = $this->config->get('interval'); | |
if ($interval > 0) { | |
$cron_next = $this->state->get('system.cron_last', 0) + $interval; | |
if ((int) $event->getRequest()->server->get('REQUEST_TIME') > $cron_next) { | |
$this->cron->run(); | |
} | |
} | |
} | |
/** | |
* Registers the methods in this class that should be listeners. | |
* | |
* @return array | |
* An array of event listener definitions. | |
*/ | |
public static function getSubscribedEvents() { | |
return [KernelEvents::TERMINATE => [['onTerminate', 100]]]; | |
} | |
} |