Elgg  Version master
Entity.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Menus;
4 
7 
14 class Entity {
15 
23  public static function registerEdit(\Elgg\Event $event) {
24  $entity = $event->getEntityParam();
25  if (!($entity instanceof \ElggEntity) || $entity instanceof \ElggUser) {
26  // users mostly use the hover menu for their actions
27  return;
28  }
29 
30  $edit_url = elgg_generate_entity_url($entity, 'edit');
31 
32  if (empty($edit_url) || !$entity->canEdit()) {
33  return;
34  }
35 
36  /* @var $return MenuItems */
37  $return = $event->getValue();
38 
39  $return[] = \ElggMenuItem::factory([
40  'name' => 'edit',
41  'icon' => 'edit',
42  'text' => elgg_echo('edit'),
43  'title' => elgg_echo('edit:this'),
44  'href' => $edit_url,
45  'priority' => 900,
46  ]);
47 
48  return $return;
49  }
50 
58  public static function registerDelete(\Elgg\Event $event) {
59  $entity = $event->getEntityParam();
60  if (!$entity instanceof \ElggEntity || $entity instanceof \ElggUser || $entity instanceof \ElggPlugin || $entity instanceof \ElggUpgrade) {
61  // users mostly use the hover menu for their actions
62  // plugins can't be removed
63  // upgrades deleting has no point, they'll be rediscovered again
64  return;
65  }
66 
67  $delete_url = elgg_generate_action_url('entity/delete', [
68  'guid' => $entity->guid,
69  ]);
70 
71  if (empty($delete_url) || !$entity->canDelete()) {
72  return;
73  }
74 
75  /* @var $return MenuItems */
76  $return = $event->getValue();
77 
78  $return[] = \ElggMenuItem::factory([
79  'name' => 'delete',
80  'icon' => 'delete',
81  'text' => elgg_echo('delete'),
82  'title' => elgg_echo('delete:this'),
83  'href' => $delete_url,
84  'confirm' => elgg_echo('deleteconfirm'),
85  'priority' => 950,
86  ]);
87 
88  return $return;
89  }
90 
98  public static function registerPlugin(\Elgg\Event $event) {
99  $entity = $event->getEntityParam();
100  if (!$entity instanceof \ElggPlugin || !$entity->canEdit()) {
101  return;
102  }
103 
104  /* @var $return MenuItems */
105  $return = $event->getValue();
106 
107  if (elgg_view_exists("plugins/{$entity->getID()}/settings")) {
108  $return[] = \ElggMenuItem::factory([
109  'name' => 'settings',
110  'icon' => 'settings-alt',
111  'text' => elgg_echo('settings'),
112  'href' => elgg_generate_url('admin:plugin_settings', [
113  'plugin_id' => $entity->getID(),
114  ]),
115  'section' => 'admin'
116  ]);
117  }
118 
119  $priority = $entity->getPriority();
120 
121  // top and up link only if not at top
122  if ($priority > 1) {
123  $return[] = \ElggMenuItem::factory([
124  'name' => 'top',
125  'icon' => 'angle-double-up',
126  'text' => elgg_echo('top'),
127  'href' => elgg_generate_action_url('admin/plugins/set_priority', [
128  'plugin_guid' => $entity->guid,
129  'priority' => 'first',
130  ]),
131  'priority' => 11,
132  ]);
133 
134  $return[] = \ElggMenuItem::factory([
135  'name' => 'up',
136  'icon' => 'angle-up',
137  'text' => elgg_echo('up'),
138  'href' => elgg_generate_action_url('admin/plugins/set_priority', [
139  'plugin_guid' => $entity->guid,
140  'priority' => '-1',
141  ]),
142  'priority' => 12,
143  ]);
144  }
145 
146  // down and bottom links only if not at bottom
147  if ($priority < _elgg_services()->plugins->getMaxPriority()) {
148  $return[] = \ElggMenuItem::factory([
149  'name' => 'down',
150  'icon' => 'angle-down',
151  'text' => elgg_echo('down'),
152  'href' => elgg_generate_action_url('admin/plugins/set_priority', [
153  'plugin_guid' => $entity->guid,
154  'priority' => '+1',
155  ]),
156  'priority' => 13,
157  ]);
158 
159  $return[] = \ElggMenuItem::factory([
160  'name' => 'bottom',
161  'icon' => 'angle-double-down',
162  'text' => elgg_echo('bottom'),
163  'href' => elgg_generate_action_url('admin/plugins/set_priority', [
164  'plugin_guid' => $entity->guid,
165  'priority' => 'last',
166  ]),
167  'priority' => 14,
168  ]);
169  }
170 
171  // remove all user and plugin settings
172  $return[] = \ElggMenuItem::factory([
173  'name' => 'remove_settings',
174  'icon' => 'trash-alt',
175  'text' => elgg_echo('plugins:settings:remove:menu:text'),
176  'href' => elgg_generate_action_url('plugins/settings/remove', [
177  'plugin_id' => $entity->getID(),
178  ]),
179  'confirm' => elgg_echo('plugins:settings:remove:menu:confirm'),
180  ]);
181 
182  return $return;
183  }
184 
192  public static function registerUpgrade(\Elgg\Event $event) {
193  $entity = $event->getEntityParam();
194  if (!$entity instanceof \ElggUpgrade || !$entity->canEdit()) {
195  return;
196  }
197 
198  /* @var $return MenuItems */
199  $result = $event->getValue();
200 
201  if (!$entity->isCompleted()) {
203  'name' => 'run_upgrade',
204  'icon' => 'play',
205  'text' => elgg_echo('admin:upgrades:menu:run_single'),
206  'href' => false,
207  'deps' => [
208  'core/js/upgrader',
209  ],
210  'data-guid' => $entity->guid,
211  'priority' => 600,
212  ]);
213  } else {
214  $batch = $entity->getBatch();
215  if ($batch instanceof Batch && !$batch->shouldBeSkipped()) {
216  // only show reset if it will have an effect
218  'name' => 'reset',
219  'icon' => 'sync',
220  'text' => elgg_echo('reset'),
221  'href' => elgg_generate_action_url('admin/upgrade/reset', [
222  'guid' => $entity->guid,
223  ]),
224  'priority' => 600,
225  ]);
226  }
227  }
228 
229  return $result;
230  }
231 
239  public static function registerUserHoverAdminSection(\Elgg\Event $event) {
240  $entity = $event->getEntityParam();
241  if (!$entity instanceof \ElggUser || !elgg_is_admin_logged_in()) {
242  return;
243  }
244 
245  if (!(bool) $event->getParam('add_user_hover_admin_section', false)) {
246  return;
247  }
248 
249  $user_hover = elgg()->menus->getUnpreparedMenu('user_hover', [
250  'entity' => $entity,
251  ]);
252 
253  /* @var $result MenuItems */
254  $result = $event->getValue();
255 
256  /* @var $menu_item \ElggMenuItem */
257  foreach ($user_hover->getItems() as $menu_item) {
258  if ($menu_item->getSection() !== 'admin') {
259  continue;
260  }
261 
262  $menu_item->setSection('default');
263  $result[] = $menu_item;
264  }
265 
266  return $result;
267  }
268 }
static registerPlugin(\Elgg\Event $event)
Registers menu items for the entity menu of a plugin.
Definition: Entity.php:98
elgg_generate_action_url(string $action, array $query=[], bool $add_csrf_tokens=true)
Generate an action URL.
elgg_is_admin_logged_in()
Returns whether or not the viewer is currently logged in and an admin user.
Definition: sessions.php:52
static registerEdit(\Elgg\Event $event)
Register the edit menu item.
Definition: Entity.php:23
elgg_echo(string $message_key, array $args=[], string $language= '')
Elgg language module Functions to manage language and translations.
Definition: languages.php:17
static registerUpgrade(\Elgg\Event $event)
Add menu items to the entity menu of ElggUpgrade.
Definition: Entity.php:192
static factory(array $options)
Create an ElggMenuItem from an associative array.
$entity
Definition: reset.php:8
static registerUserHoverAdminSection(\Elgg\Event $event)
Add the user hover admin section to the entity menu of an ElggUser, if requested. ...
Definition: Entity.php:239
Represents an upgrade that runs outside of the upgrade.php script.
Definition: ElggUpgrade.php:26
elgg_generate_entity_url(ElggEntity $entity, string $resource= 'view', string $subresource=null, array $parameters=[])
Generate entity URL from a named route.
Long running upgrades should implement this interface.
Definition: Batch.php:10
elgg_generate_url(string $name, array $parameters=[])
Generate a URL for named route.
_elgg_services()
Get the global service provider.
Definition: elgglib.php:346
static registerDelete(\Elgg\Event $event)
Register the delete menu item.
Definition: Entity.php:58
elgg_view_exists(string $view, string $viewtype= '', bool $recurse=true)
Returns whether the specified view exists.
Definition: views.php:152
Register menu items to the entity menu.
Definition: Entity.php:14
var elgg
Definition: elgglib.js:4
$priority
Models an event passed to event handlers.
Definition: Event.php:11