Example #1
0
 /**
  * checks if given value is a valid ISO-8601 timestamp (YYYY-MM-DDTHH:MM:SS+00:00)
  *
  * @param mixed $value
  * @return boolean
  */
 public function validate($value)
 {
     if (is_null($value)) {
         return true;
     }
     $e = explode('T', trim($value));
     $date = isset($e[0]) ? $e[0] : null;
     $time = isset($e[1]) ? $e[1] : null;
     $dateValidator = Doctrine_Validator::getValidator('date');
     $timeValidator = Doctrine_Validator::getValidator('time');
     if (!$dateValidator->validate($date)) {
         return false;
     }
     if (!$timeValidator->validate($time)) {
         return false;
     }
     return true;
 }
Example #2
0
 /**
  * checks if given value is a valid timestamp
  * ISO-8601 timestamp (YYYY-MM-DDTHH:MM:SS+00:00) or (YYYY-MM-DD HH:MM:SS)
  *
  * @param mixed $value
  * @return boolean
  */
 public function validate($value)
 {
     if (is_null($value)) {
         return true;
     }
     $splitChar = false !== strpos($value, 'T') ? 'T' : ' ';
     $e = explode($splitChar, trim($value));
     $date = isset($e[0]) ? $e[0] : null;
     $time = isset($e[1]) ? $e[1] : null;
     $dateValidator = Doctrine_Validator::getValidator('date');
     $timeValidator = Doctrine_Validator::getValidator('time');
     if (!$dateValidator->validate($date)) {
         return false;
     }
     if (!$timeValidator->validate($time)) {
         return false;
     }
     return true;
 }
Example #3
0
 /**
  * checks if given value is a valid timestamp (YYYY-MM-DD HH:MM:SS)
  *
  * @param mixed $value
  * @return boolean
  */
 public function validate($value)
 {
     if ($value === null) {
         return true;
     }
     if (!preg_match('/^ *\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(.\\d{6}\\+\\d{2})? *$/', $value)) {
         return false;
     }
     list($date, $time) = explode(' ', trim($value));
     $dateValidator = Doctrine_Validator::getValidator('date');
     $timeValidator = Doctrine_Validator::getValidator('time');
     if (!$dateValidator->validate($date)) {
         return false;
     }
     if (!$timeValidator->validate($time)) {
         return false;
     }
     return true;
 }
Example #4
0
 /**
  * validateField
  *
  * @param string $name
  * @param string $value
  * @param Doctrine_Record $record
  * @return Doctrine_Validator_ErrorStack $errorStack
  */
 public function validateField($fieldName, $value, Doctrine_Record $record = null)
 {
     if ($record instanceof Doctrine_Record) {
         $errorStack = $record->getErrorStack();
     } else {
         $record = $this->create();
         $errorStack = new Doctrine_Validator_ErrorStack($this->getOption('name'));
     }
     if ($value === self::$_null) {
         $value = null;
     } else {
         if ($value instanceof Doctrine_Record && $value->exists()) {
             $value = $value->getIncremented();
         } else {
             if ($value instanceof Doctrine_Record && !$value->exists()) {
                 foreach ($this->getRelations() as $relation) {
                     if ($fieldName == $relation->getLocalFieldName() && (get_class($value) == $relation->getClass() || is_subclass_of($value, $relation->getClass()))) {
                         return $errorStack;
                     }
                 }
             }
         }
     }
     $dataType = $this->getTypeOf($fieldName);
     // Validate field type, if type validation is enabled
     if ($this->getAttribute(Doctrine::ATTR_VALIDATE) & Doctrine::VALIDATE_TYPES) {
         if (!Doctrine_Validator::isValidType($value, $dataType)) {
             $errorStack->add($fieldName, 'type');
         }
         if ($dataType == 'enum') {
             $enumIndex = $this->enumIndex($fieldName, $value);
             if ($enumIndex === false && $value !== null) {
                 $errorStack->add($fieldName, 'enum');
             }
         }
     }
     // Validate field length, if length validation is enabled
     if ($this->getAttribute(Doctrine::ATTR_VALIDATE) & Doctrine::VALIDATE_LENGTHS) {
         if (!Doctrine_Validator::validateLength($value, $dataType, $this->getFieldLength($fieldName))) {
             $errorStack->add($fieldName, 'length');
         }
     }
     // Run all custom validators
     foreach ($this->getFieldValidators($fieldName) as $validatorName => $args) {
         if (!is_string($validatorName)) {
             $validatorName = $args;
             $args = array();
         }
         $validator = Doctrine_Validator::getValidator($validatorName);
         $validator->invoker = $record;
         $validator->field = $fieldName;
         $validator->args = $args;
         if (!$validator->validate($value)) {
             $errorStack->add($fieldName, $validator);
         }
     }
     return $errorStack;
 }
Example #5
0
 /**
  * Validates all the unique indexes.
  *
  * This methods validates 'unique' sets of fields for the given Doctrine_Record instance.
  * Pushes error to the record error stack if they are generated.
  *
  * @param Doctrine_Record $record
  */
 public function validateUniques(Doctrine_Record $record)
 {
     $errorStack = $record->getErrorStack();
     $validator = Doctrine_Validator::getValidator('unique');
     $validator->invoker = $record;
     foreach ($this->_uniques as $unique) {
         list($fields, $options) = $unique;
         $validator->args = $options;
         $validator->field = $fields;
         $values = array();
         foreach ($fields as $field) {
             $values[] = $record->{$field};
         }
         if (!$validator->validate($values)) {
             foreach ($fields as $field) {
                 $errorStack->add($field, $validator);
             }
         }
     }
 }
Example #6
0
 public function testMysqlTimestamp()
 {
     $timestamp = '2010-03-02 22:08:56';
     $timestampValidator = Doctrine_Validator::getValidator('timestamp');
     $this->assertTrue($timestampValidator->validate($timestamp));
 }