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; }
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; }
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; }
/** * @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; }
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; }
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; }
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; }
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; }
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 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; }
/** * @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; }