/** * @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 getAllLayoutsAction() { // get all classes $resultList = []; $mapping = []; $customLayouts = new Object\ClassDefinition\CustomLayout\Listing(); $customLayouts->setOrder("ASC"); $customLayouts->setOrderKey("name"); $customLayouts = $customLayouts->load(); foreach ($customLayouts as $layout) { $mapping[$layout->getClassId()][] = $layout; } $classList = new Object\ClassDefinition\Listing(); $classList->setOrder("ASC"); $classList->setOrderKey("name"); $classList = $classList->load(); foreach ($classList as $class) { $classMapping = $mapping[$class->getId()]; if ($classMapping) { $resultList[] = ["type" => "master", "id" => $class->getId() . "_" . 0, "name" => $class->getName()]; foreach ($classMapping as $layout) { $resultList[] = ["type" => "custom", "id" => $class->getId() . "_" . $layout->getId(), "name" => $class->getName() . " - " . $layout->getName()]; } } } $this->_helper->json(["data" => $resultList]); }