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)) { $productList->addRelationCondition($field, $value); } 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']) { $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; }