Example #1
0
 /**
  * Return if the values are valid or not.
  *
  * @return boolean True for valid.
  */
 public function recordValidate(Phprojekt_ActiveRecord_Abstract $class, $data, $fields)
 {
     $valid = true;
     foreach ($data as $varname => $value) {
         if ($class->hasField($varname)) {
             // Validate with the database_manager stuff
             foreach ($fields as $field) {
                 if ($field['key'] == $varname) {
                     // Check required
                     if (true === $field['required']) {
                         $error = $this->validateIsRequired($value);
                         if (null !== $error) {
                             $valid = false;
                             $this->error->addError(array('field' => $varname, 'label' => $field['label'], 'message' => $error));
                             break;
                         }
                     }
                     // Check value length
                     if (isset($field['length']) && $field['length'] > 0) {
                         if (strlen($value) > $field['length']) {
                             $valid = false;
                             $this->error->addError(array('field' => $varname, 'label' => $field['label'], 'message' => Phprojekt::getInstance()->translate('Maximum length exceeded for ' . 'field')));
                             break;
                         }
                     }
                     // Check value in range
                     if (($field['type'] == 'selectbox' || $field['type'] == 'multipleselectbox') && !empty($value)) {
                         $found = false;
                         foreach ($field['range'] as $range) {
                             if ($range['id'] == $value) {
                                 $found = true;
                                 break;
                             }
                         }
                         if (!$found) {
                             $valid = false;
                             $this->error->addError(array('field' => $varname, 'label' => $field['label'], 'message' => Phprojekt::getInstance()->translate('Value out of range')));
                             break;
                         }
                     } else {
                         if ($field['type'] == 'rating' && !empty($value)) {
                             if ($value > $field['range']['id'] || $value < 1) {
                                 $valid = false;
                                 $this->error->addError(array('field' => $varname, 'label' => $field['label'], 'message' => Phprojekt::getInstance()->translate('Value out of range')));
                                 break;
                             }
                         }
                     }
                     // Check value by type
                     $error = $this->validateValue($class, $varname, $value);
                     if (false === $error) {
                         $valid = false;
                         $this->error->addError(array('field' => $varname, 'label' => $field['label'], 'message' => Phprojekt::getInstance()->translate('Invalid Format')));
                     }
                     break;
                 }
             }
             // Validate an special fieldName
             $validator = 'validate' . ucfirst($varname);
             if ($validator != 'validateIsRequired') {
                 if (method_exists($class, $validator)) {
                     $error = call_user_func(array($class, $validator), $value);
                     if (null !== $error) {
                         $valid = false;
                         $this->error->addError(array('field' => $varname, 'label' => $field['label'], 'message' => $error));
                     }
                 }
             }
         }
     }
     return $valid;
 }