Example #1
0
 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;
 }
Example #3
0
 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)
 {
     $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;
 }
Example #5
0
 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;
 }
Example #6
0
 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;
 }
Example #7
0
 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;
 }
Example #8
0
 public function prepareGroupByValues(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList)
 {
     $productList->prepareGroupByValues($filterDefinition->getField(), true);
 }