Elgg  Version 7.1
Filter.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Menus;
4 
6 
13 class Filter {
14 
22  public static function registerAdminUpgrades(\Elgg\Event $event) {
23  if (!elgg_is_admin_logged_in()) {
24  return;
25  }
26 
27  /* @var $return MenuItems */
28  $return = $event->getValue();
29 
30  $return[] = \ElggMenuItem::factory([
31  'name' => 'pending',
32  'text' => elgg_echo('admin:upgrades:menu:pending'),
33  'href' => 'admin/upgrades',
34  'priority' => 100,
35  ]);
36 
37  $return[] = \ElggMenuItem::factory([
38  'name' => 'completed',
39  'text' => elgg_echo('admin:upgrades:menu:completed'),
40  'href' => 'admin/upgrades/finished',
41  'priority' => 200,
42  ]);
43 
44  $return[] = \ElggMenuItem::factory([
45  'name' => 'db',
46  'text' => elgg_echo('admin:upgrades:menu:db'),
47  'href' => 'admin/upgrades/db',
48  'priority' => 300,
49  ]);
50 
51  return $return;
52  }
53 
61  public static function registerNotificationSettings(\Elgg\Event $event) {
63  if (!$page_owner instanceof \ElggUser || !$page_owner->canEdit()) {
64  return;
65  }
66 
67  /* @var $result MenuItems */
68  $result = $event->getValue();
69 
71  'name' => 'settings',
72  'text' => elgg_echo('usersettings:notifications:menu:filter:settings'),
73  'href' => elgg_generate_url('settings:notifications', [
74  'username' => $page_owner->username,
75  ]),
76  'priority' => 100,
77  ]);
78 
80  'name' => 'users',
81  'text' => elgg_echo('collection:user:user'),
82  'href' => elgg_generate_url('settings:notifications:users', [
83  'username' => $page_owner->username,
84  ]),
85  'priority' => 200,
86  ]);
87  }
88 
96  public static function registerAllFilterTab(\Elgg\Event $event): ?MenuItems {
98  return null;
99  }
100 
101  $entity_type = $event->getParam('entity_type', '');
102  $entity_subtype = $event->getParam('entity_subtype', '');
103  if (empty($entity_type) || empty($entity_subtype)) {
104  $route_name = elgg_get_current_route_name();
105  if (!empty($route_name)) {
106  // assume route name as '<purpose>:<entity type>:<entity subtype>:<sub>'
107  // eg collection:object:blog:owner or view:group:group
108  // @see http://learn.elgg.org/en/stable/guides/routing.html#routes-names
109  $route_parts = explode(':', $route_name);
110  $entity_type = elgg_extract(1, $route_parts, '');
111  $entity_subtype = elgg_extract(2, $route_parts, '');
112  }
113  }
114 
115  $all_link = $event->getParam('all_link');
116  if (empty($all_link)) {
117  if (elgg_route_exists("collection:{$entity_type}:{$entity_subtype}:all")) {
118  $all_link = elgg_generate_url("collection:{$entity_type}:{$entity_subtype}:all");
119  } elseif (elgg_route_exists("collection:{$entity_type}:all")) {
120  $all_link = elgg_generate_url("collection:{$entity_type}:all");
121  }
122  } else {
123  elgg_deprecated_notice("Using the 'all_link' parameter is deprecated. Use correct route names instead.", '7.1');
124  }
125 
126  if (empty($all_link)) {
127  return null;
128  }
129 
130  /* @var $result MenuItems */
131  $result = $event->getValue();
132 
134  'name' => 'all',
135  'text' => elgg_echo('all'),
136  'href' => $all_link,
137  'priority' => 200,
138  ]);
139 
140  return $result;
141  }
142 
150  public static function registerMineFilterTab(\Elgg\Event $event): ?MenuItems {
152  if (!$user instanceof \ElggUser) {
153  return null;
154  }
155 
157  return null;
158  }
159 
160  $entity_type = $event->getParam('entity_type', '');
161  $entity_subtype = $event->getParam('entity_subtype', '');
162  if (empty($entity_type) || empty($entity_subtype)) {
163  $route_name = elgg_get_current_route_name();
164  if (!empty($route_name)) {
165  // assume route name as '<purpose>:<entity type>:<entity subtype>:<sub>'
166  // eg collection:object:blog:owner or view:group:group
167  // @see http://learn.elgg.org/en/stable/guides/routing.html#routes-names
168  $route_parts = explode(':', $route_name);
169  $entity_type = elgg_extract(1, $route_parts, '');
170  $entity_subtype = elgg_extract(2, $route_parts, '');
171  }
172  }
173 
174  $mine_link = $event->getParam('mine_link');
175  if (empty($mine_link)) {
176  if (elgg_route_exists("collection:{$entity_type}:{$entity_subtype}:owner")) {
177  $mine_link = elgg_generate_url("collection:{$entity_type}:{$entity_subtype}:owner", [
178  'username' => $user->username,
179  ]);
180  } elseif (elgg_route_exists("collection:{$entity_type}:owner")) {
181  $mine_link = elgg_generate_url("collection:{$entity_type}:owner", [
182  'username' => $user->username,
183  ]);
184  }
185  } else {
186  elgg_deprecated_notice("Using the 'mine_link' parameter is deprecated. Use correct route names instead.", '7.1');
187  }
188 
189  if (empty($mine_link)) {
190  return null;
191  }
192 
193  /* @var $result MenuItems */
194  $result = $event->getValue();
195 
197  'name' => 'mine',
198  'text' => elgg_echo('mine'),
199  'href' => $mine_link,
200  'priority' => 300,
201  ]);
202 
203  return $result;
204  }
205 
213  public static function registerAdminUsers(\Elgg\Event $event): MenuItems {
214  /* @var $result MenuItems */
215  $result = $event->getValue();
216 
218  'name' => 'all',
219  'text' => elgg_echo('all'),
220  'href' => 'admin/users',
221  'priority' => 100,
222  ]);
224  'name' => 'online',
225  'text' => elgg_echo('admin:users:online'),
226  'href' => 'admin/users/online',
227  'priority' => 200,
228  ]);
230  'name' => 'admins',
231  'text' => elgg_echo('admin:users:admins'),
232  'href' => 'admin/users/admins',
233  'priority' => 300,
234  ]);
236  'name' => 'banned',
237  'text' => elgg_echo('admin:users:banned'),
238  'href' => 'admin/users/banned',
239  'priority' => 400,
240  ]);
242  'name' => 'unvalidated',
243  'text' => elgg_echo('admin:users:unvalidated'),
244  'href' => 'admin/users/unvalidated',
245  'priority' => 500,
246  ]);
248  'name' => 'inactive',
249  'text' => elgg_echo('admin:users:inactive'),
250  'href' => 'admin/users/inactive',
251  'priority' => 600,
252  ]);
253 
255  'name' => 'search',
256  'icon' => 'search',
257  'text' => elgg_echo('search'),
258  'href' => false,
259  'class' => 'elgg-toggle',
260  'data-toggle-selector' => '.elgg-form-admin-users-search',
261  'priority' => 9999,
262  ]);
263 
264  return $result;
265  }
266 
274  public static function registerAvatarEdit(\Elgg\Event $event) {
275  $user = $event->getParam('entity', elgg_get_page_owner_entity());
276  if (!$user instanceof \ElggUser) {
277  return;
278  }
279 
280  /* @var $return MenuItems */
281  $return = $event->getValue();
282 
283  $return[] = \ElggMenuItem::factory([
284  'name' => 'edit_avatar',
285  'text' => elgg_echo('avatar:edit'),
286  'href' => elgg_generate_entity_url($user, 'edit', 'avatar'),
287  ]);
288 
289  return $return;
290  }
291 }
$page_owner
Definition: add.php:16
$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 to the filter menu.
Definition: Filter.php:13
static registerAllFilterTab(\Elgg\Event $event)
Register the default All filter menu item.
Definition: Filter.php:96
static registerAvatarEdit(\Elgg\Event $event)
Add a link to the profile/edit filter menu.
Definition: Filter.php:274
static registerNotificationSettings(\Elgg\Event $event)
Register the settings tab to the notification settings pages.
Definition: Filter.php:61
static registerMineFilterTab(\Elgg\Event $event)
Register the default Mine filter menu item.
Definition: Filter.php:150
static registerAdminUsers(\Elgg\Event $event)
Register the default All and Mine filter menu items.
Definition: Filter.php:213
static registerAdminUpgrades(\Elgg\Event $event)
Add menu items to the filter menu on the admin upgrades page.
Definition: Filter.php:22
if($item instanceof \ElggEntity) elseif($item instanceof \ElggRiverItem) elseif($item instanceof \ElggRelationship) elseif(is_callable([ $item, 'getType']))
Definition: item.php:48
elgg_deprecated_notice(string $msg, string $dep_version)
Log a notice about deprecated use of a function, view, etc.
Definition: elgglib.php:107
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:246
$entity_subtype
Definition: edit.php:15
$entity_type
Generic entity edit/add form.
Definition: edit.php:14
elgg_echo(string $message_key, array $args=[], string $language='')
Elgg language module Functions to manage language and translations.
Definition: languages.php:17
elgg_generate_entity_url(ElggEntity $entity, string $resource='view', ?string $subresource=null, array $parameters=[])
Generate entity URL from a named route.
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_generate_url(string $name, array $parameters=[])
Generate a URL for named route.
elgg_get_page_owner_guid()
Elgg page owner library.
Definition: pageowner.php:12
elgg_get_page_owner_entity()
Gets the owner entity for the current page.
Definition: pageowner.php:23
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
elgg_is_admin_logged_in()
Returns whether or not the viewer is currently logged in and an admin user.
Definition: sessions.php:52
elgg_get_logged_in_user_guid()
Return the current logged in user by guid.
Definition: sessions.php:34
elgg_get_logged_in_user_entity()
Return the current logged in user, or null if no user is logged in.
Definition: sessions.php:24