public function addCollectionsAction()
{
$ids = \Zend_Json::decode($this->getParam("collectionIds"));
if ($ids) {
$db = \Pimcore\Db::get();
$query = "select * from classificationstore_groups g, classificationstore_collectionrelations c where colId IN (" . implode(",", $ids) . ") and g.id = c.groupId";
$mappedData = [];
$groupsData = $db->fetchAll($query);
foreach ($groupsData as $groupData) {
$mappedData[$groupData["id"]] = $groupData;
}
$groupIdList = [];
$allowedGroupIds = null;
if ($this->getParam("oid")) {
$object = Object\Concrete::getById($this->getParam("oid"));
$class = $object->getClass();
$fd = $class->getFieldDefinition($this->getParam("fieldname"));
$allowedGroupIds = $fd->getAllowedGroupIds();
}
foreach ($groupsData as $groupItem) {
$groupId = $groupItem["groupId"];
if (!$allowedGroupIds || $allowedGroupIds && in_array($groupId, $allowedGroupIds)) {
$groupIdList[] = $groupId;
}
}
if ($groupIdList) {
$groupList = new Classificationstore\GroupConfig\Listing();
$groupCondition = "id in (" . implode(",", $groupIdList) . ")";
$groupList->setCondition($groupCondition);
$groupList = $groupList->load();
$keyCondition = "groupId in (" . implode(",", $groupIdList) . ")";
$keyList = new Classificationstore\KeyGroupRelation\Listing();
$keyList->setCondition($keyCondition);
$keyList->setOrderKey(["sorter", "id"]);
$keyList->setOrder(["ASC", "ASC"]);
$keyList = $keyList->load();
foreach ($groupList as $groupData) {
$data[$groupData->getId()] = ["name" => $groupData->getName(), "id" => $groupData->getId(), "description" => $groupData->getDescription(), "keys" => [], "collectionId" => $mappedData[$groupId]["colId"]];
}
foreach ($keyList as $keyData) {
$groupId = $keyData->getGroupId();
$keyList = $data[$groupId]["keys"];
$definition = $keyData->getDefinition();
$keyList[] = ["name" => $keyData->getName(), "id" => $keyData->getKeyId(), "description" => $keyData->getDescription(), "definition" => json_decode($definition)];
$data[$groupId]["keys"] = $keyList;
}
}
}
return $this->_helper->json($data);
}