/** * @param Concrete $object * @return array */ public static function getValidLayouts(Concrete $object) { $user = AdminTool::getCurrentUser(); $resultList = array(); $isMasterAllowed = $user->getAdmin(); $permissionSet = $object->getPermissions("layouts", $user); $layoutPermissions = self::getLayoutPermissions($object->getClassId(), $permissionSet); if (!$layoutPermissions || isset($layoutPermissions[0])) { $isMasterAllowed = true; } if ($user->getAdmin()) { $superLayout = new ClassDefinition\CustomLayout(); $superLayout->setId(-1); $superLayout->setName("Master (Admin Mode)"); $resultList[-1] = $superLayout; } if ($isMasterAllowed) { $master = new ClassDefinition\CustomLayout(); $master->setId(0); $master->setName("Master"); $resultList[0] = $master; } $classId = $object->getClassId(); $list = new ClassDefinition\CustomLayout\Listing(); $list->setOrderKey("name"); $condition = "classId = " . $list->quote($classId); if (count($layoutPermissions) && !$isMasterAllowed) { $layoutIds = array_values($layoutPermissions); $condition .= " AND id IN (" . implode(",", $layoutIds) . ")"; } $list->setCondition($condition); $list = $list->load(); if (!count($resultList) && !count($list) || count($resultList) == 1 && !count($list)) { return array(); } foreach ($list as $customLayout) { $resultList[$customLayout->getId()] = $customLayout; } return $resultList; }
public function getCustomLayoutDefinitionsAction() { $classId = $this->getParam("classId"); $list = new Object\ClassDefinition\CustomLayout\Listing(); $list->setCondition("classId = " . $list->quote($classId)); $list = $list->load(); $result = []; foreach ($list as $item) { $result[] = ["id" => $item->getId(), "name" => $item->getName() . " (ID: " . $item->getId() . ")", "default" => $item->getDefault() ?: 0]; } $this->_helper->json(["success" => true, "data" => $result]); }