示例#1
0
 /**
  * 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;
 }
示例#2
0
 public function prepareGroupByValues(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList)
 {
     $field = $this->getField($filterDefinition);
     $productList->prepareGroupByRelationValues($field, true, !$filterDefinition->getUseAndCondition());
 }