/** * returns all possible group by values for given column group, product list and field combination * * @param $columnGroup * @param OnlineShop_Framework_IProductList $productList * @param string $field * @return array */ public static function getGroupByValuesForFilterGroup($columnGroup, OnlineShop_Framework_IProductList $productList, $field) { $columnType = self::getColumnTypeForColumnGroup($columnGroup); $data = array(); if ($columnType == "relation") { $productList->prepareGroupByRelationValues($field); $values = $productList->getGroupByRelationValues($field); foreach ($values as $v) { $obj = \Pimcore\Model\Object\AbstractObject::getById($v); if ($obj) { $name = $obj->getKey(); if (method_exists($obj, "getName")) { $name = $obj->getName(); } $data[$v] = array("key" => $v, "value" => $name . " (" . $obj->getId() . ")"); } } } else { if ($columnType == "multiselect") { $values = $productList->getGroupByValues($field); sort($values); foreach ($values as $v) { $helper = explode(OnlineShop_Framework_IndexService_Tenant_IWorker::MULTISELECT_DELIMITER, $v); foreach ($helper as $h) { $data[$h] = array("key" => $h, "value" => $h); } } } else { if ($columnType == "category") { $values = $productList->getGroupByValues($field); foreach ($values as $v) { $helper = explode(",", $v); foreach ($helper as $h) { $obj = \Pimcore\Model\Object\AbstractObject::getById($h); if ($obj) { $name = $obj->getKey(); if (method_exists($obj, "getName")) { $name = $obj->getName(); } $data[$h] = array("key" => $h, "value" => $name . " (" . $obj->getId() . ")"); } } } } else { $values = $productList->getGroupByValues($field); sort($values); foreach ($values as $v) { $data[] = array("key" => $v, "value" => $v); } } } } return $data; }
public function prepareGroupByValues(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList) { $field = $this->getField($filterDefinition); $productList->prepareGroupByRelationValues($field, true, !$filterDefinition->getUseAndCondition()); }