/** * answerValidation 登録内容の正当性 * * @param object &$model use model * @param array $data Validation対象データ * @param array $question 登録データに対応する項目 * @param array $allAnswers 入力された登録すべて * @return bool */ public function answerTextValidation(&$model, $data, $question, $allAnswers) { if (!in_array($question['question_type'], $this->_textValidateType)) { return true; } $ret = true; // 数値型登録を望まれている場合 if ($question['question_type_option'] == RegistrationsComponent::TYPE_OPTION_NUMERIC) { if (!Validation::numeric($data['answer_value'])) { $ret = false; $model->validationErrors['answer_value'][] = __d('registrations', 'Number required'); } if ($question['is_range'] == RegistrationsComponent::USES_USE) { $rangeRes = Validation::range($data['answer_value'], intval($question['min']), intval($question['max'])); if (!$rangeRes) { $ret = false; $model->validationErrors['answer_value'][] = sprintf(__d('registrations', 'Please enter the answer between %s and %s.'), $question['min'], $question['max']); } } } else { if ($question['is_range'] == RegistrationsComponent::USES_USE) { if (!Validation::minLength($data['answer_value'], intval($question['min'])) || !Validation::maxLength($data['answer_value'], intval($question['max']))) { $ret = false; $model->validationErrors['answer_value'][] = sprintf(__d('registrations', 'Please enter the answer between %s letters and %s letters.'), $question['min'], $question['max']); } } } return $ret; }
/** * checkNumericType * * @param array $question question * @param string $answer answer value * @return array error message */ public function checkNumericType($question, $answer) { $errors = array(); // 数値タイプの場合、数値型であるか // 下限上限に引っかかってないか if ($question['question_type_option'] == QuestionnairesComponent::TYPE_OPTION_NUMERIC) { $chk = Validation::numeric($answer); if (!$chk) { $errors[] = __d('questionnaires', 'Number required'); } } return $errors; }
/** * testNumeric method * * @return void */ public function testNumeric() { $this->assertFalse(Validation::numeric('teststring')); $this->assertFalse(Validation::numeric('1.1test')); $this->assertFalse(Validation::numeric('2test')); $this->assertTrue(Validation::numeric('2')); $this->assertTrue(Validation::numeric(2)); $this->assertTrue(Validation::numeric(2.2)); $this->assertTrue(Validation::numeric('2.2')); }
/** * @testdox numeric should return false to invalid numbers */ public function testInvalidNumeric() { $value = '+-42.0asd53e25'; $this->assertFalse(Validation::numeric($value)); }
/** * __checkMinMaxNumeric * min and max is require both value * * @param object &$model use model * @param bool $check post data * @return bool */ private function __checkMinMaxNumeric(&$model, $check) { if ($model->data['QuestionnaireQuestion']['question_type_option'] == QuestionnairesComponent::TYPE_OPTION_NUMERIC) { if (!Validation::numeric($model->data['QuestionnaireQuestion']['min'])) { return false; } if (!Validation::numeric($model->data['QuestionnaireQuestion']['max'])) { return false; } } return true; }
/** * * * @param integer|string $check * @param string $type * @return void */ public function assertId($check, $type = 'uuid') { switch ($type) { case 'numeric': $check = Validation::numeric($check); break; default: $check = Validation::uuid($check); $type = strtoupper($type); } if (!$check) { parent::fail("Failed asserting that '{$check}' is a valid {$type} primary key."); } $this->addToAssertionCount(1); }
/** * formatNumeric * jpn: AdditionalValidationPatternsBehavior用にemptyのときはtrue * */ public function formatNumeric(Model $model, $field) { $value = array_shift($field); if (!Validation::notEmpty($value)) { return true; } return Validation::numeric($value); }