Elgg  Version 7.1
UserHover.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Menus;
4 
6 
13 class UserHover {
14 
22  public static function registerAvatarEdit(\Elgg\Event $event) {
23  $user = $event->getEntityParam();
24  if (!$user instanceof \ElggUser || !$user->isEnabled() || !$user->canEdit()) {
25  return;
26  }
27 
28  /* @var $return MenuItems */
29  $return = $event->getValue();
30 
31  $return[] = \ElggMenuItem::factory([
32  'name' => 'avatar:edit',
33  'icon' => 'image',
34  'text' => elgg_echo('avatar:edit'),
35  'href' => elgg_generate_entity_url($user, 'edit', 'avatar'),
36  'section' => (elgg_get_logged_in_user_guid() == $user->guid) ? 'action' : 'admin',
37  ]);
38 
39  return $return;
40  }
41 
49  public static function registerAdminActions(\Elgg\Event $event) {
50  $user = $event->getEntityParam();
51  if (!$user instanceof \ElggUser || !elgg_is_admin_logged_in()) {
52  return;
53  }
54 
55  if ($user->guid === elgg_get_logged_in_user_guid()) {
56  // admins can't perform actions on themselfs
57  return;
58  }
59 
60  /* @var $return MenuItems */
61  $return = $event->getValue();
62 
63  // delete
64  $return[] = \ElggMenuItem::factory([
65  'name' => 'delete',
66  'icon' => 'delete',
67  'text' => elgg_echo('delete'),
68  'href' => elgg_generate_url('delete:user', [
69  'guid' => $user->guid,
70  ]),
71  'section' => 'admin',
72  'priority' => 999,
73  ]);
74 
75  if ($user->isValidated() === false) {
76  $return[] = \ElggMenuItem::factory([
77  'name' => 'change_email',
78  'icon' => 'edit',
79  'text' => elgg_echo('admin:users:unvalidated:change_email'),
80  'href' => elgg_generate_url('ajax', [
81  'type' => 'form',
82  'segments' => 'admin/user/change_email',
83  'user_guid' => $user->guid,
84  ]),
85  'link_class' => 'elgg-lightbox',
86  'section' => 'admin',
87  ]);
88 
89  $return[] = \ElggMenuItem::factory([
90  'name' => 'validate',
91  'icon' => 'check',
92  'text' => elgg_echo('validate'),
93  'href' => elgg_generate_action_url('admin/user/validate', [
94  'user_guid' => $user->guid,
95  ]),
96  'confirm' => true,
97  'section' => 'admin',
98  ]);
99  }
100 
101  if (!$user->isEnabled()) {
102  // in certain admin cases
103  return $return;
104  }
105 
106  // (un)ban
107  if (!$user->isBanned()) {
108  $return[] = \ElggMenuItem::factory([
109  'name' => 'ban',
110  'icon' => 'ban',
111  'text' => elgg_echo('ban'),
112  'href' => elgg_generate_action_url('admin/user/ban', [
113  'guid' => $user->guid,
114  ]),
115  'confirm' => true,
116  'section' => 'admin',
117  ]);
118  } else {
119  $return[] = \ElggMenuItem::factory([
120  'name' => 'unban',
121  'icon' => 'ban',
122  'text' => elgg_echo('unban'),
123  'href' => elgg_generate_action_url('admin/user/unban', [
124  'guid' => $user->guid,
125  ]),
126  'confirm' => true,
127  'section' => 'admin',
128  ]);
129  }
130 
131  // reset password
132  $return[] = \ElggMenuItem::factory([
133  'name' => 'resetpassword',
134  'icon' => 'refresh',
135  'text' => elgg_echo('resetpassword'),
136  'href' => elgg_generate_action_url('admin/user/resetpassword', [
137  'guid' => $user->guid,
138  ]),
139  'confirm' => true,
140  'section' => 'admin',
141  ]);
142 
143  // Toggle admin role
144  $is_admin = $user->isAdmin();
145  $return[] = \ElggMenuItem::factory([
146  'name' => 'makeadmin',
147  'icon' => 'level-up-alt',
148  'text' => elgg_echo('makeadmin'),
149  'href' => elgg_generate_action_url('admin/user/makeadmin', [
150  'guid' => $user->guid,
151  ]),
152  'confirm' => true,
153  'section' => 'admin',
154  'item_class' => $is_admin ? 'hidden' : null,
155  'data-toggle' => 'removeadmin',
156  ]);
157 
158  $return[] = \ElggMenuItem::factory([
159  'name' => 'removeadmin',
160  'icon' => 'level-down-alt',
161  'text' => elgg_echo('removeadmin'),
162  'href' => elgg_generate_action_url('admin/user/removeadmin', [
163  'guid' => $user->guid,
164  ]),
165  'confirm' => true,
166  'section' => 'admin',
167  'item_class' => $is_admin ? null : 'hidden',
168  'data-toggle' => 'makeadmin',
169  ]);
170 
171  $return[] = \ElggMenuItem::factory([
172  'name' => 'settings:edit',
173  'icon' => 'cogs',
174  'text' => elgg_echo('settings:edit'),
175  'href' => elgg_generate_url('settings:account', [
176  'username' => $user->username,
177  ]),
178  'section' => 'admin',
179  ]);
180 
181  return $return;
182  }
183 
191  public static function registerLoginAs(\Elgg\Event $event) {
192  $user = $event->getEntityParam();
193  $logged_in_user = elgg_get_logged_in_user_entity();
194 
195  if (!$user instanceof \ElggUser || $user->isBanned() || !$user->isEnabled()) {
196  // no user, banned user or disabled user (is certain admin cases) is unable to login
197  return;
198  }
199 
200  if (!$logged_in_user instanceof \ElggUser || !$logged_in_user->isAdmin()) {
201  // no admin user logged in
202  return;
203  }
204 
205  if ($logged_in_user->guid === $user->guid) {
206  // don't show menu on self
207  return;
208  }
209 
210  if (!empty(elgg_get_session()->get('login_as_original_user_guid'))) {
211  // don't show menu if already logged in as someone else
212  return;
213  }
214 
215  $menu = $event->getValue();
216 
218  'name' => 'login_as',
219  'icon' => 'sign-in-alt',
220  'text' => elgg_echo('action:user:login_as'),
221  'href' => elgg_generate_action_url('admin/user/login_as', [
222  'user_guid' => $user->guid,
223  ]),
224  'parent_name' => $event->getType() === 'menu:user_hover' ? null : 'admin',
225  'section' => $event->getType() === 'menu:user_hover' ? 'admin' : 'default',
226  ]);
227 
228  return $menu;
229  }
230 }
$user
Definition: ban.php:7
static factory(array $options)
Create an ElggMenuItem from an associative array.
isAdmin()
Is this user admin?
Definition: ElggUser.php:181
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 user_hover menu.
Definition: UserHover.php:13
static registerLoginAs(\Elgg\Event $event)
Register admin action to login as another user.
Definition: UserHover.php:191
static registerAdminActions(\Elgg\Event $event)
Register admin action.
Definition: UserHover.php:49
static registerAvatarEdit(\Elgg\Event $event)
Add a link to the avatar edit page.
Definition: UserHover.php:22
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_generate_url(string $name, array $parameters=[])
Generate a URL for named route.
elgg_generate_action_url(string $action, array $query=[], bool $add_csrf_tokens=true)
Generate an action URL.
elgg_get_session()
Gets Elgg's session object.
Definition: sessions.php:15
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
$menu
Form body for setting up site menu.
Definition: save.php:7