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);
}