示例#1
0
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     $rawValue = $params[$filterDefinition->getField()];
     if (!empty($rawValue) && $rawValue != OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING) {
         $values = explode("-", $rawValue);
         $value['from'] = trim($values[0]);
         $value['to'] = trim($values[1]);
     } else {
         if ($rawValue == OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING) {
             $value = null;
         } else {
             $value['from'] = $filterDefinition->getPreSelectFrom();
             $value['to'] = $filterDefinition->getPreSelectTo();
         }
     }
     $currentFilter[$filterDefinition->getField()] = $value;
     if (!empty($value)) {
         if (!empty($value['from'])) {
             if ($isPrecondition) {
                 $productList->addCondition($filterDefinition->getField() . " >= " . $productList->quote($value['from']), "PRECONDITION_" . $filterDefinition->getField());
             } else {
                 $productList->addCondition($filterDefinition->getField() . " >= " . $productList->quote($value['from']), $filterDefinition->getField());
             }
         }
         if (!empty($value['to'])) {
             if ($isPrecondition) {
                 $productList->addCondition($filterDefinition->getField() . " <= " . $productList->quote($value['to']), "PRECONDITION_" . $filterDefinition->getField());
             } else {
                 $productList->addCondition($filterDefinition->getField() . " <= " . $productList->quote($value['to']), $filterDefinition->getField());
             }
         }
     }
     return $currentFilter;
 }
示例#2
0
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     $field = $filterDefinition->getField();
     $rawValue = $params[$field];
     if (!empty($rawValue) && $rawValue != OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING) {
         $values = explode("-", $rawValue);
         $value['from'] = trim($values[0]);
         $value['to'] = trim($values[1]);
     } else {
         if ($rawValue == OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING) {
             $value = null;
         } else {
             $value['from'] = $filterDefinition->getPreSelectFrom();
             $value['to'] = $filterDefinition->getPreSelectTo();
         }
     }
     $currentFilter[$field] = $value;
     if (!empty($value)) {
         $range = [];
         if (!empty($value['from'])) {
             $range['gte'] = $value['from'];
         }
         if (!empty($value['to'])) {
             $range['lte'] = $value['from'];
         }
         $productList->addCondition(['range' => ['attributes.' . $field => $range]], $field);
     }
     return $currentFilter;
 }