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; } }); } }
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); }
/** 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; }
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); } }
/** * @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]; } }
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); } }
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); }
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); } } }