Elgg  Version 4.3
pagehandler.php
Go to the documentation of this file.
1 <?php
27 function elgg_register_route($name, array $params = []) {
28  return _elgg_services()->routes->register($name, $params);
29 }
30 
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 {
63  $url = elgg_normalize_url($url);
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($name, array $parameters = []) {
134  return _elgg_services()->routes->generateUrl($name, $parameters);
135 }
136 
159 function elgg_generate_entity_url(ElggEntity $entity, $resource = 'view', $subresource = null, array $parameters = []) {
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 false;
186 }
187 
197 function elgg_generate_action_url($action, array $query = [], $add_csrf_tokens = true) {
198 
199  $url = "action/$action";
202 
203  if ($add_csrf_tokens) {
205  }
206 
207  return $url;
208 }
209 
225 function elgg_ok_response($content = '', $message = '', $forward_url = null, int $status_code = ELGG_HTTP_OK) {
226  if ($message) {
227  if (is_array($message) && !array_key_exists('message', $message)) {
228  elgg_deprecated_notice('Passing an array of messages to ' . __METHOD__ . ' has been deprecated', '4.2');
229 
230  _elgg_services()->system_messages->addSuccessMessage($message);
231  } else {
233  }
234  }
235 
236  return new \Elgg\Http\OkResponse($content, $status_code, $forward_url);
237 }
238 
253  if ($message) {
254  if (is_array($message) && !array_key_exists('message', $message)) {
255  elgg_deprecated_notice('Passing an array of messages to ' . __METHOD__ . ' has been deprecated', '4.2');
256 
257  _elgg_services()->system_messages->addErrorMessage($message);
258  } else {
260 
261  // needed to convert the error message back to a string as the ErrorResponse does not support an array of \ElggSystemMessage options
262  $message = is_array($message) ? $message['message'] : $message;
263  }
264  }
265 
266  return new \Elgg\Http\ErrorResponse($message, $status_code, $forward_url);
267 }
268 
283  return new Elgg\Http\RedirectResponse($forward_url, $status_code);
284 }
elgg_http_add_url_query_elements($url, array $elements)
Sets elements in a URL&#39;s query string.
Definition: elgglib.php:481
elgg_get_route(string $name)
Get a registered route by it&#39;s name.
Definition: pagehandler.php:50
elgg_add_action_tokens_to_url($url, $html_encode=false)
Adds action tokens to URL.
Definition: elgglib.php:452
$params
Saves global plugin settings.
Definition: save.php:13
elgg_route_exists(string $name)
Check if a route is registered.
elgg_normalize_url($url)
Definition: output.php:153
elgg_get_current_route_name()
Get the route name for the current request.
Definition: pagehandler.php:98
elgg_deprecated_notice(string $msg, string $dep_version)
Log a notice about deprecated use of a function, view, etc.
Definition: deprecation.php:52
elgg_generate_action_url($action, array $query=[], $add_csrf_tokens=true)
Generate an action URL.
if(!$user||!$user->canDelete()) $name
Definition: delete.php:22
const ELGG_HTTP_OK
Definition: constants.php:60
elgg_unregister_route($name)
Unregister a route by its name.
Definition: pagehandler.php:38
$type
Definition: delete.php:21
elgg parse_url
Parse a URL into its parts.
Definition: elgglib.js:135
$resource
$path
Definition: details.php:68
elgg_redirect_response($forward_url=REFERRER, int $status_code=ELGG_HTTP_FOUND)
Prepare a silent redirect response to be returned by a page or an action handler. ...
const REFERRER
Definition: constants.php:42
$entity
Definition: reset.php:8
elgg_generate_url($name, array $parameters=[])
Generate a URL for named route.
elgg_get_current_url()
Returns the current page&#39;s complete URL.
const ELGG_HTTP_FOUND
Definition: constants.php:72
if(!$entity->delete()) $forward_url
Definition: delete.php:30
elgg_get_route_for_url(string $url)
Find a registered route based on an url/path.
Definition: pagehandler.php:62
elgg_register_route($name, array $params=[])
Elgg page handler functions.
Definition: pagehandler.php:27
elgg_register_error_message($options)
Registers a error system message.
Definition: elgglib.php:62
elgg_get_current_route()
Get the route for the current request.
Definition: pagehandler.php:88
$action
Definition: subscribe.php:11
const ELGG_HTTP_BAD_REQUEST
Definition: constants.php:79
$subtype
Definition: delete.php:22
$query
$content
Set robots.txt action.
Definition: set_robots.php:6
elgg_error_response($message= '', $forward_url=REFERRER, int $status_code=ELGG_HTTP_BAD_REQUEST)
Prepare an error response to be returned by a page or an action handler.
foreach($plugin_guids as $guid) if(empty($deactivated_plugins)) $url
Definition: deactivate.php:39
elgg_ok_response($content= '', $message= '', $forward_url=null, int $status_code=ELGG_HTTP_OK)
Prepares a successful response to be returned by a page or an action handler.
_elgg_services()
Get the global service provider.
Definition: elgglib.php:638
elgg_register_success_message($options)
Registers a success system message.
Definition: elgglib.php:43
elgg_generate_entity_url(ElggEntity $entity, $resource= 'view', $subresource=null, array $parameters=[])
Generate entity URL from a named route.