Вход Регистрация
Файл: tools/url.php
Строк: 101
<?php

class UTIL_Url
{
    private static 
$redirectCodes = array(
        
100 => "HTTP/1.1 100 Continue",
        
101 => "HTTP/1.1 101 Switching Protocols",
        
200 => "HTTP/1.1 200 OK",
        
201 => "HTTP/1.1 201 Created",
        
202 => "HTTP/1.1 202 Accepted",
        
203 => "HTTP/1.1 203 Non-Authoritative Information",
        
204 => "HTTP/1.1 204 No Content",
        
205 => "HTTP/1.1 205 Reset Content",
        
206 => "HTTP/1.1 206 Partial Content",
        
300 => "HTTP/1.1 300 Multiple Choices",
        
301 => "HTTP/1.1 301 Moved Permanently",
        
302 => "HTTP/1.1 302 Found",
        
303 => "HTTP/1.1 303 See Other",
        
304 => "HTTP/1.1 304 Not Modified",
        
305 => "HTTP/1.1 305 Use Proxy",
        
307 => "HTTP/1.1 307 Temporary Redirect",
        
400 => "HTTP/1.1 400 Bad Request",
        
401 => "HTTP/1.1 401 Unauthorized",
        
402 => "HTTP/1.1 402 Payment Required",
        
403 => "HTTP/1.1 403 Forbidden",
        
404 => "HTTP/1.1 404 Not Found",
        
405 => "HTTP/1.1 405 Method Not Allowed",
        
406 => "HTTP/1.1 406 Not Acceptable",
        
407 => "HTTP/1.1 407 Proxy Authentication Required",
        
408 => "HTTP/1.1 408 Request Time-out",
        
409 => "HTTP/1.1 409 Conflict",
        
410 => "HTTP/1.1 410 Gone",
        
411 => "HTTP/1.1 411 Length Required",
        
412 => "HTTP/1.1 412 Precondition Failed",
        
413 => "HTTP/1.1 413 Request Entity Too Large",
        
414 => "HTTP/1.1 414 Request-URI Too Large",
        
415 => "HTTP/1.1 415 Unsupported Media Type",
        
416 => "HTTP/1.1 416 Requested range not satisfiable",
        
417 => "HTTP/1.1 417 Expectation Failed",
        
500 => "HTTP/1.1 500 Internal Server Error",
        
501 => "HTTP/1.1 501 Not Implemented",
        
502 => "HTTP/1.1 502 Bad Gateway",
        
503 => "HTTP/1.1 503 Service Unavailable",
        
504 => "HTTP/1.1 504 Gateway Time-out"
    
);

    
/**
     * Makes search engines friendly redirect to provided URL.
     * 
     * @param string $url
     * @param integer $redirectCode
     */
    
public static function redirect( $url, $redirectCode = null )
    {
        
$redirectCode = array_key_exists((int) $redirectCode, self::$redirectCodes) ? (int) $redirectCode : 301;

        
header(self::$redirectCodes[$redirectCode]);
        
header("Location: " . $url);
        exit();
    }

    
/**
     * Removes site installation subfolder from request URI
     * 
     * @param string $urlHome
     * @param string $requestUri
     * @return string
     */
    
public static function getRealRequestUri( $urlHome, $requestUri )
    {
        
$urlArray = parse_url($urlHome);

        
$originalUri = UTIL_String::removeFirstAndLastSlashes($requestUri);
        
$originalPath = UTIL_String::removeFirstAndLastSlashes($urlArray['path']);

        if ( 
$originalPath === '' )
        {
            return 
$originalUri;
        }

        
$uri = mb_substr($originalUri, (mb_strpos($originalUri, $originalPath) + mb_strlen($originalPath)));
        
$uri = trim(UTIL_String::removeFirstAndLastSlashes($uri));

        return 
$uri ? self::secureUri($uri) : '';
    }

   
/**
    * Secure uri
    *
    * @param string $uri
    * @return string
    */
    
public static function secureUri( $uri )
    {
        
// remove posible native uri encoding
        
$uriInfo = parse_url(urldecode($uri));

        if ( 
$uriInfo )
        {
            
$processedUri = '';

            
// process uri path
            
if ( !empty($uriInfo['path']) ) 
            {
                
$processedUri = implode('/', array_map('urlencode', explode('/', $uriInfo['path'])));
            }

            
// process uri params
            
if ( !empty($uriInfo['query']) )
            {
                
// parse uri params
                
$uriParams = array();
                
parse_str($uriInfo['query'], $uriParams);

                
$processedUri .= '?' . http_build_query($uriParams);
            }

            if ( !empty(
$uriInfo['fragment']) )
            {
                
$processedUri .= '#' . urlencode($uriInfo['fragment']);
            }

            return 
$processedUri;
        }
    }

    public static function 
selfUrl()
    {
        
$s = (!empty($_SERVER["HTTPS"]) && ($_SERVER["HTTPS"] == "on") ) ? 's' : '';
        
$serverProtocol = strtolower($_SERVER["SERVER_PROTOCOL"]);
        
$protocol = substr($serverProtocol, 0, strpos($serverProtocol, '/')) . $s;

        
$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":" . $_SERVER["SERVER_PORT"]);

        return 
$protocol . "://" . $_SERVER['SERVER_NAME'] . $port . self::secureUri($_SERVER['REQUEST_URI']);
    }

    public static function 
getLocalPath( $uri )
    {
        
$userFilesUrl = PEEP::getStorage()->getFileUrl(PEEP_DIR_USERFILES);
        
$path = null;

        if ( 
stripos($uri, PEEP_URL_HOME) !== false )
        {
            
$path = str_replace(PEEP_URL_HOME, PEEP_DIR_ROOT, $uri);
            
$path = str_replace('/', DS, $path);
        }
        else if ( 
stripos($uri, $userFilesUrl) !== false )
        {
            
$path = str_replace($userFilesUrl, PEEP_DIR_USERFILES, $uri);
            
$path = str_replace('/', DS, $path);
        }

        return 
$path;
    }
}
Онлайн: 0
Реклама