12 use Elgg\Traits\Loggable;
84 __METHOD__ .
' requires "path" and one of controller parameters ("resource", "controller", "file" or "handler") to be set'
101 $user = $this->session_manager->getLoggedInUser();
103 if (preg_match(
'/\{username\??\}/i',
$path)) {
107 if (preg_match(
'/\{guid\??\}/i',
$path)) {
114 'group_guid' =>
'\d+',
115 'container_guid' =>
'\d+',
116 'owner_guid' =>
'\d+',
117 'username' =>
'[\p{L}\p{M}\p{Nd}._-]+',
126 if (!preg_match(
'/\{(\w*)(\?)?\}/i', $segment, $matches)) {
130 $wildcard = $matches[1];
131 if (!isset(
$defaults[$wildcard]) && isset($matches[2])) {
135 if (!isset($requirements[$wildcard])) {
136 if (array_key_exists($wildcard, $patterns)) {
137 $requirements[$wildcard] = $patterns[$wildcard];
139 $requirements[$wildcard] =
'.+?';
143 $segment =
'{' . $wildcard .
'}';
148 if ($walled !==
false) {
149 $middleware[] = WalledGarden::class;
152 if (!empty(
$options[
'group_tool'])) {
153 $middleware[] = GroupToolGatekeeper::class;
156 $middleware[] = MaintenanceGatekeeper::class;
164 $defaults[
'_detect_page_owner'] = $detect_page_owner;
165 $defaults[
'_use_logged_in'] = $use_logged_in;
182 $this->routes->remove(
$name);
193 return $this->routes->get(
$name);
200 public function all(): array {
201 return $this->routes->all();
214 $route = $this->get(
$name);
215 if ($route instanceof
Route) {
216 $deprecated = $route->getDefault(
'_deprecated');
217 if (!empty($deprecated)) {
221 foreach ($parameters as $param_key =>
$value) {
222 if (
$value !==
null && $route->getDefault($param_key) !==
null) {
224 $route->setDefault($param_key,
null);
229 $url = $this->generator->generate(
$name, $parameters, UrlGenerator::ABSOLUTE_URL);
234 $this->getLogger()->notice(
$exception->getMessage());
250 $route = $this->routes->get(
$name);
255 $requirements = $route->getRequirements();
257 $props = array_merge(array_keys($requirements), array_keys(
$defaults));
259 foreach ($props as $prop) {
260 if (str_starts_with($prop,
'_')) {
264 if (isset($parameters[$prop])) {
269 $parameters[$prop] =
'';
280 $parameters[$prop] =
$entity->$prop;
if(! $user||! $user->canDelete()) $name
$plugin_id
Remove all user and plugin settings from the give plugin ID.
$params
Saves global plugin settings.
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/invalidate'=>['access'=> 'admin'], 'admin/site/flush_cache'=>['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'], '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'=>[],]
Persistent, installation-wide key-value storage.
Exception thrown if an argument is not of the expected type.
Protects a route if site is in maintenance mode.
Protects a route from non-authenticated users in a walled garden mode.
Route registration service.
resolveRouteParameters(string $name, ?\ElggEntity $entity=null, array $parameters=[])
Populates route parameters from entity properties.
generateUrl(string $name, array $parameters=[])
Generate a absolute URL for a named route.
all()
Get all registered routes.
unregister(string $name)
Unregister a route by its name.
__construct(protected EventsService $events, protected RouteCollection $routes, protected UrlGenerator $generator, protected SessionManagerService $session_manager, protected Plugins $plugins)
Constructor.
Delegates requests to controllers based on the registered configuration.
if($who_can_change_language==='nobody') elseif($who_can_change_language==='admin_only' &&!elgg_is_admin_logged_in()) $options
foreach($plugin_guids as $guid) if(empty($deactivated_plugins)) $url
elgg_deprecated_notice(string $msg, string $dep_version)
Log a notice about deprecated use of a function, view, etc.
elgg_extract($key, $array, $default=null, bool $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.
elgg_normalize_url(string $url)
elgg_get_friendly_title(string $title)
When given a title, returns a version suitable for inclusion in a URL.