Elgg  Version 6.2
pagehandler.php
Go to the documentation of this file.
1 <?php
27 function elgg_register_route(string $name, array $params = []): \Elgg\Router\Route {
28  return _elgg_services()->routes->register($name, $params);
29 }
30 
38 function elgg_unregister_route(string $name): void {
39  _elgg_services()->routes->unregister($name);
40 }
41 
50 function elgg_get_route(string $name): ?\Elgg\Router\Route {
51  return _elgg_services()->routes->get($name);
52 }
53 
62 function elgg_get_route_for_url(string $url): ?\Elgg\Router\Route {
64 
65  $path = parse_url($url, PHP_URL_PATH);
66  try {
67  $route_info = _elgg_services()->urlMatcher->match($path);
68  if (!isset($route_info['_route'])) {
69  return null;
70  }
71 
72  $route = _elgg_services()->routes->get($route_info['_route']);
73  $route->setMatchedParameters($route_info);
74 
75  return $route;
76  } catch (\Symfony\Component\Routing\Exception\ExceptionInterface $e) {
77  // route matcher exception
78  return null;
79  }
80 }
81 
88 function elgg_get_current_route(): ?\Elgg\Router\Route {
89  return _elgg_services()->request->getRoute();
90 }
91 
98 function elgg_get_current_route_name(): string {
99  $route = _elgg_services()->request->getRoute();
100  return isset($route) ? $route->getName() : '';
101 }
102 
111 function elgg_route_exists(string $name): bool {
112  return _elgg_services()->routes->get($name) instanceof \Elgg\Router\Route;
113 }
114 
121 function elgg_get_current_url(): string {
122  return _elgg_services()->request->getCurrentURL();
123 }
124 
133 function elgg_generate_url(string $name, array $parameters = []): ?string {
134  return _elgg_services()->routes->generateUrl($name, $parameters);
135 }
136 
159 function elgg_generate_entity_url(ElggEntity $entity, string $resource = 'view', ?string $subresource = null, array $parameters = []): ?string {
160 
161  $make_route_name = function ($type, $subtype) use ($resource, $subresource) {
162  $route_parts = [
163  $resource,
164  $type,
165  $subtype,
166  $subresource,
167  ];
168 
169  return implode(':', array_filter($route_parts));
170  };
171 
172  $pairs = [
173  [$entity->type, $entity->subtype],
174  [$entity->type, null],
175  ];
176 
177  foreach ($pairs as $pair) {
178  $route_name = $make_route_name($pair[0], $pair[1]);
179  $params = _elgg_services()->routes->resolveRouteParameters($route_name, $entity, $parameters);
180  if ($params !== false) {
181  return elgg_generate_url($route_name, $params);
182  }
183  }
184 
185  return null;
186 }
187 
197 function elgg_generate_action_url(string $action, array $query = [], bool $add_csrf_tokens = true): string {
198 
199  $url = elgg_http_add_url_query_elements("action/{$action}", $query);
201 
202  if ($add_csrf_tokens) {
204  }
205 
206  return $url;
207 }
208 
224 function elgg_ok_response($content = '', string|array $message = '', ?string $forward_url = null, int $status_code = ELGG_HTTP_OK): \Elgg\Http\OkResponse {
225  if ($message) {
227  }
228 
229  return new \Elgg\Http\OkResponse($content, $status_code, $forward_url);
230 }
231 
245 function elgg_error_response(string|array $message = '', string $forward_url = REFERRER, int $status_code = ELGG_HTTP_BAD_REQUEST): \Elgg\Http\ErrorResponse {
246  if ($message) {
248 
249  // needed to convert the error message back to a string as the ErrorResponse does not support an array of \ElggSystemMessage options
250  $message = is_array($message) ? $message['message'] : $message;
251  }
252 
253  return new \Elgg\Http\ErrorResponse($message, $status_code, $forward_url);
254 }
255 
270 function elgg_redirect_response(string $forward_url = REFERRER, int $status_code = ELGG_HTTP_FOUND, bool $secure_forward_url = true): \Elgg\Http\RedirectResponse {
271  return new Elgg\Http\RedirectResponse($forward_url, $status_code, $secure_forward_url);
272 }
273 
285 function elgg_download_response(string $content, string $filename = '', bool $inline = false, array $headers = []): \Elgg\Http\DownloadResponse {
286  $response = new \Elgg\Http\DownloadResponse($content);
287  $response->setHeaders($headers);
288  $response->setFilename($filename, $inline);
289 
290  return $response;
291 }
$content
Set robots.txt action.
Definition: set_robots.php:6
$entity
Definition: reset.php:8
if(! $user||! $user->canDelete()) $name
Definition: delete.php:22
if(! $entity->delete(true, true)) $forward_url
Definition: delete.php:30
$subtype
Definition: delete.php:22
$type
Definition: delete.php:21
$params
Saves global plugin settings.
Definition: save.php:13
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'=>[],]
Definition: actions.php:73
$query
const ELGG_HTTP_FOUND
Definition: constants.php:57
const ELGG_HTTP_OK
Definition: constants.php:45
const ELGG_HTTP_BAD_REQUEST
Definition: constants.php:64
const REFERRER
Used in calls to forward() to specify the browser should be redirected to the referring page.
Definition: constants.php:37
foreach($plugin_guids as $guid) if(empty($deactivated_plugins)) $url
Definition: deactivate.php:39
elgg_add_action_tokens_to_url(string $url, bool $html_encode=false)
Adds action tokens to URL.
Definition: elgglib.php:154
_elgg_services()
Get the global service provider.
Definition: elgglib.php:353
elgg_http_add_url_query_elements(string $url, array $elements)
Sets elements in a URL's query string.
Definition: elgglib.php:183
elgg_register_success_message(string|array $options)
Registers a success system message.
Definition: elgglib.php:43
elgg_register_error_message(string|array $options)
Registers a error system message.
Definition: elgglib.php:62
$resource
$headers
Definition: section.php:21
$path
Definition: details.php:70
elgg_normalize_url(string $url)
Definition: output.php:163
elgg_generate_entity_url(ElggEntity $entity, string $resource='view', ?string $subresource=null, array $parameters=[])
Generate entity URL from a named route.
elgg_redirect_response(string $forward_url=REFERRER, int $status_code=ELGG_HTTP_FOUND, bool $secure_forward_url=true)
Prepare a silent redirect response to be returned by a page or an action handler.
elgg_get_route(string $name)
Get a registered route by it's name.
Definition: pagehandler.php:50
elgg_register_route(string $name, array $params=[])
Elgg page handler functions.
Definition: pagehandler.php:27
elgg_get_route_for_url(string $url)
Find a registered route based on an url/path.
Definition: pagehandler.php:62
elgg_get_current_route_name()
Get the route name for the current request.
Definition: pagehandler.php:98
elgg_route_exists(string $name)
Check if a route is registered.
elgg_get_current_route()
Get the route for the current request.
Definition: pagehandler.php:88
elgg_get_current_url()
Returns the current page's complete URL.
elgg_ok_response($content='', string|array $message='', ?string $forward_url=null, int $status_code=ELGG_HTTP_OK)
Prepares a successful response to be returned by a page or an action handler.
elgg_unregister_route(string $name)
Unregister a route by its name.
Definition: pagehandler.php:38
elgg_generate_url(string $name, array $parameters=[])
Generate a URL for named route.
elgg_download_response(string $content, string $filename='', bool $inline=false, array $headers=[])
Prepare a download response.
elgg_generate_action_url(string $action, array $query=[], bool $add_csrf_tokens=true)
Generate an action URL.
elgg_error_response(string|array $message='', string $forward_url=REFERRER, int $status_code=ELGG_HTTP_BAD_REQUEST)
Prepare an error response to be returned by a page or an action handler.
if(parse_url(elgg_get_site_url(), PHP_URL_PATH) !=='/') if(file_exists(elgg_get_root_path() . 'robots.txt'))
Set robots.txt.
Definition: robots.php:10
$action
Definition: subscribe.php:11
$inline
Definition: save.php:22
$response
Definition: content.php:10