/** * checkDatetimeType * * @param array $question question * @param string $answer answer value * @return array error message */ public function checkDatetimeType($question, $answer) { $errors = array(); if ($question['question_type_option'] == QuestionnairesComponent::TYPE_OPTION_DATE) { if (!Validation::date($answer, 'ymd')) { $errors[] = sprintf(__d('questionnaires', 'Please enter a valid date in YY-MM-DD format.')); } } elseif ($question['question_type_option'] == QuestionnairesComponent::TYPE_OPTION_TIME) { if (!Validation::time($answer)) { $errors[] = sprintf(__d('questionnaires', 'Please enter the time.')); } } elseif ($question['question_type_option'] == QuestionnairesComponent::TYPE_OPTION_DATE_TIME) { if (!Validation::datetime($answer, 'ymd')) { $errors[] = sprintf(__d('questionnaires', 'Please enter a valid date and time.')); } } return $errors; }
/** * _validateDatetime 日付・時間の正当性 * * @param object &$model use model * @param int $questionTypeOption 時間・日付オプション * @param string $answer 登録データ * @return bool */ protected function _validateDatetime(&$model, $questionTypeOption, $answer) { if ($questionTypeOption == RegistrationsComponent::TYPE_OPTION_DATE) { if (!Validation::date($answer, 'ymd')) { $model->validationErrors['answer_value'][] = __d('registrations', 'Please enter a valid date in YY-MM-DD format.'); return false; } } elseif ($questionTypeOption == RegistrationsComponent::TYPE_OPTION_TIME) { if (!Validation::time($answer)) { $model->validationErrors['answer_value'][] = __d('registrations', 'Please enter the time.'); return false; } } elseif ($questionTypeOption == RegistrationsComponent::TYPE_OPTION_DATE_TIME) { if (!Validation::datetime($answer, 'ymd')) { $model->validationErrors['answer_value'][] = __d('registrations', 'Please enter a valid date and time.'); return false; } } else { $model->validationErrors['answer_value'][] = __d('net_commons', 'Invalid request.'); return false; } return true; }
/** * testTime method * * @return void */ public function testTime() { $this->assertTrue(Validation::time('00:00')); $this->assertTrue(Validation::time('23:59')); $this->assertFalse(Validation::time('24:00')); $this->assertTrue(Validation::time('12:00')); $this->assertTrue(Validation::time('12:01')); $this->assertTrue(Validation::time('12:01am')); $this->assertTrue(Validation::time('12:01pm')); $this->assertTrue(Validation::time('1pm')); $this->assertTrue(Validation::time('1 pm')); $this->assertTrue(Validation::time('1 PM')); $this->assertTrue(Validation::time('01:00')); $this->assertFalse(Validation::time('1:00')); $this->assertTrue(Validation::time('1:00pm')); $this->assertFalse(Validation::time('13:00pm')); $this->assertFalse(Validation::time('9:00')); }
/** * Validates a datetime value by acting as a decorator for native * Validation::date() and Validation::time() methods. * * @param $check array field_name => value * @param $options array Options for this rule * @return boolean * @access public */ public function datetime($check, $options) { $check = array_shift(array_values($check)); $datetime = strtotime($check); if ($datetime !== false) { return Validation::date(date('Y-m-d', $datetime), 'ymd') && Validation::time(date('H:i', $datetime)); } return false; }
/** * @testdox time should return true to 12 hours format without leading zero */ public function testValidTimeWith12Hours2() { $value = '6:00pm'; $this->assertTrue(Validation::time($value)); }
/** * @param options * - timeFormat (defaults to 'hms') * - allowEmpty * - after/before (fieldName to validate against) * - min/max (defaults to >= 1 - at least 1 minute apart) * 2011-03-02 ms */ public function validateTime($data, $options = array()) { if (is_array($data)) { $value = array_shift($data); } else { $value = $data; } $dateTime = explode(' ', trim($value), 2); $value = array_pop($dateTime); if (Validation::time($value)) { # after/before? if (!empty($options['after']) && isset($this->data[$this->alias][$options['after']])) { if ($this->data[$this->alias][$options['after']] >= $value) { return false; } } if (!empty($options['before']) && isset($this->data[$this->alias][$options['before']])) { if ($this->data[$this->alias][$options['before']] <= $value) { return false; } } return true; } return false; }