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; }
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; }