diff options
| author | Frédéric Guillot <fred@kanboard.net> | 2018-04-04 15:21:13 -0700 |
|---|---|---|
| committer | Frédéric Guillot <fred@kanboard.net> | 2018-04-04 15:21:13 -0700 |
| commit | a4642d17e0e1ea018b128efdcc3db281461458b1 (patch) | |
| tree | 00210c3d0abd0adea7f8817e6ba1d82c1ea4b50e /libs/SimpleValidator/Validators/Date.php | |
| parent | 62178b1f2b4ad6ed8eafbcd3be8ef2f46b041b82 (diff) | |
Move custom libs to the source tree
Diffstat (limited to 'libs/SimpleValidator/Validators/Date.php')
| -rw-r--r-- | libs/SimpleValidator/Validators/Date.php | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/libs/SimpleValidator/Validators/Date.php b/libs/SimpleValidator/Validators/Date.php new file mode 100644 index 00000000..4ec4b7fd --- /dev/null +++ b/libs/SimpleValidator/Validators/Date.php @@ -0,0 +1,45 @@ +<?php + +namespace SimpleValidator\Validators; + +use DateTime; + +class Date extends Base +{ + private $formats = array(); + + public function __construct($field, $error_message, array $formats) + { + parent::__construct($field, $error_message); + $this->formats = $formats; + } + + public function execute(array $data) + { + if ($this->isFieldNotEmpty($data)) { + foreach ($this->formats as $format) { + if ($this->isValidDate($data[$this->field], $format)) { + return true; + } + } + + return false; + } + + 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) { + return $date->getTimestamp() > 0; + } + } + + return false; + } +} |
