. */ /** * Doctrine_Validator_ErrorStack * * @package Doctrine * @subpackage Validator * @author Konsta Vesterinen * @author Roman Borschel * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link www.phpdoctrine.org * @since 1.0 * @version $Revision$ */ class Doctrine_Validator_ErrorStack extends Doctrine_Access implements Countable, IteratorAggregate { /** * The errors of the error stack. * * @var array */ protected $_errors = array(); /** * Array of validators that failed * * @var array */ protected $_validators = array(); /** * Get model class name for the error stack * * @var string */ protected $_className; /** * Constructor * */ public function __construct($className) { $this->_className = $className; } /** * Adds an error to the stack. * * @param string $invalidFieldName * @param string $errorType */ public function add($invalidFieldName, $errorCode = 'general') { if (is_object($errorCode)) { if ( ! ($errorCode instanceof Doctrine_Validator_Driver)) { throw new Doctrine_Exception('Validators must be an instance of Doctrine_Validator_Driver'); } $validator = $errorCode; $this->_validators[$invalidFieldName][] = $validator; $errorCode = (string) $validator; } $this->_errors[$invalidFieldName][] = $errorCode; } /** * Removes all existing errors for the specified field from the stack. * * @param string $fieldName */ public function remove($fieldName) { if (isset($this->_errors[$fieldName])) { unset($this->_errors[$fieldName]); if (isset($this->_validators[$fieldName])) { unset($this->_validators[$fieldName]); } } } /** * Get errors for field * * @param string $fieldName * @return mixed */ public function get($fieldName) { return isset($this->_errors[$fieldName]) ? $this->_errors[$fieldName] : null; } /** * Alias for add() * * @param string $fieldName * @param string $errorCode * @return void */ public function set($fieldName, $errorCode) { $this->add($fieldName, $errorCode); } /** * Check if a field has an error * * @param string $fieldName * @return boolean */ public function contains($fieldName) { return array_key_exists($fieldName, $this->_errors); } /** * Removes all errors from the stack. * * @return void */ public function clear() { $this->_errors = array(); $this->_validators = array(); } /** * Enter description here... * * @return unknown */ public function getIterator() { return new ArrayIterator($this->_errors); } public function toArray() { return $this->_errors; } /** * Count the number of errors * * @return integer */ public function count() { return count($this->_errors); } /** * Get the classname where the errors occured * * @return string */ public function getClassname() { return $this->_className; } /** * Get array of failed validators * * @return array */ public function getValidators() { return $this->_validators; } }