Esempio n. 1
0
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     $field = $this->getField($filterDefinition);
     $preSelect = $this->getPreSelect($filterDefinition);
     $value = $params[$field];
     if (empty($value) && !$params['is_reload']) {
         $o = $preSelect;
         if (!empty($o)) {
             if (is_object($o)) {
                 $value = $o->getId();
             } else {
                 $value = $o;
             }
         }
     } else {
         if ($value == OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING) {
             $value = null;
         }
     }
     $currentFilter[$field] = $value;
     if (!empty($value)) {
         $productList->addRelationCondition($field, $value);
     }
     return $currentFilter;
 }
Esempio n. 2
0
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     $field = $this->getField($filterDefinition);
     $preSelect = $this->getPreSelect($filterDefinition);
     $value = $params[$field];
     if (empty($value) && !$params['is_reload']) {
         $objects = $preSelect;
         $value = array();
         if (!is_array($objects)) {
             $objects = explode(",", $objects);
         }
         if (is_array($objects)) {
             foreach ($objects as $o) {
                 if (is_object($o)) {
                     $value[] = $o->getId();
                 } else {
                     $value[] = $o;
                 }
             }
         }
     } else {
         if (!empty($value) && in_array(OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING, $value)) {
             $value = null;
         }
     }
     $currentFilter[$field] = $value;
     if (!empty($value)) {
         $quotedValues = array();
         foreach ($value as $v) {
             if (!empty($v)) {
                 $quotedValues[] = $productList->quote($v);
             }
         }
         if (!empty($quotedValues)) {
             if ($filterDefinition->getUseAndCondition()) {
                 foreach ($quotedValues as $value) {
                     $productList->addRelationCondition($field, "dest = " . $value);
                 }
             } else {
                 $productList->addRelationCondition($field, "dest IN (" . implode(",", $quotedValues) . ")");
             }
         }
     }
     return $currentFilter;
 }