/**
  * 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());
 }
Example #2
0
 /**
  * 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;
 }