Вход Регистрация
Файл: library/XenForo/Route/ResponseSuffix.php
Строк: 63
<?php

/**
* Default route that modifies the response type based on an extension applied to
* the route path. For example, "test/index.json" will return a response type of json.
* If a match is found, the extension is stripped off so subsequent rules won't receive
* it. Using the example above, it would return a route path of "test/index".
*
* This class never returns a route match with a controller and action specified.
*
* @package XenForo_Mvc
*/
class XenForo_Route_ResponseSuffix implements XenForo_Route_Interface
{
    
/**
    * Attempts to match the routing path. See {@link XenForo_Route_Interface} for further details.
    *
    * @param string Routing path
    * @param Zend_Controller_Request_Http Request object
    * @param XenForo_Router Routing object
    *
    * @return false|XenForo_RouteMatch
    */
    
public function match($routePath, Zend_Controller_Request_Http $request, XenForo_Router $router)
    {
        
$lastDot = strrpos($routePath, '.');
        if (
$lastDot === false)
        {
            return 
false;
        }

        
$lastSlash = strrpos($routePath, '/');
        if (
$lastSlash !== false && $lastDot < $lastSlash)
        {
            return 
false;
        }

        
$responseType = substr($routePath, $lastDot + 1);
        if (
$responseType === strval(intval($responseType)))
        {
            return 
false;
        }

        
$newRoutePath = substr($routePath, 0, $lastDot);
        if (!
is_string($newRoutePath))
        {
            
$newRoutePath = '';
        }

        
$match = $router->getRouteMatch();

        
$match->setModifiedRoutePath($newRoutePath);
        if (
$responseType !== '')
        {
            
$match->setResponseType($responseType);
        }

        return 
$match;
    }
}
Онлайн: 2
Реклама