/** Returns the classification store feature definition as JSON. Could be useful to provide separate endpoints * for the various sub-configs. * @return mixed */ public function classificationstoreDefinitionAction() { $this->checkUserPermission("classes"); try { if ($this->isGet()) { $condition = urldecode($this->getParam("condition")); $definition = []; $list = new Pimcore\Model\Object\Classificationstore\StoreConfig\Listing(); if ($condition) { $list->setCondition($condition); } $list->load(); $items = $list->getList(); $stores = []; foreach ($items as $item) { $stores[] = $item->getObjectVars(); } $definition["stores"] = $stores; $list = new Pimcore\Model\Object\Classificationstore\CollectionConfig\Listing(); if ($condition) { $list->setCondition($condition); } $list->load(); $items = $list->getList(); $collections = []; foreach ($items as $item) { $collections[] = $item->getObjectVars(); } $definition["collections"] = $collections; $list = new Pimcore\Model\Object\Classificationstore\GroupConfig\Listing(); if ($condition) { $list->setCondition($condition); } $list->load(); $items = $list->getList(); $groups = []; foreach ($items as $item) { $groups[] = $item->getObjectVars(); } $definition["groups"] = $groups; $list = new Pimcore\Model\Object\Classificationstore\KeyConfig\Listing(); if ($condition) { $list->setCondition($condition); } $list->load(); $items = $list->getList(); $keys = []; foreach ($items as $item) { $keys[] = $item->getObjectVars(); } $definition["keys"] = $keys; $list = new Pimcore\Model\Object\Classificationstore\CollectionGroupRelation\Listing(); if ($condition) { $list->setCondition($condition); } $list->load(); $items = $list->getList(); $relations = []; /** @var $item Pimcore\Model\Object\Classificationstore\CollectionGroupRelation */ foreach ($items as $item) { $relations[] = $item->getObjectVars(); } $definition["collections2groups"] = $relations; $list = new Pimcore\Model\Object\Classificationstore\KeyGroupRelation\Listing(); if ($condition) { $list->setCondition($condition); } $list->load(); $items = $list->getList(); $relations = []; foreach ($items as $item) { $relations[] = $item->getObjectVars(); } $definition["groups2keys"] = $relations; $this->encoder->encode(["success" => true, "data" => $definition]); } } catch (\Exception $e) { $this->encoder->encode(["success" => false, "msg" => (string) $e]); } $this->encoder->encode(["success" => false]); }
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); } }