/** * Возвращает правильную адресацию по переданому названию страницы(экшену) * * @param string $sAction Экшен или путь, например, "people/top" или "/" * @return string */ public static function GetPath($sAction) { if (!$sAction or $sAction == '/') { return self::GetPathRootWeb() . (self::$sPrefixUrl ? '/' . self::$sPrefixUrl : '') . '/'; } // Если пользователь запросил action по умолчанию $sPage = $sAction == 'default' ? self::getInstance()->aConfigRoute['config']['default']['action'] : $sAction; $aUrl = explode('/', $sPage); $sPage = $sPageOriginal = array_shift($aUrl); $sAdditional = join('/', $aUrl); // Смотрим, есть ли правило rewrite $sPage = self::getInstance()->Rewrite($sPage); /** * Если нет GET параметров, то добавляем в конец '/' */ if ($sAdditional and strpos($sAdditional, '?') === false) { $sAdditional .= '/'; } $bHttpSecureForceOld = self::$bHttpSecureForce; $bHttpNotSecureForceOld = self::$bHttpNotSecureForce; /** * Проверяем на необходимость принудительного использования https */ $aActionsSecure = (array) Config::Get('router.force_secure'); if ($aActionsSecure) { if (in_array($sPageOriginal, (array) Config::Get('router.force_secure'))) { self::$bHttpSecureForce = true; } else { self::$bHttpNotSecureForce = true; } } $sPath = self::GetPathRootWeb() . (self::$sPrefixUrl ? '/' . self::$sPrefixUrl : '') . "/{$sPage}/" . ($sAdditional ? "{$sAdditional}" : ''); /** * Возвращаем значения обратно */ self::$bHttpSecureForce = $bHttpSecureForceOld; self::$bHttpNotSecureForce = $bHttpNotSecureForceOld; return $sPath; }