public function getFilterFrontend(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter) { // init $script = $filterDefinition->getScriptPath() ?: $this->script; $rawValues = $productList->getGroupByValues('CategoryPath', true); $values = array(); // ... $availableRelations = array(); if ($filterDefinition->getAvailableCategories()) { foreach ($filterDefinition->getAvailableCategories() as $rel) { $availableRelations[$rel->getId()] = true; } } // prepare values foreach ($rawValues as $v) { $explode = explode(",", $v['value']); foreach ($explode as $e) { if (!empty($e) && (empty($availableRelations) || $availableRelations[$e] === true)) { if ($values[$e]) { $count = $values[$e]['count'] + $v['count']; } else { $count = $v['count']; } $values[$e] = array('value' => $e, "count" => $count); } } } // done return $this->view->partial($script, ['hideFilter' => $filterDefinition->getRequiredFilterField() && empty($currentFilter[$filterDefinition->getRequiredFilterField()]), 'label' => $filterDefinition->getLabel(), 'currentValue' => $currentFilter[$filterDefinition->getField()], 'values' => array_values($values), 'fieldname' => $filterDefinition->getField(), 'metaData' => $filterDefinition->getMetaData()]); }
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; }
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; }
public function getFilterFrontend(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter) { $field = $filterDefinition->getField($filterDefinition); if ($filterDefinition->getScriptPath()) { $script = $filterDefinition->getScriptPath(); } else { $script = $this->script; } return $this->view->partial($script, array("hideFilter" => $filterDefinition->getRequiredFilterField() && empty($currentFilter[$filterDefinition->getRequiredFilterField()]), "label" => $filterDefinition->getLabel(), "currentValue" => $currentFilter[$field], "fieldname" => $field, "metaData" => $filterDefinition->getMetaData())); }
public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false) { $value = $params[$filterDefinition->getField()]; if ($value == OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING) { $value = null; } else { if (empty($value) && !$params['is_reload']) { $value = $filterDefinition->getPreSelect(); if (is_object($value)) { $value = $value->getId(); } } } $currentFilter[$filterDefinition->getField()] = $value; if (!empty($value)) { $value = trim($value); $productList->addCondition($value, $filterDefinition->getField()); } return $currentFilter; }
protected function getPreSelect(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition) { $field = $filterDefinition->getField(); if ($field instanceof \Pimcore\Model\Object\Data\IndexFieldSelection) { return $field->getPreSelect(); } else { if (method_exists($filterDefinition, "getPreSelect")) { return $filterDefinition->getPreSelect(); } } return null; }
public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false) { $field = $filterDefinition->getField($filterDefinition); $preSelect = $filterDefinition->getPreSelect($filterDefinition); $value = $params[$field]; if ($value == OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING) { $value = null; } else { if (empty($value) && !$params['is_reload']) { $value = $preSelect; } } $value = trim($value); $currentFilter[$field] = $value; if (!empty($value)) { $value = ".*\"" . $value . "\".*"; $productList->addCondition(['regexp' => ["attributes." . $field => $value]], $field); } return $currentFilter; }
public function prepareGroupByValues(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList) { $productList->prepareGroupByValues($filterDefinition->getField(), true); }