xref: /plugin/combo/vendor/dragonmantank/cron-expression/src/Cron/YearField.php (revision 37748cd8654635afbeca80942126742f0f4cc346)
1*37748cd8SNickeau<?php
2*37748cd8SNickeau
3*37748cd8SNickeaunamespace Cron;
4*37748cd8SNickeau
5*37748cd8SNickeauuse DateTime;
6*37748cd8SNickeau
7*37748cd8SNickeau
8*37748cd8SNickeau/**
9*37748cd8SNickeau * Year field.  Allows: * , / -
10*37748cd8SNickeau */
11*37748cd8SNickeauclass YearField extends AbstractField
12*37748cd8SNickeau{
13*37748cd8SNickeau    public function isSatisfiedBy(DateTime $date, $value)
14*37748cd8SNickeau    {
15*37748cd8SNickeau        return $this->isSatisfied($date->format('Y'), $value);
16*37748cd8SNickeau    }
17*37748cd8SNickeau
18*37748cd8SNickeau    public function increment(DateTime $date, $invert = false)
19*37748cd8SNickeau    {
20*37748cd8SNickeau        if ($invert) {
21*37748cd8SNickeau            $date->modify('-1 year');
22*37748cd8SNickeau            $date->setDate($date->format('Y'), 12, 31);
23*37748cd8SNickeau            $date->setTime(23, 59, 0);
24*37748cd8SNickeau        } else {
25*37748cd8SNickeau            $date->modify('+1 year');
26*37748cd8SNickeau            $date->setDate($date->format('Y'), 1, 1);
27*37748cd8SNickeau            $date->setTime(0, 0, 0);
28*37748cd8SNickeau        }
29*37748cd8SNickeau
30*37748cd8SNickeau        return $this;
31*37748cd8SNickeau    }
32*37748cd8SNickeau
33*37748cd8SNickeau    public function validate($value)
34*37748cd8SNickeau    {
35*37748cd8SNickeau        return (bool) preg_match('/^[\*,\/\-0-9]+$/', $value);
36*37748cd8SNickeau    }
37*37748cd8SNickeau}
38