Ejemplo n.º 1
0
 /**
  * Method to test if a value is valid for a field.
  *
  * @param	object		$field		The field to validate.
  * @param	array		$values		The values to validate.
  * @return	mixed		Boolean on success, JException on error.
  */
 protected function _isValid(&$field, $values)
 {
     $result = true;
     // Get the validator type.
     if ($type = (string) $field->attributes()->validate) {
         // Get the validator class.
         $class = 'JFormRule' . $type;
         if (!class_exists($class)) {
             jimport('joomla.filesystem.path');
             // Attempt to load the rule file.
             if ($file = JPath::find(JFormValidator::addRulePath(), $type . '.php')) {
                 require_once $file;
             }
             if (!class_exists($class)) {
                 return new JException(JText::sprintf('Libraries_Form_Validator_Rule_Not_Found', $type), 0, E_ERROR);
             }
         }
         // Run the validator.
         $rule = new $class();
         $result = $rule->test($field, $values);
     }
     return $result;
 }
Ejemplo n.º 2
0
 /**
  * Method to validate form data.
  *
  * Validation warnings will be pushed into JForm::_errors and should be
  * retrieved with JForm::getErrors() when validate returns boolean false.
  *
  * @param	array		$data		An array of field values to validate.
  * @param	string		$limit		An option group to limit the validation to.
  * @return	mixed		Boolean on success, JException on error.
  */
 public function validate($data, $limit = null)
 {
     $return = true;
     $data = (array) $data;
     // Check if the group exists.
     if ($limit !== null && !isset($this->_groups[$limit])) {
         // The group that was supposed to be filtered does not exist.
         return new JException(JText::sprintf('LIBRARIES FORM VALIDATOR GROUP NOT FOUND', $limit), 0, E_ERROR);
     }
     // Get a validator object.
     jimport('joomla.form.formvalidator');
     $validator = new JFormValidator();
     // Iterate through the groups.
     foreach ($this->_groups as $group => $fields) {
         // Filter if no group is specified or if the group matches the current group.
         if ($limit === null || $limit !== null && $group === $limit) {
             // If the group name matches the name of a group in the data and the value is not scalar, pass the group.
             if (isset($data[$group]) && !is_scalar($data[$group]) && !is_resource($data[$group])) {
                 $results = $validator->validate($this->_groups[$group], $data[$group]);
             } else {
                 // Run the validator over the group.
                 $results = $validator->validate($this->_groups[$group], $data);
             }
             // Check for a error.
             if (JError::isError($results)) {
                 return new JException($results->getMessage(), 0, E_ERROR);
             }
             // Check the validation results.
             if (count($results)) {
                 // Get the validation messages.
                 foreach ($results as $result) {
                     if (JError::isError($result) && $result->get('level') === E_WARNING) {
                         $this->setError($result);
                         $return = false;
                     }
                 }
             }
         }
     }
     return $return;
 }