/** * Validates a file or parameter. * * @param string A file or parameter name * @param array Data associated with the file or parameter * @param string A parent name * * @return bool true, if validation completes successfully, otherwise false */ protected function validate(&$name, &$data, $parent) { // get defaults $error = null; $errorName = null; $force = null !== $data['group'] ? $data['group']['_force'] : false; $retval = true; $value = null; // get our parameter value if ($parent == null) { // normal file/parameter $errorName = $name; if ($data['is_file']) { // file $value = $this->request->getFile($name); } else { // parameter $value = $this->request->getParameterHolder()->get($name); } } else { // we have a parent $errorName = $parent . '{' . $name . '}'; if ($data['is_file']) { // file $parent = $this->request->getFile($parent . '[' . $name . ']'); if ($parent != null) { $value = $parent; } } else { // parameter $parent = $this->request->getParameterHolder()->get($parent); if ($parent != null && isset($parent[$name])) { $value = $parent[$name]; } } } // now for the dirty work if ($data['is_file'] && !$value['name'] || !$data['is_file'] && (is_array($value) ? sfToolkit::isArrayValuesEmpty($value) : $value === null || strlen($value) == 0)) { if ($data['required'] || $force) { // it's empty! $error = $data['required_msg']; $retval = false; } else { // we don't have to validate it $retval = true; } } else { // time for the fun $error = null; // get group force status if ($data['group'] != null) { // we set this because we do have a value for a parameter in this group $data['group']['_force'] = true; } if (count($data['validators']) > 0) { // loop through our validators foreach ($data['validators'] as $validator) { if (!$validator->execute($value, $error)) { $retval = false; break; } } } } if (!$retval) { // set validation status $data['validation_status'] = false; // set the request error $this->request->setError($errorName, $error); } return $retval; }
protected function validate(&$name, &$data, $parent) { $error = null; $errorName = null; $force = null !== $data['group'] ? $data['group']['_force'] : false; $retval = true; $value = null; if ($parent == null) { $errorName = $name; if ($data['is_file']) { $value = $this->request->getFile($name); } else { $value = $this->request->getParameterHolder()->get($name); } } else { $errorName = $parent . '{' . $name . '}'; if ($data['is_file']) { $parent = $this->request->getFile($parent . '[' . $name . ']'); if ($parent != null) { $value = $parent; } } else { $parent = $this->request->getParameterHolder()->get($parent); if ($parent != null && isset($parent[$name])) { $value = $parent[$name]; } } } if ($data['is_file'] && !$value['name'] || !$data['is_file'] && (is_array($value) ? sfToolkit::isArrayValuesEmpty($value) : $value === null || strlen($value) == 0)) { if ($data['required'] || $force) { $error = $data['required_msg']; $retval = false; } else { $retval = true; } } else { $error = null; if ($data['group'] != null) { $data['group']['_force'] = true; } if (count($data['validators']) > 0) { foreach ($data['validators'] as $validator) { if (!$validator->execute($value, $error)) { $retval = false; break; } } } } if (!$retval) { $data['validation_status'] = false; $this->request->setError($errorName, $error); } return $retval; }