/** * @return rex_be_page */ public static function getCurrentPageObject() { if (!self::$pageObject) { self::$pageObject = self::getPageObject(self::getCurrentPage()); } return self::$pageObject; }
public static function checkPagePermissions(rex_user $user) { $check = function (rex_be_page $page) use(&$check, $user) { if (!$page->checkPermission($user)) { return false; } $subpages = $page->getSubpages(); foreach ($subpages as $key => $subpage) { if (!$check($subpage)) { unset($subpages[$key]); } } $page->setSubpages($subpages); return true; }; foreach (self::$pages as $key => $page) { if (!$check($page)) { unset(self::$pages[$key]); } } self::$pageObject = null; $page = self::getCurrentPageObject(); // --- page pruefen und benoetigte rechte checken if (!$page) { // --- fallback zur user startpage -> rechte checken $page = self::getPageObject($user->getStartPage()); if (!$page) { // --- fallback zur system startpage -> rechte checken $page = self::getPageObject(rex::getProperty('start_page')); if (!$page) { // --- fallback zur profile page $page = self::getPageObject('profile'); } } rex_response::setStatus(rex_response::HTTP_NOT_FOUND); rex_response::sendRedirect($page->getHref()); } if ($page !== ($leaf = $page->getFirstSubpagesLeaf())) { rex_response::setStatus(rex_response::HTTP_MOVED_PERMANENTLY); $url = $leaf->hasHref() ? $leaf->getHref() : rex_context::restore()->getUrl(['page' => $leaf->getFullKey()], false); rex_response::sendRedirect($url); } }