/** * @param Mana_Db_Model_Formula_Context $context * @param string $field * @return Mana_Db_Model_Formula_Expr | bool */ public function selectField($context, $field) { if ($result = parent::selectField($context, $field)) { return $result; } $eavEntityType = $this->getEavEntityType($context->getEntity()); /* @var $attribute Mage_Eav_Model_Entity_Attribute */ $attribute = $eavEntityType->getAttributeCollection()->getItemByColumnValue('attribute_code', $field); if ($attribute) { return $context->getHelper()->expr()->setFieldExpr($context->getAlias()->fieldExpr($context, $field))->setFieldName($field)->setType($attribute->getBackendType()); } else { return false; } }
/** * @param Mana_Db_Model_Formula_Context $context * @param string $field * @return Mana_Db_Model_Formula_Expr | bool */ public function selectField($context, $field) { if ($result = parent::selectField($context, $field)) { return $result; } /* @var $dbConfig Mana_Db_Helper_Config */ $dbConfig = Mage::helper('mana_db/config'); /* @var $formulaHelper Mana_Db_Helper_Formula */ $formulaHelper = Mage::helper('mana_db/formula'); /* @var $fieldsXml Varien_Simplexml_Element */ /** @noinspection PhpUndefinedFieldInspection */ $fieldsXml = $dbConfig->getScopeXml($context->getEntity())->fields; if (isset($fieldsXml->{$field})) { $alias = $context->getAlias(); return $context->getHelper()->expr()->setFieldExpr($alias->fieldExpr($context, $field))->setFieldName($field)->setType((string) $fieldsXml->{$field}->type); } else { return false; } }
/** * @param Mana_Db_Model_Formula_Context $context * @param string $field * @return Mana_Db_Model_Formula_Expr | bool */ public function selectField($context, $field) { if ($result = parent::selectField($context, $field)) { return $result; } /* @var $resource Mana_Db_Resource_Formula */ $resource = Mage::getResourceSingleton('mana_db/formula'); $fields = $resource->getTableFields($context->getEntity()); if (isset($fields[$field])) { return $context->getHelper()->expr()->setFieldExpr($context->getAlias()->fieldExpr($context, $field))->setFieldName($field)->setType($fields[$field]['DATA_TYPE']); } else { /* @var $dbConfig Mana_Db_Helper_Config */ $dbConfig = Mage::helper('mana_db/config'); /* @var $formulaHelper Mana_Db_Helper_Formula */ $formulaHelper = Mage::helper('mana_db/formula'); /* @var $fieldsXml Varien_Simplexml_Element */ /** @noinspection PhpUndefinedFieldInspection */ $fieldsXml = $dbConfig->getTableXml($context->getEntity())->fields; if (isset($fieldsXml->{$field})) { $alias = $context->getAlias(); $formula = $fieldsXml->{$field}->formula; $context->resetLocalAliases(); if (isset($formula->join)) { /* @var $joinContainerXml Varien_Simplexml_Element */ $joinContainerXml = $formula->join; foreach ($joinContainerXml->children() as $joinAlias => $definition) { /* @var $joinClosure Mana_Db_Model_Formula_Closure_Join */ $joinClosure = Mage::getModel('mana_db/formula_closure_join', compact('context', 'definition')); $alias->child($formulaHelper->createAlias($joinAlias))->each($joinClosure); } } return $context->getHelper()->expr()->setFieldExpr($alias->expr($context, (string) $formula->expr))->setFieldName($field)->setType((string) $fieldsXml->{$field}->type); } else { return false; } } }