Beispiel #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->getSecondfield() . " >= " . $productList->quote($value['from']), "PRECONDITION_" . $filterDefinition->getField());
             } else {
                 $productList->addCondition("(" . $filterDefinition->getSecondfield() . " >= " . $productList->quote($value['from']) . " AND " . $filterDefinition->getSecondfield() . " <= " . $productList->quote($value['to']) . ")" . " OR " . "(" . $filterDefinition->getField() . " >= " . $productList->quote($value['from']) . " AND " . $filterDefinition->getField() . " <= " . $productList->quote($value['to']) . ")" . " OR " . "(" . $filterDefinition->getSecondfield() . " <= " . $productList->quote($value['from']) . " AND " . $filterDefinition->getField() . " >= " . $productList->quote($value['to']) . ")", $filterDefinition->getField());
             }
         }
     }
     return $currentFilter;
 }