示例#1
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;
 }
示例#2
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;
 }
示例#3
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']) {
         $o = $preSelect;
         if (!empty($o)) {
             if (is_object($o)) {
                 $value = $o->getId();
             } else {
                 $value = $o;
             }
         }
     } else {
         if ($value == OnlineShop_Framework_FilterService_AbstractFilterType::EMPTY_STRING) {
             $value = null;
         }
     }
     $currentFilter[$field] = $value;
     if (!empty($value)) {
         //            if($isPrecondition) {
         //                $productList->addRelationCondition("PRECONDITION_" . $filterDefinition->getField(),  "dest = " . $productList->quote($value));
         //            } else {
         $productList->addRelationCondition($field, "dest = " . $productList->quote($value));
         //            }
     }
     return $currentFilter;
 }
示例#4
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;
 }
示例#5
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;
 }
示例#6
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']) {
         $objects = $preSelect;
         $value = array();
         if (!is_array($objects)) {
             $objects = explode(",", $objects);
         }
         if (is_array($objects)) {
             foreach ($objects as $o) {
                 if (is_object($o)) {
                     $value[] = $o->getId();
                 } else {
                     $value[] = $o;
                 }
             }
         }
     } 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) {
                     $productList->addRelationCondition($field, "dest = " . $value);
                 }
             } else {
                 $productList->addRelationCondition($field, "dest IN (" . implode(",", $quotedValues) . ")");
             }
         }
     }
     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;
 }