function throwErrorPage($code) { if ($code == "404") { $header = $_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found'; } else { if ($code == "403") { $header = $_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden'; } else { $header = $_SERVER['SERVER_PROTOCOL'] . ' ' . $code; } } header($header); $errorPage = sConfig()->getVar('CONFIG/ERRORPAGES/ERROR_' . $code); if ($errorPage && $errorPage != '') { $request_path_string = getRequestPathString(explode('/', 'page' . $errorPage)); $request_path = getRequestPathArray($request_path_string); $psite = $request_path[1]; if ((int) $psite > 0) { $sinfo = sSites()->get($psite); $siteID = (int) $psite; } else { $sinfo = sSites()->getByPName($psite); $siteID = $sinfo['ID']; } $pageMgr = new PageMgr($siteID); $pageID = $pageMgr->getPageIdByPname($request_path[count($request_path) - 1]); $page = $pageMgr->getPage($pageID); $pageInfo = $page->get(); $version = $page->getLatestVersion(); renderPage($page, $version, $pageInfo, $pageMgr, $sinfo); } else { echo $header; } die; }
$rootlevel = $copyjobs[$i]["LEVEL"]; $copystarted = true; $newPageID = $TargetPageMgr->add($target); if (!$newPageID) { $permissionDenied = true; break; } else { $newPage = $TargetPageMgr->getPage($newPageID); $newPage->copyFrom($sourcePage); $newPage->setActive(1); // Copy PName (and generate new, if needed) $sourcePName = $oldPageInfo['PNAME']; if (!$sourcePName) { $sourcePName = $oldPageInfo['NAME']; } if ($TargetPageMgr->getPageIdByPname($sourcePName)) { $sourcePName = $newPage->calcPName(); } $newPage->setPName($sourcePName); $jsQueue->add($newPageID, HISTORYTYPE_PAGE, 'PAGE_ADD', sGuiUS(), NULL); $idmap[$oldpage] = $newPageID; // Inherit permissions of the parent of the newly created copy /*$allPerms = $sourcePage->permissions->getPermissions(); foreach($allPerms as $permIdx => $permItem) { $allPerms[$permIdx]['OID'] = $newPageID; } $newPage->permissions->clear(); $newPage->permissions->setPermissions($allPerms);*/ // copy Extensions $newPage->copyExtensionsFrom($sourcePage); $newPage->newVersion();
} else { // Throw status 404 throwErrorPage('404'); } } elseif (strlen($psite) > 1) { $sinfo = sSites()->getByPName($psite); if ((int) $psite > 0) { $siteID = (int) $psite; } else { $siteID = $sinfo['ID']; } if ($siteID > 0) { $pageMgr = new PageMgr($siteID); $pname = $request_path[count($request_path) - 1]; if (strlen($pname) > 0 && count($request_path) > 2 && strlen($request_path[count($request_path) - 1]) > 0) { $pageID = $pageMgr->getPageIdByPname($pname); } if ($pageID < 1 && $sinfo['ID'] > 0 && count($request_path) == 2) { // Use first page in that site $pagesList = $pageMgr->getTree($pageMgr->tree->getRoot(), 2); foreach ($pagesList as $currPage) { $tmpPage = $pageMgr->getPage($currPage['ID']); if ($tmpPage) { $pageInfo = $tmpPage->get(); if ($pageInfo && $pageInfo['DELETED'] == 0 && $currPage['LEVEL'] == 2 && $pageID == 0) { $pageID = $currPage['ID']; $pagePName = $currPage['PNAME']; } } } if ($pagePName) {
/** * Calculates a unique permanent name for this Page * * @param string $iteration (optional) Iteration * @return string Permanent name */ function calcPName($iteration = "") { $pageID = $this->_id; $pinfo = $this->get(); $pagename = $pinfo["NAME"]; if ((int) sConfig()->getVar("CONFIG/CASE_SENSITIVE_URLS") == 0) { $pagename = strtolower($pagename); } $pname = $this->filterPName($pagename); if (is_numeric($pname)) { $pname = 'page_' . $pname; } $pageMgr = new PageMgr($this->getSite()); if ($iteration != '') { $checkpinfo = $pageMgr->getPageIdByPname($pname . '_' . $iteration); } else { $checkpinfo = $pageMgr->getPageIdByPname($pname); } if ($checkpinfo["ID"] == $pageID) { if ($iteration != '') { return $pname . '_' . $iteration; } else { return $pname; } } else { if ($checkpinfo["ID"] == NULL) { if ($iteration != '') { return $pname . '_' . $iteration; } else { return $pname; } } else { if ($iteration == "") { $iteration = 1; } return $this->calcPName(++$iteration); } } }
function createSpecialURLfromShortURL($shortURL) { $siteMgr = new Sites(); $webRoot = rtrim(ltrim((string) sConfig()->getVar("CONFIG/DIRECTORIES/WEBROOT"), '/'), '/'); $shortURL = urldecode($shortURL); // Remove webroot prefix, if present if (strlen($webRoot) && strpos($shortURL, $webRoot) === 0) { $shortURL = substr($shortURL, strlen($webRoot . '/')); } if (strlen($webRoot) && strpos($shortURL, '/' . $webRoot) === 0) { $shortURL = substr($shortURL, strlen('/' . $webRoot . '/')); } $urlArray = explode('/', ltrim(rtrim($shortURL, '/'), '/')); $fileMgr = sFileMgr(); switch (strtolower($urlArray[0])) { case 'image': $specialType = 'IMG'; case 'download': if (!$specialType) { $specialType = 'DOWN'; } // Check for file $fileID = $fileMgr->getFileIdByPname($urlArray[1]); if ($fileID) { $specialURL = '§§LINKTO:' . $specialType . ':' . $fileID . '§§'; if (count($urlArray) > 2) { array_shift($urlArray); array_shift($urlArray); $specialURL .= '/' . implode('/', $urlArray); } return $specialURL; } break; default: // Check for page $siteInfo = $siteMgr->getByPName($urlArray[0]); if ($siteInfo) { $pageMgr = new PageMgr($siteInfo['ID']); $lastElement = $urlArray[count($urlArray) - 1]; if (substr($lastElement, 0, 1) == ':') { $lastElement = $urlArray[count($urlArray) - 2]; $suffix = '/' . $urlArray[count($urlArray) - 1]; } $pName = $lastElement; $pageID = $pageMgr->getPageIdByPname($pName); if ($pageID) { $specialURL = '§§LINKTO:PAGE:' . $siteInfo['ID'] . ':' . $pageID . '§§' . $suffix; return $specialURL; } } break; } return false; }