/** * 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; }