SchedulingState.php in Webform Scheduled Tasks 8.2
File
src/SchedulingState.php
View source
<?php
namespace Drupal\webform_scheduled_tasks;
use Drupal\Core\State\StateInterface;
use Drupal\webform_scheduled_tasks\Entity\WebformScheduledTaskInterface;
class SchedulingState implements SchedulingStateInterface {
protected $state;
const SCHEDULE_STATE_KEY = 'webform_scheduled_tasks.scheduling_info';
const HALTED_STATE_KEY = 'webform_scheduled_tasks.halted_tasks';
public function __construct(StateInterface $state) {
$this->state = $state;
}
public function hasTimeScheduled(WebformScheduledTaskInterface $scheduledTask) {
$scheduled_times = $this->state
->get(static::SCHEDULE_STATE_KEY);
return isset($scheduled_times[$scheduledTask
->id()]);
}
public function getNextScheduledTime(WebformScheduledTaskInterface $scheduledTask) {
$scheduled_times = $this->state
->get(static::SCHEDULE_STATE_KEY);
return isset($scheduled_times[$scheduledTask
->id()]) ? $scheduled_times[$scheduledTask
->id()] : NULL;
}
public function setNextScheduledTime(WebformScheduledTaskInterface $scheduledTask, $timestamp) {
$scheduled_times = $this->state
->get(static::SCHEDULE_STATE_KEY);
$scheduled_times[$scheduledTask
->id()] = $timestamp;
$this->state
->set(static::SCHEDULE_STATE_KEY, $scheduled_times);
}
public function isHalted(WebformScheduledTaskInterface $scheduledTask) {
$halted_tasks = $this->state
->get(static::HALTED_STATE_KEY);
return isset($halted_tasks[$scheduledTask
->id()]);
}
public function getHaltedMessage(WebformScheduledTaskInterface $scheduledTask) {
if (!$this
->isHalted($scheduledTask)) {
throw new \Exception('Tried to get the halted task message from a task that is not halted.');
}
$halted_tasks = $this->state
->get(static::HALTED_STATE_KEY);
return $halted_tasks[$scheduledTask
->id()];
}
public function haltTask(WebformScheduledTaskInterface $scheduledTask, $message = '') {
$halted_tasks = $this->state
->get(static::HALTED_STATE_KEY);
$halted_tasks[$scheduledTask
->id()] = $message;
$this->state
->set(static::HALTED_STATE_KEY, $halted_tasks);
}
public function resumeTask(WebformScheduledTaskInterface $scheduledTask) {
$halted_tasks = $this->state
->get(static::HALTED_STATE_KEY);
unset($halted_tasks[$scheduledTask
->id()]);
$this->state
->set(static::HALTED_STATE_KEY, $halted_tasks);
}
}