diff options
Diffstat (limited to 'vendor/SimpleValidator/Validators')
-rw-r--r-- | vendor/SimpleValidator/Validators/Date.php | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/vendor/SimpleValidator/Validators/Date.php b/vendor/SimpleValidator/Validators/Date.php index 36b59fbe..54c949b0 100644 --- a/vendor/SimpleValidator/Validators/Date.php +++ b/vendor/SimpleValidator/Validators/Date.php @@ -3,26 +3,26 @@ namespace SimpleValidator\Validators; use SimpleValidator\Base; +use \DateTime; class Date extends Base { - private $format; + private $formats = array(); - public function __construct($field, $error_message, $format) + public function __construct($field, $error_message, array $formats) { parent::__construct($field, $error_message); - $this->format = $format; + $this->formats = $formats; } public function execute(array $data) { if (isset($data[$this->field]) && $data[$this->field] !== '') { - $date = \DateTime::createFromFormat($this->format, $data[$this->field]); - - if ($date !== false) { - $errors = \DateTime::getLastErrors(); - return $errors['error_count'] === 0 && $errors['warning_count'] === 0; + foreach ($this->formats as $format) { + if ($this->isValidDate($data[$this->field], $format) === true) { + return true; + } } return false; @@ -30,4 +30,19 @@ class Date extends Base return true; } + + public function isValidDate($value, $format) + { + $date = DateTime::createFromFormat($format, $value); + + if ($date !== false) { + $errors = DateTime::getLastErrors(); + if ($errors['error_count'] === 0 && $errors['warning_count'] === 0) { + $timestamp = $date->getTimestamp(); + return $timestamp > 0 ? true : false; + } + } + + return false; + } } |