Elgg  Version 7.1
GenericContent.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Controllers;
4 
8 
14 abstract class GenericContent {
15 
16  protected ?\Elgg\Request $request = null;
17 
18  protected ?\Elgg\Router\Route $route = null;
19 
20  protected ?array $route_parts = null;
21 
30  final public function __invoke(\Elgg\Request $request): Response {
31  $this->request = $request;
32  $this->route = $request->getHttpRequest()?->getRoute();
33 
34  $this->getRouteParts();
35  $this->assertValidRoute();
36 
37  return $this->handleRequest($request);
38  }
39 
46  abstract protected function assertValidRoute(): void;
47 
56  abstract protected function handleRequest(\Elgg\Request $request): Response;
57 
67  abstract protected function getPageOptions(string $page, array $options): array;
68 
75  final protected function getRouteParts(): array {
76  if (isset($this->route_parts)) {
77  return $this->route_parts;
78  }
79 
80  $route_name = $this->route?->getName();
81  if (elgg_is_empty($route_name)) {
82  throw new ValidationException('Missing route name');
83  }
84 
85  $name_parts = explode(':', $route_name);
86  if (count($name_parts) < 3) {
87  throw new ValidationException('Unsupported route name configuration');
88  }
89 
90  $this->route_parts = $name_parts;
91  return $this->route_parts;
92  }
93 
103  protected function getEntityType(): string {
104  return $this->getRouteParts()[1];
105  }
106 
116  protected function getEntitySubtype(): string {
117  return $this->getRouteParts()[2];
118  }
119 
126  abstract protected function getPage(): string;
127 }
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
Generic base controller for content listing and content view/edit/add.
getEntitySubtype()
Get the entity subtype from the route name.
__invoke(\Elgg\Request $request)
Handle a request.
getPageOptions(string $page, array $options)
Get additional options to use when viewing a page.
getEntityType()
Get the entity type from the route name.
getPage()
Get the page from the route name.
handleRequest(\Elgg\Request $request)
Handle the request.
getRouteParts()
Parse the route name to usable parts.
assertValidRoute()
Validate that route is supported.
Generic HTTP exception.
Response builder.
Definition: Response.php:14
Request container.
Definition: Request.php:12
getHttpRequest()
Get the HttpRequest for this request.
Definition: Request.php:166
if(count($css_vars)< 2) $options
elgg_is_empty($value)
Check if a value isn't empty, but allow 0 and '0'.
Definition: input.php:176
$request
Definition: livesearch.php:12
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
$page
Definition: admin.php:24