public function getRequestedPage() { if ($this->requestedFile != null) { return $this->requestedFile; } $page = $this->getScriptName(); $page = IO\Path::normalize($page); if (IO\Path::validate($page)) { return $this->requestedFile = $page; } throw new SystemException("Script name is not valid"); }
public function convertToPath() { if ($this->uriType != UriType::RELATIVE) { $path = $this->parse(UriPart::PATH); } else { $path = $this->uri; $p = strpos($path, "?"); if ($p !== false) { $path = substr($path, 0, $p); } } if (substr($path, -1, 1) === "/") { $path = self::addDirectoryIndex($path); } $path = IO\Path::normalize($path); if (IO\Path::validate($path)) { return $path; } throw new \Bitrix\Main\SystemException("Uri is not valid"); }
private function transferUri($url) { $url = IO\Path::normalize($url); $urlTmp = trim($url, " \t\n\r\v\\/"); if (empty($urlTmp)) { throw new ArgumentNullException("url"); } $ext = IO\Path::getExtension($url); if (strtolower($ext) != "php") { throw new SystemException("Only php files are allowable for url rewriting"); } $arUrl = explode("/", $url); $rootDirName = ""; while (!empty($arUrl) && ($rootDirName = array_shift($arUrl)) === "") { } $rootDirName = strtolower(str_replace(".", "", $rootDirName)); if (in_array($rootDirName, array("bitrix", "local", "upload"))) { throw new SystemException(sprintf("Can not use path '%s' for url rewriting", $url)); } if (!IO\Path::validate($url)) { throw new SystemException(sprintf("Path '%s' is not valid", $url)); } $absUrl = IO\Path::convertRelativeToAbsolute($url); if (!IO\File::isFileExists($absUrl)) { throw new SystemException(sprintf("Path '%s' is not found", $url)); } $absUrlPhysical = IO\Path::convertLogicalToPhysical($absUrl); global $APPLICATION, $USER, $DB; include_once $absUrlPhysical; die; }
/** * Converts request uri into path safe file with .html extention. * Returns empty string if fails. * * @param string $Uri * @return string */ public static function convertUriToPath($Uri, $host = "") { $match = array(); if (preg_match("#^(/.+?)\\.php\\?([^\\\\/]*)#", $Uri, $match) > 0) { $PageFile = $match[1] . "@" . $match[2]; } elseif (preg_match("#^(/.+)\\.php\$#", $Uri, $match) > 0) { $PageFile = $match[1] . "@"; } elseif (preg_match("#^(/.+?|)/\\?([^\\\\/]*)#", $Uri, $match) > 0) { $PageFile = $match[1] . "/index@" . $match[2]; } elseif (preg_match("#^(/.+|)/\$#", $Uri, $match) > 0) { $PageFile = $match[1] . "/index@"; } else { return ""; } if (strlen($host) > 0) { $host = "/" . $host; $host = preg_replace("/:(\\d+)\$/", "-\\1", $host); } $PageFile = $host . str_replace(".", "_", $PageFile) . ".html"; if (!Main\IO\Path::validate($PageFile)) { return ""; } if (Main\IO\Path::normalize($PageFile) !== $PageFile) { return ""; } return $PageFile; }