Admin_ClassificationstoreController::addCollectionsAction PHP Метод

addCollectionsAction() публичный Метод

    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);
    }