예제 #1
0
 public function getCondition()
 {
     $condition = parent::getCondition();
     /**************CONDITION MIGRATION FROM 2.X VERSIONS*******************/
     if (count($condition) === 1) {
         if (empty($condition[1]['output']['static']) && empty($condition[1]['modification']['value'])) {
             $baseAttr = $this->getBaseAttr();
             if (!empty($baseAttr)) {
                 $condition[1]['output'] = array(array('attribute' => $baseAttr));
             }
             $transform = $this->getTransform();
             if (!empty($transform)) {
                 $condition[1]['modification']['value'] = $transform;
             }
         }
     }
     foreach ($condition as &$record) {
         if (isset($record['output']['static']) && isset($record['output']['attribute'])) {
             $newOutput = array();
             foreach ($record['output']['attribute'] as $attr) {
                 $newOutput[] = array('attribute' => $attr);
             }
             if (!empty($record['output']['static'])) {
                 $newOutput[] = array('static' => $record['output']['static']);
             }
             $record['output'] = $newOutput;
         }
     }
     /**********************************************************************/
     return $condition;
 }
예제 #2
0
 public function getCondition()
 {
     $ret = array();
     if ($this->_oldVersionConditon()) {
         // $this->cond_advanced OLD FIELD, COMPATIBLITY FIX
         $ind = 1;
         if (isset($this->cond_advanced['attr'])) {
             foreach ($this->cond_advanced['attr'] as $order => $code) {
                 $ret[$ind] = array('condition' => array('attribute' => array(), 'operator' => array(), 'value' => array(), 'type' => array(), 'other' => array()));
                 $attribute = Mage::getResourceModel('catalog/product')->getAttribute($code);
                 $ret[$ind]['condition']['attribute'][$order] = $this->cond_advanced['attr'][$order];
                 $ret[$ind]['condition']['operator'][$order] = $this->cond_advanced['op'][$order];
                 $ret[$ind]['condition']['type'][$order] = self::$_TYPE_ATTRIBUTE;
                 $value = $this->cond_advanced['val'][$order];
                 if ($attribute && $attribute->getFrontendInput() == 'select') {
                     $allOptions = $attribute->getSource()->getAllOptions();
                     $options = array();
                     foreach ($allOptions as $option) {
                         $options[$option['value']] = $option['label'];
                     }
                     if (in_array($value, $options)) {
                         $ind = array_search($value, $options);
                         $value = $ind;
                     }
                 }
                 $ret[$ind]['condition']['value'][$order] = $value;
                 $ind++;
             }
         }
     } else {
         $ret = parent::getCondition();
     }
     return $ret;
 }