Elgg  Version master
UrlMatcher.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Router;
4 
6 use Symfony\Component\Routing\Exception\ResourceNotFoundException;
7 
11 class UrlMatcher extends \Symfony\Component\Routing\Matcher\UrlMatcher {
12 
21  public function __construct(
22  RouteCollection $routes,
24  protected EventsService $events,
25  protected RouteRegistrationService $registrationService
26  ) {
27  parent::__construct($routes, $context);
28  }
29 
33  public function match(string $pathinfo): array {
34  try {
35  return parent::match($pathinfo);
36  } catch (ResourceNotFoundException $e) {
37  $result = $this->events->triggerResults('route:match', 'system', ['pathinfo' => $pathinfo]);
38  if (is_array($result) && isset($result['route'])) {
39  $name = $result['route'];
40 
41  // transform some keys inline with the route registration service
42  // @see RouteRegistrationService::register()
43  $transformed = $result;
44  $transform_keys = [
45  'controller',
46  'file',
47  'resource',
48  'handler',
49  'deprecated',
50  'middleware',
51  'detect_page_owner',
52  'use_logged_in',
53  'route',
54  ];
55  foreach ($transform_keys as $key) {
56  if (!isset($transformed[$key])) {
57  continue;
58  }
59 
60  $transformed["_{$key}"] = $transformed[$key];
61  unset($transformed[$key]);
62  }
63 
64  if (!$this->routes->get($name)) {
65  $this->registrationService->register($name, $result);
66  }
67 
68  return $transformed;
69  }
70 
71  throw $e;
72  }
73  }
74 }
if(! $user||! $user->canDelete()) $name
Definition: delete.php:22
$context
Definition: add.php:8
return[ 'admin/delete_admin_notices'=>['access'=> 'admin'], 'admin/menu/save'=>['access'=> 'admin'], 'admin/plugins/activate'=>['access'=> 'admin'], 'admin/plugins/activate_all'=>['access'=> 'admin'], 'admin/plugins/deactivate'=>['access'=> 'admin'], 'admin/plugins/deactivate_all'=>['access'=> 'admin'], 'admin/plugins/set_priority'=>['access'=> 'admin'], 'admin/security/security_txt'=>['access'=> 'admin'], 'admin/security/settings'=>['access'=> 'admin'], 'admin/security/regenerate_site_secret'=>['access'=> 'admin'], 'admin/site/cache/clear'=>['access'=> 'admin'], 'admin/site/cache/invalidate'=>['access'=> 'admin'], 'admin/site/icons'=>['access'=> 'admin'], 'admin/site/set_maintenance_mode'=>['access'=> 'admin'], 'admin/site/set_robots'=>['access'=> 'admin'], 'admin/site/theme'=>['access'=> 'admin'], 'admin/site/unlock_upgrade'=>['access'=> 'admin'], 'admin/site/settings'=>['access'=> 'admin'], 'admin/upgrade'=>['access'=> 'admin'], 'admin/upgrade/reset'=>['access'=> 'admin'], 'admin/user/ban'=>['access'=> 'admin'], 'admin/user/bulk/ban'=>['access'=> 'admin'], 'admin/user/bulk/delete'=>['access'=> 'admin'], 'admin/user/bulk/unban'=>['access'=> 'admin'], 'admin/user/bulk/validate'=>['access'=> 'admin'], 'admin/user/change_email'=>['access'=> 'admin'], 'admin/user/delete'=>['access'=> 'admin'], 'admin/user/login_as'=>['access'=> 'admin'], 'admin/user/logout_as'=>[], 'admin/user/makeadmin'=>['access'=> 'admin'], 'admin/user/resetpassword'=>['access'=> 'admin'], 'admin/user/removeadmin'=>['access'=> 'admin'], 'admin/user/unban'=>['access'=> 'admin'], 'admin/user/validate'=>['access'=> 'admin'], 'annotation/delete'=>[], 'avatar/upload'=>[], 'comment/save'=>[], 'diagnostics/download'=>['access'=> 'admin', 'controller'=> \Elgg\Diagnostics\DownloadController::class,], 'entity/chooserestoredestination'=>[], 'entity/delete'=>[], 'entity/mute'=>[], 'entity/restore'=>[], 'entity/subscribe'=>[], 'entity/trash'=>[], 'entity/unmute'=>[], 'entity/unsubscribe'=>[], 'login'=>['access'=> 'logged_out'], 'logout'=>[], 'notifications/mute'=>['access'=> 'public'], 'plugins/settings/remove'=>['access'=> 'admin'], 'plugins/settings/save'=>['access'=> 'admin'], 'plugins/usersettings/save'=>[], 'register'=>['access'=> 'logged_out', 'middleware'=>[\Elgg\Router\Middleware\RegistrationAllowedGatekeeper::class,],], 'river/delete'=>[], 'settings/notifications'=>[], 'settings/notifications/subscriptions'=>[], 'user/changepassword'=>['access'=> 'public'], 'user/requestnewpassword'=>['access'=> 'public'], 'useradd'=>['access'=> 'admin'], 'usersettings/save'=>[], 'widgets/add'=>[], 'widgets/delete'=>[], 'widgets/move'=>[], 'widgets/save'=>[],]
Definition: actions.php:76
Events service.
RequestContext Wrapper.
RouteCollection Wrapper.
UrlMatcher Wrapper.
Definition: UrlMatcher.php:11
__construct(RouteCollection $routes, RequestContext $context, protected EventsService $events, protected RouteRegistrationService $registrationService)
Create a new UrlMatcher.
Definition: UrlMatcher.php:21
match(string $pathinfo)
{}
Definition: UrlMatcher.php:33
Delegates requests to controllers based on the registered configuration.
Definition: Router.php:26
try
Definition: login_as.php:33
if($container instanceof ElggGroup && $container->guid !=elgg_get_page_owner_guid()) $key
Definition: summary.php:44