Пример #1
0
 /**
  * @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()));
 }
Пример #2
0
 /**
  * @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;
     }
 }