| | <?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 === false || |
| | $errors['error_count'] === 0 && $errors['warning_count'] === 0) { |
| | return $date->getTimestamp() > 0; |
| | } |
| | } |
| |
|
| | return false; |
| | } |
| | } |
| |
|