Elgg\Router::allowRewrite PHP Method

allowRewrite() public method

Filter a request through the route:rewrite hook
public allowRewrite ( Request $request ) : Request
$request Elgg\Http\Request Elgg request
return Elgg\Http\Request
    public function allowRewrite(Request $request)
    {
        $segments = $request->getUrlSegments();
        if ($segments) {
            $identifier = array_shift($segments);
        } else {
            $identifier = '';
        }
        $old = array('identifier' => $identifier, 'segments' => $segments);
        $new = _elgg_services()->hooks->trigger('route:rewrite', $identifier, $old, $old);
        if ($new === $old) {
            return $request;
        }
        if (!isset($new['identifier']) || !isset($new['segments']) || !is_string($new['identifier']) || !is_array($new['segments'])) {
            throw new RuntimeException('rewrite_path handler returned invalid route data.');
        }
        // rewrite request
        $segments = $new['segments'];
        array_unshift($segments, $new['identifier']);
        return $request->setUrlSegments($segments);
    }