37 protected $_columnValidators = array();
44 protected $_indexValidators = array();
51 protected $_foreignKeyValidators = array();
63 public function addIndexValidator(Zend_Validate_Interface $validator, $breakChainOnFailure =
false)
65 $this->_indexValidators[] = array(
66 'instance' => $validator,
67 'breakChainOnFailure' => (
boolean) $breakChainOnFailure
84 $this->_foreignKeyValidators[] = array(
85 'instance' => $validator,
86 'breakChainOnFailure' => (
boolean) $breakChainOnFailure
103 $this->_columnValidators[] = array(
104 'instance' => $validator,
105 'breakChainOnFailure' => (
boolean) $breakChainOnFailure
120 $this->_messages = array();
121 $this->_errors = array();
125 $this->_messages[] =
'Value must be instance of ZendDbSchema_Db_Schema_Table';
126 $this->_errors[] =
'tableInvalid';
130 foreach ($this->_validators as $element) {
131 $validator = $element[
'instance'];
132 if ($validator->isValid($value)) {
136 $messages = $validator->getMessages();
137 $this->_messages = array_merge($this->_messages, $messages);
138 $this->_errors = array_merge($this->_errors, array_keys($messages));
139 if ($element[
'breakChainOnFailure']) {
144 $val =
new Zend_Validate_GreaterThan(0);
145 if (!$val->isValid(count($value->columns()))) {
147 $messages = array(
'columnsEmpty' =>
'Must be at least 1 column in table');
148 $this->_messages = array_merge($this->_messages, $messages);
149 $this->_errors = array_merge($this->_errors, array_keys($messages));
152 foreach ($value->columns() as $column) {
153 foreach ($this->_columnValidators as $element) {
154 $validator = $element[
'instance'];
155 if ($validator->isValid($column)) {
159 $messages = $validator->getMessages();
160 $this->_messages = array_merge($this->_messages, $messages);
161 $this->_errors = array_merge($this->_errors, array_keys($messages));
162 if ($element[
'breakChainOnFailure']) {
168 foreach ($value->indexes() as $index) {
169 foreach ($this->_indexValidators as $element) {
170 $validator = $element[
'instance'];
171 if ($validator->isValid($index)) {
175 $messages = $validator->getMessages();
176 $this->_messages = array_merge($this->_messages, $messages);
177 $this->_errors = array_merge($this->_errors, array_keys($messages));
178 if ($element[
'breakChainOnFailure']) {
184 foreach ($value->foreigns() as $foreign) {
185 foreach ($this->_indexValidators as $element) {
186 $validator = $element[
'instance'];
187 if ($validator->isValid($foreign)) {
191 $messages = $validator->getMessages();
192 $this->_messages = array_merge($this->_messages, $messages);
193 $this->_errors = array_merge($this->_errors, array_keys($messages));
194 if ($element[
'breakChainOnFailure']) {