1*37748cd8SNickeau<?php 2*37748cd8SNickeau 3*37748cd8SNickeaunamespace Cron; 4*37748cd8SNickeau 5*37748cd8SNickeauuse DateTime; 6*37748cd8SNickeau 7*37748cd8SNickeau/** 8*37748cd8SNickeau * Month field. Allows: * , / - 9*37748cd8SNickeau */ 10*37748cd8SNickeauclass MonthField extends AbstractField 11*37748cd8SNickeau{ 12*37748cd8SNickeau public function isSatisfiedBy(DateTime $date, $value) 13*37748cd8SNickeau { 14*37748cd8SNickeau // Convert text month values to integers 15*37748cd8SNickeau $value = str_ireplace( 16*37748cd8SNickeau array( 17*37748cd8SNickeau 'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 18*37748cd8SNickeau 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC' 19*37748cd8SNickeau ), 20*37748cd8SNickeau range(1, 12), 21*37748cd8SNickeau $value 22*37748cd8SNickeau ); 23*37748cd8SNickeau 24*37748cd8SNickeau return $this->isSatisfied($date->format('m'), $value); 25*37748cd8SNickeau } 26*37748cd8SNickeau 27*37748cd8SNickeau public function increment(DateTime $date, $invert = false) 28*37748cd8SNickeau { 29*37748cd8SNickeau if ($invert) { 30*37748cd8SNickeau $date->modify('last day of previous month'); 31*37748cd8SNickeau $date->setTime(23, 59); 32*37748cd8SNickeau } else { 33*37748cd8SNickeau $date->modify('first day of next month'); 34*37748cd8SNickeau $date->setTime(0, 0); 35*37748cd8SNickeau } 36*37748cd8SNickeau 37*37748cd8SNickeau return $this; 38*37748cd8SNickeau } 39*37748cd8SNickeau 40*37748cd8SNickeau public function validate($value) 41*37748cd8SNickeau { 42*37748cd8SNickeau return (bool) preg_match('/^[\*,\/\-0-9A-Z]+$/', $value); 43*37748cd8SNickeau } 44*37748cd8SNickeau} 45