Inheritance: extends Pimcore\Model\Listing\AbstractListing
コード例 #1
0
 public function enrichLayoutDefinition($object)
 {
     $groupCollectionMapping = $this->recursiveGetActiveGroupCollectionMapping($object);
     $this->activeGroupDefinitions = [];
     $activeGroupIds = $this->recursiveGetActiveGroupsIds($object);
     if (!$activeGroupIds) {
         return;
     }
     $filteredGroupIds = [];
     foreach ($activeGroupIds as $groupId => $enabled) {
         if ($enabled) {
             $filteredGroupIds[] = $groupId;
         }
     }
     $condition = "ID in (" . implode(',', $filteredGroupIds) . ")";
     $groupList = new Object\Classificationstore\GroupConfig\Listing();
     $groupList->setCondition($condition);
     $groupList->setOrder(["ASC", "ASC"]);
     $groupList = $groupList->load();
     /** @var  $group Object\Classificationstore\GroupConfig */
     foreach ($groupList as $group) {
         $keyList = [];
         $relation = new Object\Classificationstore\KeyGroupRelation\Listing();
         $relation->setCondition("groupId = " . $relation->quote($group->getId()));
         $relation->setOrderKey(["sorter", "id"]);
         $relation->setOrder(["ASC", "ASC"]);
         $relation = $relation->load();
         /** @var  $key Object\Classificationstore\KeyGroupRelation */
         foreach ($relation as $key) {
             $definition = \Pimcore\Model\Object\Classificationstore\Service::getFieldDefinitionFromKeyConfig($key);
             if (method_exists($definition, "__wakeup")) {
                 $definition->__wakeup();
             }
             if ($definition) {
                 $definition->setMandatory($definition->getMandatory() || $key->isMandatory());
             }
             $keyList[] = ["name" => $key->getName(), "id" => $key->getKeyId(), "description" => $key->getDescription(), "definition" => $definition];
         }
         $this->activeGroupDefinitions[$group->getId()] = ["name" => $group->getName(), "id" => $group->getId(), "description" => $group->getDescription(), "keys" => $keyList];
     }
     if ($groupCollectionMapping) {
         $collectionIds = array_values($groupCollectionMapping);
         $relation = new Object\Classificationstore\CollectionGroupRelation\Listing();
         $condition = "colId IN (" . implode(",", $collectionIds) . ")";
         $relation->setCondition($condition);
         $relation = $relation->load();
         $sorting = [];
         /** @var $item Object\Classificationstore\CollectionGroupRelation */
         foreach ($relation as $item) {
             $sorting[$item->getGroupId()] = $item->getSorter();
         }
         usort($this->activeGroupDefinitions, function ($a, $b) use($sorting) {
             $s1 = $sorting[$a["id"]] ? $sorting[$a["id"]] : 0;
             $s2 = $sorting[$b["id"]] ? $sorting[$b["id"]] : 0;
             if ($s1 < $s2) {
                 return 1;
             } elseif ($s2 > $s1) {
                 return -1;
             } else {
                 return 0;
             }
         });
     }
 }
コード例 #2
0
 public function addGroupsAction()
 {
     $ids = \Zend_Json::decode($this->getParam("groupIds"));
     $keyCondition = "groupId in (" . implode(",", $ids) . ")";
     $keyList = new Classificationstore\KeyGroupRelation\Listing();
     $keyList->setCondition($keyCondition);
     $keyList->setOrderKey(array("sorter", "id"));
     $keyList->setOrder(array("ASC", "ASC"));
     $keyList = $keyList->load();
     $groupCondition = "id in (" . implode(",", $ids) . ")";
     $groupList = new Classificationstore\GroupConfig\Listing();
     $groupList->setCondition($groupCondition);
     $groupList->setOrder("ASC");
     $groupList->setOrderKey("id");
     $groupList = $groupList->load();
     $data = array();
     foreach ($groupList as $groupData) {
         $data[$groupData->getId()] = array("name" => $groupData->getName(), "id" => $groupData->getId(), "description" => $groupData->getDescription(), "keys" => array());
     }
     foreach ($keyList as $keyData) {
         $groupId = $keyData->getGroupId();
         $keyList = $data[$groupId]["keys"];
         $type = $keyData->getType();
         $definition = json_decode($keyData->getDefinition());
         $definition = \Pimcore\Model\Object\Classificationstore\Service::getFieldDefinitionFromJson($definition, $type);
         if (method_exists($definition, "__wakeup")) {
             $definition->__wakeup();
         }
         $keyList[] = array("name" => $keyData->getName(), "id" => $keyData->getKeyId(), "description" => $keyData->getDescription(), "definition" => $definition);
         $data[$groupId]["keys"] = $keyList;
     }
     return $this->_helper->json($data);
 }
コード例 #3
0
ファイル: GroupConfig.php プロジェクト: sfie/pimcore
 /** Returns all keys belonging to this group
  * @return KeyGroupRelation
  */
 public function getRelations()
 {
     $list = new KeyGroupRelation\Listing();
     $list->setCondition("groupId = " . $this->id);
     $list = $list->load();
     return $list;
 }
コード例 #4
0
 public function enrichLayoutDefinition($object)
 {
     $this->activeGroupDefinitions = array();
     $activeGroupIds = $this->recursiveGetActiveGroupsIds($object);
     if (!$activeGroupIds) {
         return;
     }
     $filteredGroupIds = array();
     foreach ($activeGroupIds as $groupId => $enabled) {
         if ($enabled) {
             $filteredGroupIds[] = $groupId;
         }
     }
     $condition = "ID in (" . implode(',', $filteredGroupIds) . ")";
     $groupList = new Object\Classificationstore\GroupConfig\Listing();
     $groupList->setCondition($condition);
     $groupList->setOrderKey(array("sorter", "id"));
     $groupList->setOrder(array("ASC", "ASC"));
     $groupList = $groupList->load();
     /** @var  $group Object\Classificationstore\GroupConfig */
     foreach ($groupList as $group) {
         $keyList = array();
         $relation = new Object\Classificationstore\KeyGroupRelation\Listing();
         $relation->setCondition("groupId = " . $relation->quote($group->getId()));
         $relation->setOrderKey(array("sorter", "id"));
         $relation->setOrder(array("ASC", "ASC"));
         $relation = $relation->load();
         foreach ($relation as $key) {
             $definition = \Pimcore\Model\Object\Classificationstore\Service::getFieldDefinitionFromKeyConfig($key);
             if (method_exists($definition, "__wakeup")) {
                 $definition->__wakeup();
             }
             $keyList[] = array("name" => $key->getName(), "id" => $key->getKeyId(), "description" => $key->getDescription(), "definition" => $definition);
         }
         $this->activeGroupDefinitions[$group->getId()] = array("name" => $group->getName(), "id" => $group->getId(), "description" => $group->getDescription(), "keys" => $keyList);
     }
 }
コード例 #5
0
ファイル: KeyGroupRelation.php プロジェクト: pimcore/pimcore
 /**
  * @param $groupId
  * @param $keyId
  * @return KeyGroupRelation
  */
 public static function getByGroupAndKeyId($groupId, $keyId)
 {
     $relation = new KeyGroupRelation\Listing();
     $relation->setCondition("groupId = " . $relation->quote($groupId) . " and keyId = " . $relation->quote($keyId));
     $relation->setLimit(1);
     $relation = $relation->load();
     if ($relation) {
         return $relation[0];
     }
 }
コード例 #6
0
 public function propertiesAction()
 {
     if ($this->getParam("data")) {
         $dataParam = $this->getParam("data");
         $data = \Zend_Json::decode($dataParam);
         $id = $data["id"];
         $config = Classificationstore\KeyConfig::getById($id);
         foreach ($data as $key => $value) {
             if ($key != "id") {
                 $setter = "set" . $key;
                 if (method_exists($config, $setter)) {
                     $config->{$setter}($value);
                 }
             }
         }
         $config->save();
         $item = $this->getConfigItem($config);
         $this->_helper->json(["success" => true, "data" => $item]);
     } else {
         $storeId = $this->getParam("storeId");
         $frameName = $this->getParam("frameName");
         $db = \Pimcore\Db::get();
         $conditionParts = [];
         if ($frameName) {
             $keyCriteria = " FALSE ";
             $frameConfig = Classificationstore\CollectionConfig::getByName($frameName, $storeId);
             if ($frameConfig) {
                 // get all keys within that collection / frame
                 $frameId = $frameConfig->getId();
                 $groupList = new Pimcore\Model\Object\Classificationstore\CollectionGroupRelation\Listing();
                 $groupList->setCondition("colId = " . $db->quote($frameId));
                 $groupList = $groupList->load();
                 $groupIdList = [];
                 foreach ($groupList as $groupEntry) {
                     $groupIdList[] = $groupEntry->getGroupId();
                 }
                 if ($groupIdList) {
                     $keyIdList = new Classificationstore\KeyGroupRelation\Listing();
                     $keyIdList->setCondition("groupId in (" . implode(",", $groupIdList) . ")");
                     $keyIdList = $keyIdList->load();
                     if ($keyIdList) {
                         $keyIds = [];
                         /** @var  $keyEntry Classificationstore\KeyGroupRelation */
                         foreach ($keyIdList as $keyEntry) {
                             $keyIds[] = $keyEntry->getKeyId();
                         }
                         if ($keyIds) {
                             $keyCriteria = " id in (" . implode(",", $keyIds) . ")";
                         }
                     }
                 }
             }
             if ($keyCriteria) {
                 $conditionParts[] = $keyCriteria;
             }
         }
         $start = 0;
         $limit = 15;
         $orderKey = "name";
         $order = "ASC";
         if ($this->getParam("dir")) {
             $order = $this->getParam("dir");
         }
         $sortingSettings = \Pimcore\Admin\Helper\QueryParams::extractSortingSettings($this->getAllParams());
         if ($sortingSettings['orderKey'] && $sortingSettings['order']) {
             $orderKey = $sortingSettings['orderKey'];
             $order = $sortingSettings['order'];
         }
         if ($this->getParam("overrideSort") == "true") {
             $orderKey = "id";
             $order = "DESC";
         }
         if ($this->getParam("limit")) {
             $limit = $this->getParam("limit");
         }
         if ($this->getParam("start")) {
             $start = $this->getParam("start");
         }
         $list = new Classificationstore\KeyConfig\Listing();
         if ($limit > 0) {
             $list->setLimit($limit);
         }
         $list->setOffset($start);
         $list->setOrder($order);
         $list->setOrderKey($orderKey);
         $searchfilter = $this->getParam("searchfilter");
         if ($searchfilter) {
             $conditionParts[] = "(name LIKE " . $db->quote("%" . $searchfilter . "%") . " OR description LIKE " . $db->quote("%" . $searchfilter . "%") . ")";
         }
         if ($storeId) {
             $conditionParts[] = "(storeId = " . $storeId . ")";
         }
         if ($this->getParam("filter")) {
             $filterString = $this->getParam("filter");
             $filters = json_decode($filterString);
             foreach ($filters as $f) {
                 if (\Pimcore\Tool\Admin::isExtJS6()) {
                     $conditionParts[] = $db->getQuoteIdentifierSymbol() . $f->property . $db->getQuoteIdentifierSymbol() . " LIKE " . $db->quote("%" . $f->value . "%");
                 } else {
                     $conditionParts[] = $db->getQuoteIdentifierSymbol() . $f->field . $db->getQuoteIdentifierSymbol() . " LIKE " . $db->quote("%" . $f->value . "%");
                 }
             }
         }
         $condition = implode(" AND ", $conditionParts);
         $list->setCondition($condition);
         if ($this->getParam("groupIds") || $this->getParam("keyIds")) {
             $db = Db::get();
             if ($this->getParam("groupIds")) {
                 $ids = \Zend_Json::decode($this->getParam("groupIds"));
                 $col = "group";
             } else {
                 $ids = \Zend_Json::decode($this->getParam("keyIds"));
                 $col = "id";
             }
             $condition = $db->getQuoteIdentifierSymbol() . $col . $db->getQuoteIdentifierSymbol() . " IN (";
             $count = 0;
             foreach ($ids as $theId) {
                 if ($count > 0) {
                     $condition .= ",";
                 }
                 $condition .= $theId;
                 $count++;
             }
             $condition .= ")";
             $list->setCondition($condition);
         }
         $list->load();
         $configList = $list->getList();
         $rootElement = [];
         $data = [];
         foreach ($configList as $config) {
             $item = $this->getConfigItem($config);
             $data[] = $item;
         }
         $rootElement["data"] = $data;
         $rootElement["success"] = true;
         $rootElement["total"] = $list->getTotalCount();
         return $this->_helper->json($rootElement);
     }
 }
コード例 #7
0
 public function addGroupsAction()
 {
     $db = Resource::get();
     $ids = \Zend_Json::decode($this->_getParam("groupIds"));
     $keyCondition = "groupId in (" . implode(",", $ids) . ")";
     $keyList = new Classificationstore\KeyGroupRelation\Listing();
     $keyList->setCondition($keyCondition);
     $keyList = $keyList->load();
     $groupCondition = "id in (" . implode(",", $ids) . ")";
     $groupList = new Classificationstore\GroupConfig\Listing();
     $groupList->setCondition($groupCondition);
     $groupList->setOrder("ASC");
     $groupList->setOrderKey("id");
     $groupList = $groupList->load();
     $data = array();
     foreach ($groupList as $groupData) {
         $data[$groupData->getId()] = array("name" => $groupData->getName(), "id" => $groupData->getId(), "description" => $groupData->getDescription(), "keys" => array());
     }
     foreach ($keyList as $keyData) {
         $groupId = $keyData->getGroupId();
         $keyList = $data[$groupId]["keys"];
         $definition = $keyData->getDefinition();
         $keyList[] = array("name" => $keyData->getName(), "id" => $keyData->getKeyId(), "description" => $keyData->getDescription(), "definition" => json_decode($definition));
         $data[$groupId]["keys"] = $keyList;
     }
     //        $data = array_values($data);
     return $this->_helper->json($data);
 }
コード例 #8
0
 public function enrichLayoutDefinition($object)
 {
     $groupList = new Object\Classificationstore\GroupConfig\Listing();
     $groupList = $groupList->load();
     $this->activeGroupDefinitions = array();
     $activeGroupIds = $this->recursiveGetActiveGroupsIds($object);
     asort($activeGroupIds);
     /** @var  $group Object\Classificationstore\GroupConfig */
     foreach ($activeGroupIds as $groupId => $enabled) {
         if ($enabled) {
             $group = Object\Classificationstore\GroupConfig::getById($groupId);
             $keyList = array();
             $relation = new Object\Classificationstore\KeyGroupRelation\Listing();
             $relation->setCondition("groupId = " . $relation->quote($group->getId()));
             $relation = $relation->load();
             foreach ($relation as $key) {
                 //                    $definition = $key->getDefinition();
                 $definition = \Pimcore\Model\Object\Classificationstore\Service::getFieldDefinitionFromKeyConfig($key);
                 if (method_exists($definition, "__wakeup")) {
                     $definition->__wakeup();
                 }
                 $keyList[] = array("name" => $key->getName(), "id" => $key->getKeyId(), "description" => $key->getDescription(), "definition" => $definition);
             }
             $this->activeGroupDefinitions[$group->getId()] = array("name" => $group->getName(), "id" => $group->getId(), "description" => $group->getDescription(), "keys" => $keyList);
         }
     }
 }