示例#1
0
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     $field = $this->getField($filterDefinition);
     $value = $params[$field];
     if (empty($value)) {
         $value['from'] = $filterDefinition->getPreSelectFrom();
         $value['to'] = $filterDefinition->getPreSelectTo();
     }
     $currentFilter[$field] = $value;
     if (!empty($value)) {
         if (!empty($value['from'])) {
             if ($isPrecondition) {
                 $productList->addCondition($this->getField($filterDefinition) . " >= " . $productList->quote($value['from']), "PRECONDITION_" . $this->getField($filterDefinition));
             } else {
                 $productList->addCondition($this->getField($filterDefinition) . " >= " . $productList->quote($value['from']), $this->getField($filterDefinition));
             }
         }
         if (!empty($value['to'])) {
             if ($isPrecondition) {
                 $productList->addCondition($this->getField($filterDefinition) . " <= " . $productList->quote($value['to']), "PRECONDITION_" . $this->getField($filterDefinition));
             } else {
                 $productList->addCondition($this->getField($filterDefinition) . " <= " . $productList->quote($value['to']), $this->getField($filterDefinition));
             }
         }
     }
     return $currentFilter;
 }
示例#2
0
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     $field = $this->getField($filterDefinition);
     $preSelect = $this->getPreSelect($filterDefinition);
     $value = $params[$field];
     if (empty($value) && !$params['is_reload'] && $preSelect) {
         $value = explode(",", $preSelect);
     } else {
         if (!empty($value) && in_array(OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING, $value)) {
             $value = null;
         }
     }
     $currentFilter[$field] = $value;
     if (!empty($value)) {
         $quotedValues = array();
         foreach ($value as $v) {
             if (!empty($v)) {
                 $quotedValues[] = $v;
             }
         }
         if (!empty($quotedValues)) {
             if ($filterDefinition->getUseAndCondition()) {
                 foreach ($quotedValues as $value) {
                     $productList->addCondition($value, $field);
                 }
             } else {
                 $productList->addCondition(['terms' => ["attributes." . $field => $quotedValues]], $field);
             }
         }
     }
     return $currentFilter;
 }
示例#3
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;
 }
示例#4
0
 /**
  * @param OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition
  * @param OnlineShop_Framework_IProductList                 $productList
  * @param array                                             $currentFilter
  * @param array                                             $params
  * @param bool                                              $isPrecondition
  *
  * @return mixed
  */
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     // init
     $field = $this->getField($filterDefinition);
     //        $preSelect = $this->getPreSelect($filterDefinition);
     $value = $params[$field];
     // set defaults
     //        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;
     // add condition
     if (!empty($value)) {
         $field = 'CategoryPathROOT';
         $lastId = null;
         foreach ($value as $id) {
             if ($lastId !== null) {
                 $field .= '/' . $lastId;
             }
             $productList->addCondition($id, $field);
             $lastId = $id;
         }
     }
     return $currentFilter;
 }
示例#5
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;
 }
 /**
  * @param OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition
  * @param OnlineShop_Framework_IProductList                  $productList
  * @param array                                             $currentFilter
  * @param                                                   $params
  * @param bool                                              $isPrecondition
  *
  * @return string[]
  */
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     $field = $this->getField($filterDefinition);
     $preSelect = $this->getPreSelect($filterDefinition);
     $value = $params[$field];
     if (empty($value) && !$params['is_reload']) {
         if (is_array($preSelect)) {
             $value = $preSelect;
         } else {
             $value = explode(",", $preSelect);
         }
         foreach ($value as $key => $v) {
             if (!$v) {
                 unset($value[$key]);
             }
         }
     } else {
         if (!empty($value) && in_array(OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING, $value)) {
             $value = null;
         }
     }
     $currentFilter[$field] = $value;
     if (!empty($value)) {
         $quotedValues = array();
         foreach ($value as $v) {
             if ($v) {
                 $v = ".*\"" . OnlineShop_Framework_IndexService_Tenant_IWorker::MULTISELECT_DELIMITER . $v . OnlineShop_Framework_IndexService_Tenant_IWorker::MULTISELECT_DELIMITER . "\".*";
                 $quotedValues[] = $v;
             }
         }
         if ($quotedValues) {
             if ($filterDefinition->getUseAndCondition()) {
                 foreach ($quotedValues as $value) {
                     $productList->addCondition(['regexp' => ["attributes." . $field => $value]], $field);
                 }
             } else {
                 $regexArray = [];
                 foreach ($quotedValues as $value) {
                     $regexArray[] = ['regexp' => ["attributes." . $field => $value]];
                 }
                 $productList->addCondition(['or' => ['filters' => $regexArray]], $field);
             }
         }
     }
     return $currentFilter;
 }
 /**
  * @param OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition
  * @param OnlineShop_Framework_IProductList                  $productList
  * @param array                                             $currentFilter
  * @param                                                   $params
  * @param bool                                              $isPrecondition
  *
  * @return string[]
  */
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     $field = $this->getField($filterDefinition);
     $preSelect = $this->getPreSelect($filterDefinition);
     $value = $params[$field];
     if (empty($value) && !$params['is_reload']) {
         if (is_array($preSelect)) {
             $value = $preSelect;
         } else {
             $value = explode(",", $preSelect);
         }
         foreach ($value as $key => $v) {
             if (!$v) {
                 unset($value[$key]);
             }
         }
     } else {
         if (!empty($value) && in_array(OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING, $value)) {
             $value = null;
         }
     }
     //  $value = trim($value);
     $currentFilter[$field] = $value;
     if (!empty($value)) {
         $quotedValues = array();
         foreach ($value as $v) {
             $v = "%" . OnlineShop_Framework_IndexService_Tenant_IWorker::MULTISELECT_DELIMITER . $v . OnlineShop_Framework_IndexService_Tenant_IWorker::MULTISELECT_DELIMITER . "%";
             $quotedValues[] = $field . ' like ' . $productList->quote($v);
         }
         if ($filterDefinition->getUseAndCondition()) {
             $quotedValues = implode(' and ', $quotedValues);
         } else {
             $quotedValues = implode(' or ', $quotedValues);
         }
         $quotedValues = '(' . $quotedValues . ')';
         if (!empty($quotedValues)) {
             if ($isPrecondition) {
                 $productList->addCondition($quotedValues, "PRECONDITION_" . $field);
             } else {
                 $productList->addCondition($quotedValues, $field);
             }
         }
     }
     return $currentFilter;
 }
示例#8
0
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     $field = $this->getField($filterDefinition);
     $preSelect = $this->getPreSelect($filterDefinition);
     $value = $params[$field];
     if (empty($value) && !$params['is_reload']) {
         if (!empty($preSelect) || $preSelect == '0') {
             $value = explode(",", $preSelect);
         }
     } else {
         if (!empty($value) && in_array(OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING, $value)) {
             $value = null;
         }
     }
     $currentFilter[$field] = $value;
     if (!empty($value)) {
         $quotedValues = array();
         foreach ($value as $v) {
             if (!empty($v)) {
                 $quotedValues[] = $productList->quote($v);
             }
         }
         if (!empty($quotedValues)) {
             if ($filterDefinition->getUseAndCondition()) {
                 foreach ($quotedValues as $value) {
                     if ($isPrecondition) {
                         $productList->addCondition($field . " = " . $value, "PRECONDITION_" . $field);
                     } else {
                         $productList->addCondition($field . " = " . $value, $field);
                     }
                 }
             } else {
                 if ($isPrecondition) {
                     $productList->addCondition($field . " IN (" . implode(",", $quotedValues) . ")", "PRECONDITION_" . $field);
                 } else {
                     $productList->addCondition($field . " IN (" . implode(",", $quotedValues) . ")", $field);
                 }
             }
         }
     }
     return $currentFilter;
 }
示例#9
0
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     $field = $this->getField($filterDefinition);
     $preSelect = $this->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)) {
         if ($isPrecondition) {
             $productList->addCondition("TRIM(`" . $field . "`) LIKE " . $productList->quote("%" . $value . "%"), "PRECONDITION_" . $field);
         } else {
             $productList->addCondition("TRIM(`" . $field . "`) LIKE " . $productList->quote("%" . $value . "%"), $field);
         }
     }
     return $currentFilter;
 }
示例#10
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) . ",%";
         if ($isPrecondition) {
             $productList->addCondition($filterDefinition->getField() . " LIKE " . $productList->quote($value), "PRECONDITION_" . $filterDefinition->getField());
         } else {
             $productList->addCondition($filterDefinition->getField() . " LIKE " . $productList->quote($value), $filterDefinition->getField());
         }
     }
     return $currentFilter;
 }
示例#11
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;
 }
示例#12
0
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     $field = $this->getField($filterDefinition);
     $value = $params[$field];
     if (empty($value)) {
         $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;
 }
示例#13
0
 /**
  * @param OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition
  * @param OnlineShop_Framework_IProductList                 $productList
  * @param array                                             $currentFilter
  * @param array                                             $params
  * @param bool                                              $isPrecondition
  *
  * @return array
  */
 public function addCondition(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter, $params, $isPrecondition = false)
 {
     // init
     $field = $this->getField($filterDefinition);
     $preSelect = $this->getPreSelect($filterDefinition);
     $value = $params[$field];
     // set defaults
     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;
     // add condition
     if (!empty($value)) {
         $productList->addCondition(trim($value), $field);
     }
     return $currentFilter;
 }