Elgg  Version 6.3
Page.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Menus;
4 
6 
13 class Page {
14 
24  public static function registerAdminPluginSettings(\Elgg\Event $event) {
25  if (!elgg_in_context('admin') || !elgg_is_admin_logged_in()) {
26  return;
27  }
28 
29  $current_route = elgg_get_current_route();
30  if (elgg_extract('segments', $current_route->getMatchedParameters()) !== 'plugins' && $current_route->getName() !== 'admin:plugin_settings') {
31  return;
32  }
33 
34  // plugin settings
35  $active_plugins = elgg_get_plugins('active');
36  if (empty($active_plugins)) {
37  // nothing added because no items
38  return;
39  }
40 
41  $plugins_with_settings = [];
42 
43  foreach ($active_plugins as $plugin) {
44  $plugin_id = $plugin->getID();
45 
46  if (!elgg_view_exists("plugins/{$plugin_id}/settings")) {
47  continue;
48  }
49 
50  $plugin_name = $plugin->getDisplayName();
51  $plugins_with_settings[strtolower($plugin_name)] = [
52  'name' => "plugin:settings:{$plugin_id}",
53  'href' => elgg_generate_url('admin:plugin_settings', [
54  'plugin_id' => $plugin_id,
55  ]),
56  'text' => $plugin_name,
57  'section' => 'plugin_settings',
58  ];
59  }
60 
61  if (empty($plugins_with_settings)) {
62  return;
63  }
64 
65  /* @var $return MenuItems */
66  $return = $event->getValue();
67 
68  ksort($plugins_with_settings);
69  $priority = 0;
70  foreach ($plugins_with_settings as $plugin_item) {
71  $priority += 10;
72  $plugin_item['priority'] = $priority;
73  $return[] = \ElggMenuItem::factory($plugin_item);
74  }
75 
76  return $return;
77  }
78 
86  public static function registerUserSettings(\Elgg\Event $event) {
88  if (!$user instanceof \ElggUser || !elgg_in_context('settings') || !$user->canEdit()) {
89  return;
90  }
91 
92  /* @var $return MenuItems */
93  $return = $event->getValue();
94 
95  $return[] = \ElggMenuItem::factory([
96  'name' => '1_account',
97  'text' => elgg_echo('usersettings:user:opt:linktext'),
98  'href' => elgg_generate_url('settings:account', [
99  'username' => $user->username,
100  ]),
101  'section' => 'configure',
102  ]);
103 
104  $return[] = \ElggMenuItem::factory([
105  'name' => '1_notifications',
106  'text' => elgg_echo('usersettings:notifications:menu:page'),
107  'href' => elgg_generate_url('settings:notifications', [
108  'username' => $user->username,
109  ]),
110  'section' => 'configure',
111  ]);
112 
113  $return[] = \ElggMenuItem::factory([
114  'name' => '1_statistics',
115  'text' => elgg_echo('usersettings:statistics:opt:linktext'),
116  'href' => elgg_generate_url('settings:statistics', [
117  'username' => $user->username,
118  ]),
119  'section' => 'configure',
120  ]);
121 
122  if (elgg_get_config('trash_enabled')) {
123  $return[] = \ElggMenuItem::factory([
124  'name' => '1_trash',
125  'text' => elgg_echo('trash:menu:page'),
126  'href' => elgg_generate_url('trash:owner', [
127  'username' => $user->username,
128  ]),
129  'section' => 'configure',
130  ]);
131  }
132 
133  return $return;
134  }
135 
143  public static function registerUserSettingsPlugins(\Elgg\Event $event) {
145  if (!$user instanceof \ElggUser || !elgg_in_context('settings') || !$user->canEdit()) {
146  return;
147  }
148 
149  /* @var $return MenuItems */
150  $return = $event->getValue();
151 
152  $return[] = \ElggMenuItem::factory([
153  'name' => '1_plugins',
154  'text' => elgg_echo('usersettings:plugins:opt:linktext'),
155  'href' => false,
156  'section' => 'configure',
157  'show_with_empty_children' => false,
158  ]);
159 
160  $active_plugins = elgg_get_plugins();
161  foreach ($active_plugins as $plugin) {
162  $plugin_id = $plugin->getID();
163  if (!elgg_view_exists("plugins/{$plugin_id}/usersettings")) {
164  continue;
165  }
166 
167  $title = $plugin->getDisplayName();
168  if (elgg_language_key_exists("{$plugin_id}:usersettings:title")) {
169  $title = elgg_echo("{$plugin_id}:usersettings:title");
170  }
171 
172  $return[] = \ElggMenuItem::factory([
173  'name' => $plugin_id,
174  'text' => $title,
175  'href' => elgg_generate_url('settings:tools', [
176  'username' => $user->username,
177  'plugin_id' => $plugin_id,
178  ]),
179  'parent_name' => '1_plugins',
180  'section' => 'configure',
181  ]);
182  }
183 
184  return $return;
185  }
186 }
$plugin_id
Remove all user and plugin settings from the give plugin ID.
Definition: remove.php:8
if(! $plugin instanceof \ElggPlugin||! $plugin->isActive()) $plugin_name
Definition: save.php:25
$user
Definition: ban.php:7
static factory(array $options)
Create an ElggMenuItem from an associative array.
Models an event passed to event handlers.
Definition: Event.php:11
A collection of menu items.
Definition: MenuItems.php:10
Register menu items for the page menu.
Definition: Page.php:13
static registerAdminPluginSettings(\Elgg\Event $event)
Register links to the plugin settings admin section.
Definition: Page.php:24
static registerUserSettingsPlugins(\Elgg\Event $event)
Register menu items for the user plugin settings.
Definition: Page.php:143
static registerUserSettings(\Elgg\Event $event)
Register menu items for the user settings.
Definition: Page.php:86
elgg_get_config(string $name, $default=null)
Get an Elgg configuration value.
elgg_in_context(string $context)
Check if this context exists anywhere in the stack.
Definition: context.php:78
elgg_extract($key, $array, $default=null, bool $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.
Definition: elgglib.php:240
elgg_get_plugins(string $status='active')
Returns an ordered list of plugins.
Definition: plugins.php:39
$title
Definition: generic.php:50
elgg_language_key_exists(string $key, string $language='en')
Check if a given language key exists.
Definition: languages.php:44
elgg_echo(string $message_key, array $args=[], string $language='')
Elgg language module Functions to manage language and translations.
Definition: languages.php:17
elgg_view_exists(string $view, string $viewtype='', bool $recurse=true)
Returns whether the specified view exists.
Definition: views.php:131
elgg_get_current_route()
Get the route for the current request.
Definition: pagehandler.php:88
elgg_generate_url(string $name, array $parameters=[])
Generate a URL for named route.
elgg_get_page_owner_entity()
Gets the owner entity for the current page.
Definition: pageowner.php:23
elgg_is_admin_logged_in()
Returns whether or not the viewer is currently logged in and an admin user.
Definition: sessions.php:52
$priority
$plugin