Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
CRAP
82.35% covered (warning)
82.35%
14 / 17
AbstractCronEvent
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
8.35
82.35% covered (warning)
82.35%
14 / 17
 schedule
0.00% covered (danger)
0.00%
0 / 1
8.35
82.35% covered (warning)
82.35%
14 / 17
<?php
declare(strict_types=1);
namespace Korobochkin\WPKit\Cron;
/**
 * Class AbstractCronEvent
 * @package Korobochkin\WPKit\Cron
 */
abstract class AbstractCronEvent extends AbstractCronSingleEvent
{
    use Traits\RecurrenceTrait;
    /**
     * @inheritdoc
     */
    public function schedule()
    {
        if (!is_int($this->timestamp) || $this->timestamp <= 0) {
            throw new \LogicException('You must specify valid timestamp of event before schedule.');
        }
        if (!is_string($this->name)) {
            throw new \LogicException('You must specify name for event before schedule.');
        }
        $schedules = wp_get_schedules();
        if (!array_key_exists($this->recurrence, $schedules)) {
            throw new \LogicException('Invalid recurrence name. You should register before using.');
        }
        $result = wp_schedule_event(
            $this->getTimestamp(),
            $this->getRecurrence(),
            $this->getName(),
            $this->getArgs()
        );
        if (true === $result || null === $result) {
            return $this;
        } elseif (false === $result) {
            throw new \RuntimeException('Cannot schedule or event already scheduled.');
        } else {
            throw new \RuntimeException('Unknown result from WordPress function wp_schedule_event() returned.');
        }
    }
}