Exemple #1
0
 /**
  * Apply element dependencies from configuration
  *
  * @param Varien_SimpleXml_Element $element
  * @param Varien_SimpleXml_Element $section
  * @param Varien_SimpleXml_Element $group
  * @param string $elementId
  * @param string $fieldPrefix
  */
 protected function _processElementDependencies($element, $section, $group, $elementId, $fieldPrefix = '')
 {
     foreach ($element->depends->children() as $dependent) {
         /* @var $dependent Mage_Core_Model_Config_Element */
         $dependentId = $section->getName() . '_' . $group->getName() . '_' . $fieldPrefix . $dependent->getName();
         $shouldBeAddedDependence = true;
         $dependentValue = (string) $dependent;
         if (isset($dependent['separator'])) {
             $dependentValue = explode((string) $dependent['separator'], $dependentValue);
         }
         $dependentFieldName = $fieldPrefix . $dependent->getName();
         $dependentField = $group->fields->{$dependentFieldName};
         /*
          * If dependent field can't be shown in current scope and real dependent config value
          * is not equal to preferred one, then hide dependence fields by adding dependence
          * based on not shown field (not rendered field)
          */
         if (!$this->_canShowField($dependentField)) {
             $dependentFullPath = $section->getName() . '/' . $group->getName() . '/' . $fieldPrefix . $dependent->getName();
             $dependentValueInStore = Mage::getStoreConfig($dependentFullPath, $this->getStoreCode());
             if (is_array($dependentValue)) {
                 $shouldBeAddedDependence = !in_array($dependentValueInStore, $dependentValue);
             } else {
                 $shouldBeAddedDependence = $dependentValue != $dependentValueInStore;
             }
         }
         if ($shouldBeAddedDependence) {
             $this->_getDependence()->addFieldMap($elementId, $elementId)->addFieldMap($dependentId, $dependentId)->addFieldDependence($elementId, $dependentId, $dependentValue);
         }
     }
 }
 /**
  * Collects action arguments
  *
  * @param Varien_SimpleXml_Element $node
  * @return array|null
  */
 protected function _collectActionArguments($node)
 {
     if (isset($node['ifconfig']) && !Mage::getStoreConfigFlag((string) $node['ifconfig'])) {
         return null;
     }
     $args = (array) $node->children();
     unset($args['@attributes']);
     foreach ($args as $key => $arg) {
         if ($arg instanceof Mage_Core_Model_Layout_Element) {
             if (isset($arg['helper'])) {
                 $helperName = explode('/', (string) $arg['helper']);
                 $helperMethod = array_pop($helperName);
                 $helperName = implode('/', $helperName);
                 $arg = $arg->asArray();
                 unset($arg['@']);
                 $args[$key] = call_user_func_array(array(Mage::helper($helperName), $helperMethod), $arg);
             } else {
                 /**
                  * if there is no helper we hope that this is assoc array
                  */
                 $arr = array();
                 foreach ($arg as $subkey => $value) {
                     $arr[(string) $subkey] = $value->asArray();
                 }
                 if (!empty($arr)) {
                     $args[$key] = $arr;
                 }
             }
         }
     }
     if (isset($node['json'])) {
         $json = explode(' ', (string) $node['json']);
         foreach ($json as $arg) {
             $args[$arg] = Mage::helper('core')->jsonDecode($args[$arg]);
         }
     }
     return $args;
 }