/** * @param Mana_Db_Model_Formula_Context $context * @param string[] $formulas * @return Mana_Db_Model_Formula_Field[] */ protected function _getFieldFormulas($context, $formulas, $options = array()) { $result = array(); $entity = $context->getTargetEntity(); /* @var $dbConfig Mana_Db_Helper_Config */ $dbConfig = Mage::helper('mana_db/config'); /* @var $fieldsXml Varien_Simplexml_Element */ /** @noinspection PhpUndefinedFieldInspection */ $fieldsXml = $dbConfig->getScopeXml($entity)->fields; foreach ($fieldsXml->children() as $name => $fieldXml) { if (empty($options['process_all_fields']) && !isset($formulas[$name])) { continue; } /* @var $field Mana_Db_Model_Formula_Field */ $field = Mage::getModel('mana_db/formula_field'); $field->setName($name)->setRole(isset($fieldXml->role) ? (string) $fieldXml->role : '')->setType((string) $fieldXml->type); if (isset($fieldXml->no)) { $field->setNo((string) $fieldXml->no); } if (isset($formulas[$name])) { $field->setFormulaString($formulas[$name])->setFormula($this->parse($formulas[$name]))->setDependencies($this->depends($context, $field->getFormula())); } elseif (isset($fieldXml->default_formula)) { $field->setFormulaString((string) $fieldXml->default_formula)->setFormula($this->parse((string) $fieldXml->default_formula))->setDependencies($this->depends($context, $field->getFormula())); } elseif (isset($fieldXml->default_value)) { $field->setValue((string) $fieldXml->default_value); } $result[$name] = $field; } $this->_sortByDependency($result); return $result; }