/** * 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); } } }