/** * @return bool */ public function isValid() { $tableColumns = $this->_table->getColumns(); $dirtyColumns = $this->_data->getModified(); foreach ($dirtyColumns as $key => $value) { unset($dirtyColumns[$key]); $dirtyColumns[strtolower($key)] = $value; } #die(Zend_Debug::dump($tableColumns)); foreach ($tableColumns as $columnName => $columnStructure) { if (array_key_exists($columnName, $dirtyColumns)) { $validatorChain = new Zend_Validate(); // Notnull if (array_key_exists('notnull', $columnStructure)) { $validatorChain->addValidator(new Zend_Validate_NotEmpty(array('string' => true, 'empty_array' => true, 'null' => true, 'space' => true))); } // Email if (array_key_exists('email', $columnStructure)) { $validatorChain->addValidator(new Zend_Validate_EmailAddress()); } // Notblank if (array_key_exists('notblank', $columnStructure)) { $validatorChain->addValidator(new Kebab_Validate_NotBlank()); } // Nospace if (array_key_exists('nospace', $columnStructure)) { // check null $validatorChain->addValidator(new Zend_Validate_NotEmpty(array('null' => true))); // check space $validatorChain->addValidator(new Zend_Validate_Regex(array('pattern' => '/\\s/'))); } // Past // Future // Min Length if (array_key_exists('minlength', $columnStructure)) { $validatorChain->addValidator(new Zend_Validate_GreaterThan(array('min' => $columnStructure['minlength']))); } // Country // Ip if (array_key_exists('ip', $columnStructure)) { $validatorChain->addValidator(new Zend_Validate_Ip()); } // HtmlColor // Range if (array_key_exists('range', $columnStructure)) { $validatorChain->addValidator(new Zend_Validate_Between(array('min' => $columnStructure['range'][0], 'max' => $columnStructure['range'][1]))); } //Unique if (array_key_exists('unique', $columnStructure)) { $validatorChain->addValidator(new Kebab_Validate_Unique($columnName, $this->_data)); } // Regex if (array_key_exists('regexp', $columnStructure)) { $validatorChain->addValidator(new Zend_Validate_Regex(array('pattern' => $columnStructure['regexp']))); } // Digits if (array_key_exists('digits', $columnStructure)) { $validatorChain->addValidator(new Zend_Validate_Digits()); } // Date if (array_key_exists('date', $columnStructure)) { $validatorChain->addValidator(new Zend_Validate_Date()); } // CC if (array_key_exists('cc', $columnStructure)) { $validatorChain->addValidator(new Zend_Validate_CreditCard()); } // Unsigned // Check All if (!$validatorChain->isValid($dirtyColumns[$columnName])) { $translator = Zend_Registry::get('Zend_Translate'); Zend_Validate_Abstract::setDefaultTranslator($translator); $this->_errors[$columnName] = $validatorChain->getMessages(); } unset($validatorChain); } } if (count($this->_errors) > 0) { return false; } else { return true; } }