/** * @param Mana_Db_Model_Formula_Context $context * @param Mana_Db_Model_Formula_Node_Field $formula * @param Mana_Db_Model_Formula_Expr $expr */ public function selectField($context, $formula, $expr) { foreach ($context->getSelect()->getPart(Varien_Db_Select::COLUMNS) as $column) { if ($column[2] == $expr->getFieldName()) { $expr->setExpr($column[1]); return; } } throw new Mana_Db_Exception_Formula($this->__("Field '%s' referenced in field '%s' is not defined.", $expr->getFieldName(), $context->getField()->getName())); }
/** * @param Mana_Db_Model_Formula_Context $context * @param string $defaultExpr * @return string */ protected function _getOverriddenValueExpr($context, $defaultExpr) { if (($no = $context->getField()->getNo()) !== null) { $overriddenExpr = "`p`.`{$context->getField()->getName()}`"; if ($overriddenExpr != $defaultExpr) { /* @var $db Mana_Db_Helper_Data */ $db = Mage::helper('mana_db'); $condition = "`p`.`default_mask{$db->getMaskIndex($no)}` & {$db->getMask($no)} = {$db->getMask($no)}"; return "IF ({$condition}, {$overriddenExpr}, {$defaultExpr})"; } else { return $overriddenExpr; } } else { return $defaultExpr; } }