Skip to content

Commit 039f716

Browse files
committed
changed: moved assignment of group admin to members listing actions
1 parent cc1f4d9 commit 039f716

File tree

3 files changed

+67
-85
lines changed

3 files changed

+67
-85
lines changed

classes/ColdTrick/GroupTools/Menus/Entity.php

Lines changed: 0 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -195,85 +195,4 @@ function(QueryBuilder $qb, $main_alias) {
195195

196196
return $result;
197197
}
198-
199-
/**
200-
* Add menu items to the user hover/entity menu
201-
*
202-
* @param \Elgg\Event $event 'register', 'menu:user_hover' | 'register', 'menu:entity'
203-
*
204-
* @return null|MenuItems
205-
*/
206-
public static function assignGroupAdmin(\Elgg\Event $event): ?MenuItems {
207-
if (!group_tools_multiple_admin_enabled()) {
208-
return null;
209-
}
210-
211-
$user = $event->getEntityParam();
212-
if (!$user instanceof \ElggUser) {
213-
// not a user menu
214-
return null;
215-
}
216-
217-
$page_owner = elgg_get_page_owner_entity();
218-
$loggedin_user = elgg_get_logged_in_user_entity();
219-
if (!$page_owner instanceof \ElggGroup || empty($loggedin_user)) {
220-
// not a group or logged in
221-
return null;
222-
}
223-
224-
if (!$page_owner->canEdit()) {
225-
// can't edit the group
226-
return null;
227-
}
228-
229-
if ($page_owner->owner_guid === $user->guid || $loggedin_user->guid === $user->guid) {
230-
// group owner or current user
231-
return null;
232-
}
233-
234-
if (!$page_owner->isMember($user)) {
235-
// user is not a member of the group
236-
return null;
237-
}
238-
239-
if (!group_tools_can_assign_group_admin($page_owner)) {
240-
return null;
241-
}
242-
243-
/* @var $return_value MenuItems */
244-
$return_value = $event->getValue();
245-
246-
$is_admin = $user->hasRelationship($page_owner->guid, 'group_admin');
247-
$section = $event->getType() === 'menu:user_hover' ? 'action' : 'default';
248-
249-
$return_value[] = \ElggMenuItem::factory([
250-
'name' => 'group_admin',
251-
'icon' => 'level-up-alt',
252-
'text' => elgg_echo('group_tools:multiple_admin:profile_actions:add'),
253-
'href' => elgg_generate_action_url('group_tools/toggle_admin', [
254-
'group_guid' => $page_owner->guid,
255-
'user_guid' => $user->guid,
256-
]),
257-
'item_class' => $is_admin ? 'hidden' : '',
258-
'priority' => 600,
259-
'section' => $section,
260-
'data-toggle' => 'group-admin-remove',
261-
]);
262-
263-
$return_value[] = \ElggMenuItem::factory([
264-
'name' => 'group_admin_remove',
265-
'icon' => 'level-down-alt',
266-
'text' => elgg_echo('group_tools:multiple_admin:profile_actions:remove'),
267-
'href' => elgg_generate_action_url('group_tools/toggle_admin', [
268-
'group_guid' => $page_owner->guid,
269-
'user_guid' => $user->guid,
270-
]),
271-
'item_class' => $is_admin ? '' : 'hidden',
272-
'priority' => 601,
273-
'section' => $section,
274-
'data-toggle' => 'group-admin',
275-
]);
276-
277-
return $return_value;
278-
}
279198
}

classes/ColdTrick/GroupTools/Menus/Relationship.php

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,70 @@ public static function groupDeclineMembershipReason(\Elgg\Event $event): ?MenuIt
5151

5252
return $result;
5353
}
54+
55+
/**
56+
* (un)assign group admins from the group member listing
57+
*
58+
* @param \Elgg\Event $event 'register', 'menu:relationship'
59+
*
60+
* @return MenuItems|null
61+
*/
62+
public static function toggleGroupAdmin(\Elgg\Event $event): ?MenuItems {
63+
$user = elgg_get_logged_in_user_entity();
64+
if (!group_tools_multiple_admin_enabled() || !$user instanceof \ElggUser) {
65+
return null;
66+
}
67+
68+
$relationship = $event->getParam('relationship');
69+
if (!$relationship instanceof \ElggRelationship || $relationship->relationship !== 'member') {
70+
return null;
71+
}
72+
73+
$member = get_user($relationship->guid_one);
74+
$group = get_entity($relationship->guid_two);
75+
if (!$member instanceof \ElggUser || !$group instanceof \ElggGroup) {
76+
return null;
77+
}
78+
79+
if (!$group->canEdit($user->guid) || $user->guid === $member->guid || $member->guid === $group->owner_guid) {
80+
return null;
81+
}
82+
83+
if (!group_tools_can_assign_group_admin($group)) {
84+
return null;
85+
}
86+
87+
/* @var $return_value MenuItems */
88+
$return_value = $event->getValue();
89+
90+
$is_admin = $member->hasRelationship($group->guid, 'group_admin');
91+
92+
$return_value[] = \ElggMenuItem::factory([
93+
'name' => 'group_admin',
94+
'icon' => 'level-up-alt',
95+
'text' => elgg_echo('group_tools:multiple_admin:profile_actions:add'),
96+
'href' => elgg_generate_action_url('group_tools/toggle_admin', [
97+
'group_guid' => $group->guid,
98+
'user_guid' => $member->guid,
99+
]),
100+
'item_class' => $is_admin ? 'hidden' : '',
101+
'priority' => 600,
102+
'data-toggle' => 'group-admin-remove',
103+
]);
104+
105+
$return_value[] = \ElggMenuItem::factory([
106+
'name' => 'group_admin_remove',
107+
'icon' => 'level-down-alt',
108+
'text' => elgg_echo('group_tools:multiple_admin:profile_actions:remove'),
109+
'href' => elgg_generate_action_url('group_tools/toggle_admin', [
110+
'group_guid' => $group->guid,
111+
'user_guid' => $member->guid,
112+
]),
113+
'item_class' => $is_admin ? '' : 'hidden',
114+
'priority' => 601,
115+
'data-toggle' => 'group-admin',
116+
]);
117+
118+
return $return_value;
119+
}
54120
}

elgg-plugin.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,6 @@
213213
'\ColdTrick\GroupTools\Menus\Entity::registerApprovalReasons' => [],
214214
'\ColdTrick\GroupTools\Menus\Entity::relatedGroup' => [],
215215
'\ColdTrick\GroupTools\Menus\Entity::suggestedGroup' => [],
216-
'\ColdTrick\GroupTools\Menus\Entity::assignGroupAdmin' => [],
217216
],
218217
'menu:filter:groups/all' => [
219218
'\ColdTrick\GroupTools\Menus\Filter\GroupsAll::addTabs' => ['priority' => 550],
@@ -234,6 +233,7 @@
234233
],
235234
'menu:relationship' => [
236235
'\ColdTrick\GroupTools\Menus\Relationship::groupDeclineMembershipReason' => ['priority' => 501],
236+
'\ColdTrick\GroupTools\Menus\Relationship::toggleGroupAdmin' => [],
237237
],
238238
'menu:title' => [
239239
'\ColdTrick\GroupTools\Menus\Title::addGroupToolPresets' => [],
@@ -242,9 +242,6 @@
242242
'\ColdTrick\GroupTools\Menus\Title::groupMembership' => ['priority' => 501],
243243
'\ColdTrick\GroupTools\Menus\Title::pendingApproval' => ['priority' => 9998],
244244
],
245-
'menu:user_hover' => [
246-
'\ColdTrick\GroupTools\Menus\Entity::assignGroupAdmin' => [],
247-
],
248245
],
249246
'prepare' => [
250247
'notification:membership_request:group:group' => [

0 commit comments

Comments
 (0)