/** * validate module before saving * @access public * @return void * @author Marius Strajeru <*****@*****.**> */ public function validateAction() { $errors = array(); $response = new Varien_Object(); $response->setError(false); $data = $this->getRequest()->getPost(); $entities = $this->getRequest()->getPost('entity'); $settings = $this->getRequest()->getPost('settings'); if (empty($settings['namespace'])) { $error = new Varien_Object(); $error->setField('settings_namespace'); $error->setMessage(Mage::helper('modulecreator')->__('Fill in the Namespace')); $errors[] = $error->toArray(); } if (empty($settings['module_name'])) { $error = new Varien_Object(); $error->setField('settings_module_name'); $error->setMessage(Mage::helper('modulecreator')->__('Fill in the Module name')); $errors[] = $error->toArray(); } else { $validModule = Mage::helper('modulecreator')->validateModuleName($settings['module_name'], $settings['current_extension']); if (is_string($validModule)) { $error = new Varien_Object(); $error->setMessage($validModule); $error->setField('settings_module_name'); $errors[] = $error->toArray(); } } $validExtension = Mage::helper('modulecreator')->validateExtensionName($settings['namespace'], $settings['module_name'], $settings['current_extension']); if (is_string($validExtension)) { $error = new Varien_Object(); $error->setMessage($validExtension); $errors[] = $error->toArray(); } if (empty($entities)) { $error = new Varien_Object(); $error->setMessage(Mage::helper('modulecreator')->__('Add at least one entity')); $errors[] = $error->toArray(); } else { //validate each entity $noAttributeEntities = false; $noNameEntities = false; foreach ($entities as $key => $entity) { if (empty($entity['name_singular'])) { $error = new Varien_Object(); $error->setMessage(Mage::helper('modulecreator')->__('This is a required field.')); $error->setField('entity_' . $key . '_name_singular'); $errors[] = $error->toArray(); } if (empty($entity['name_plural'])) { $error = new Varien_Object(); $error->setMessage(Mage::helper('modulecreator')->__('This is a required field.')); $error->setField('entity_' . $key . '_name_plural'); $errors[] = $error->toArray(); } if (!isset($entity['attributes']) && !$noAttributeEntities) { $error = new Varien_Object(); $error->setMessage(Mage::helper('modulecreator')->__('There are entities without attribtues. Add attributes or remove them before continuing.')); $errors[] = $error->toArray(); $noAttributeEntities = true; } elseif (isset($entity['attributes'])) { //validate attributes foreach ($entity['attributes'] as $attrKey => $attribute) { if (is_numeric($attrKey)) { $validAttribute = Mage::helper('modulecreator')->validateAttributeName($attribute['code']); if (is_string($validAttribute)) { $error = new Varien_Object(); $error->setMessage($validAttribute); $error->setField('attribute_' . $key . '_' . $attrKey . '_code'); $errors[] = $error->toArray(); } } } } if ((!isset($entity['attributes']) || is_null($entity['attributes']['is_name'])) && !$noNameEntities) { $error = new Varien_Object(); $error->setMessage(Mage::helper('modulecreator')->__('Each entity must have an attribute set to behave as "Name"')); $errors[] = $error->toArray(); $noNameEntities = true; } $validEntity = Mage::helper('modulecreator')->validateEntityName($settings['module_name'], @$entity['name_singular'], $settings['current_extension']); if (is_string($validEntity)) { $error = new Varien_Object(); $error->setMessage($validEntity); $error->setField('entity_' . $key . '_name_singular'); $errors[] = $error->toArray(); } } } try { $module = $this->_initModuleFromData($data); } catch (Exception $e) { $error = new Varien_Object(); $error->setMessage($e->getMessage()); $errors[] = $error->toArray(); } if (count($errors) > 0) { $response->setError(true); $response->setErrors($errors); } $this->getResponse()->setBody($response->toJson()); }
/** * Add filter with a callback * * @param string $field field to filter * @param string $value value * @param string $type and|or * @param string $callback callback method * * @return Smile_MageCache_Model_Action_Collection */ public function addCallbackFilter($field, $value, $type = 'and', $callback = 'filterCallbackEqual') { $filter = new Varien_Object(); $filter->setField($field); $filter->setValue($value); $filter->setType(strtolower($type)); $filter->setCallback($callback); $this->_filters[] = $filter; $this->_isFiltersRendered = false; return $this; }