示例#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 getFilterFrontend(OnlineShop_Framework_AbstractFilterDefinitionType $filterDefinition, OnlineShop_Framework_IProductList $productList, $currentFilter)
 {
     $field = $this->getField($filterDefinition);
     $values = $productList->getGroupByRelationValues($field, true);
     $objects = array();
     Logger::log("Load Objects...", Zend_Log::INFO);
     $availableRelations = array();
     if ($filterDefinition->getAvailableRelations()) {
         $availableRelations = $this->loadAllAvailableRelations($filterDefinition->getAvailableRelations());
     }
     foreach ($values as $v) {
         if (empty($availableRelations) || $availableRelations[$v['value']] === true) {
             $objects[$v['value']] = \Pimcore\Model\Object\AbstractObject::getById($v['value']);
         }
     }
     Logger::log("done.", Zend_Log::INFO);
     if ($filterDefinition->getScriptPath()) {
         $script = $filterDefinition->getScriptPath();
     } else {
         $script = $this->script;
     }
     return $this->view->partial($script, array("hideFilter" => $filterDefinition->getRequiredFilterField() && empty($currentFilter[$filterDefinition->getRequiredFilterField()]), "label" => $filterDefinition->getLabel(), "currentValue" => $currentFilter[$field], "values" => $values, "objects" => $objects, "fieldname" => $field, "metaData" => $filterDefinition->getMetaData()));
 }