Skip to content

Commit 7ece60f

Browse files
committed
changed: updated for Elgg 6.1
1 parent 4bb1e18 commit 7ece60f

File tree

30 files changed

+65
-780
lines changed

30 files changed

+65
-780
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Group Tools
22
===========
33

4-
![Elgg 6.0](https://img.shields.io/badge/Elgg-6.0-green.svg)
4+
![Elgg 6.1](https://img.shields.io/badge/Elgg-6.1-green.svg)
55
![Lint Checks](https://github.com/ColdTrick/group_tools/actions/workflows/lint.yml/badge.svg?event=push)
66
[![Latest Stable Version](https://poser.pugx.org/coldtrick/group_tools/v/stable.svg)](https://packagist.org/packages/coldtrick/group_tools)
77
[![License](https://poser.pugx.org/coldtrick/group_tools/license.svg)](https://packagist.org/packages/coldtrick/group_tools)

actions/groups/invite.php

+1-4
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
use Symfony\Component\HttpFoundation\File\UploadedFile;
77

88
$user_guids = (array) get_input('user_guid');
9-
$non_group_members = (array) get_input('non_group_members');
10-
11-
$user_guids = array_merge($user_guids, $non_group_members);
129
$user_guids = array_filter($user_guids);
1310

1411
$adding = false;
@@ -55,7 +52,7 @@
5552
return elgg_error_response(elgg_echo('error:missing_data'));
5653
}
5754

58-
if (!$group->canEdit() && !group_tools_allow_members_invite($group)) {
55+
if (!$group->canEdit()) {
5956
return elgg_error_response(elgg_echo('actionunauthorized'));
6057
}
6158

classes/ColdTrick/GroupTools/Menus/Filter/GroupsAll.php

-16
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,6 @@
99
*/
1010
class GroupsAll {
1111

12-
/**
13-
* Rewrite group listing tabs
14-
*
15-
* @param \Elgg\Event $event 'register', 'menu:filter:groups/all'
16-
*
17-
* @return MenuItems
18-
*/
19-
public static function removeTabs(\Elgg\Event $event): MenuItems {
20-
/* @var $return MenuItems */
21-
$return = $event->getValue();
22-
23-
$return->remove('popular');
24-
25-
return $return;
26-
}
27-
2812
/**
2913
* Rewrite group listing tabs
3014
*

classes/ColdTrick/GroupTools/Menus/Filter/GroupsMembers.php

+16
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace ColdTrick\GroupTools\Menus\Filter;
44

5+
use Elgg\Database\QueryBuilder;
56
use Elgg\Menu\MenuItems;
67

78
/**
@@ -70,6 +71,21 @@ public static function registerEmailInvitations(\Elgg\Event $event) {
7071
'guid' => $entity->guid,
7172
]),
7273
'priority' => 600,
74+
'badge' => elgg_get_annotations([
75+
'selects' => [
76+
function(QueryBuilder $qb, $main_alias) {
77+
return "SUBSTRING_INDEX({$main_alias}.value, '|', -1) AS invited_email";
78+
},
79+
],
80+
'annotation_name' => 'email_invitation',
81+
'annotation_owner_guid' => $entity->guid,
82+
'wheres' => [
83+
function(QueryBuilder $qb, $main_alias) {
84+
return $qb->compare("{$main_alias}.value", 'LIKE', '%|%', ELGG_VALUE_STRING);
85+
},
86+
],
87+
'count' => true,
88+
]),
7389
]);
7490

7591
return $result;

classes/ColdTrick/GroupTools/Menus/FilterSortItems.php

-54
This file was deleted.

classes/ColdTrick/GroupTools/Menus/Title.php

+1-100
Original file line numberDiff line numberDiff line change
@@ -35,24 +35,7 @@ public static function groupMembership(\Elgg\Event $event): ?MenuItems {
3535
return null;
3636
}
3737

38-
if ($user->hasRelationship($entity->guid, 'membership_request')) {
39-
// user already requested to join this group
40-
$menu_item->setText(elgg_echo('group_tools:joinrequest:already'));
41-
$menu_item->setTooltip(elgg_echo('group_tools:joinrequest:already:tooltip'));
42-
$menu_item->setHref(elgg_generate_action_url('groups/killrequest', [
43-
'user_guid' => $user->guid,
44-
'group_guid' => $entity->guid,
45-
]));
46-
} elseif ($entity->hasRelationship($user->guid, 'invited')) {
47-
// the user was invited, so let him/her join
48-
$menu_item->setName('groups:join');
49-
$menu_item->setText(elgg_echo('groups:join'));
50-
$menu_item->setTooltip(elgg_echo('group_tools:join:already:tooltip'));
51-
$menu_item->setHref(elgg_generate_action_url('groups/join', [
52-
'user_guid' => $user->guid,
53-
'group_guid' => $entity->guid,
54-
]));
55-
} elseif (group_tools_check_domain_based_group($entity, $user)) {
38+
if (group_tools_check_domain_based_group($entity, $user)) {
5639
// user has a matching email domain
5740
$menu_item->setName('groups:join');
5841
$menu_item->setText(elgg_echo('groups:join'));
@@ -77,88 +60,6 @@ public static function groupMembership(\Elgg\Event $event): ?MenuItems {
7760
return $menu_items;
7861
}
7962

80-
/**
81-
* Change the text of the group invite button, and maybe add it for group members
82-
*
83-
* @param \Elgg\Event $event 'register', 'menu:title'
84-
*
85-
* @return null|MenuItems
86-
*/
87-
public static function groupInvite(\Elgg\Event $event): ?MenuItems {
88-
if (!elgg_in_context('groups')) {
89-
return null;
90-
}
91-
92-
$user = elgg_get_logged_in_user_entity();
93-
if (!$user instanceof \ElggUser) {
94-
return null;
95-
}
96-
97-
/* @var $menu_items MenuItems */
98-
$menu_items = $event->getValue();
99-
100-
$invite_found = false;
101-
$menu_item = $menu_items->get('groups:invite');
102-
if ($menu_item instanceof \ElggMenuItem) {
103-
$invite_found = true;
104-
105-
$invite_friends = elgg_get_plugin_setting('invite_friends', 'group_tools');
106-
$invite = elgg_get_plugin_setting('invite', 'group_tools');
107-
$invite_email = elgg_get_plugin_setting('invite_email', 'group_tools');
108-
$invite_csv = elgg_get_plugin_setting('invite_csv', 'group_tools');
109-
110-
if (in_array('yes', [$invite, $invite_csv, $invite_email])) {
111-
$menu_item->setText(elgg_echo('group_tools:groups:invite'));
112-
113-
$menu_items->add($menu_item);
114-
} elseif ($invite_friends === 'no') {
115-
$menu_items->remove('groups:invite');
116-
}
117-
}
118-
119-
// maybe allow normal users to invite new members
120-
if (!elgg_in_context('group_profile') || $invite_found) {
121-
return $menu_items;
122-
}
123-
124-
// this is only allowed for group members
125-
$entity = $event->getEntityParam();
126-
if (!$entity instanceof \ElggGroup || !$entity->isMember($user)) {
127-
return null;
128-
}
129-
130-
// we're on a group profile page, but haven't found the invite button yet
131-
// so check if it should be here
132-
if (!group_tools_allow_members_invite($entity)) {
133-
return null;
134-
}
135-
136-
// normal users are allowed to invite users
137-
$invite_friends = elgg_get_plugin_setting('invite_friends', 'group_tools');
138-
$invite = elgg_get_plugin_setting('invite', 'group_tools');
139-
$invite_email = elgg_get_plugin_setting('invite_email', 'group_tools');
140-
$invite_csv = elgg_get_plugin_setting('invite_csv', 'group_tools');
141-
142-
if (in_array('yes', [$invite, $invite_csv, $invite_email])) {
143-
$text = elgg_echo('group_tools:groups:invite');
144-
} elseif ($invite_friends !== 'no') {
145-
$text = elgg_echo('groups:invite');
146-
} else {
147-
// not allowed
148-
return null;
149-
}
150-
151-
$menu_items[] = \ElggMenuItem::factory([
152-
'name' => 'groups:invite',
153-
'icon' => 'user-plus',
154-
'href' => elgg_generate_url('invite:group:group', ['guid' => $entity->guid]),
155-
'text' => $text,
156-
'link_class' => 'elgg-button elgg-button-action',
157-
]);
158-
159-
return $menu_items;
160-
}
161-
16263
/**
16364
* Change the text on the group membership status button
16465
*

classes/ColdTrick/GroupTools/Views.php

+23-64
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class Views {
2222
* @return null|array
2323
*/
2424
public static function prepareGroupAll(\Elgg\Event $event): ?array {
25-
if (!empty(get_input('sort_by')) || !empty(get_input('sort'))) {
25+
if (!empty(get_input('sort_by'))) {
2626
return null;
2727
}
2828

@@ -35,77 +35,36 @@ public static function prepareGroupAll(\Elgg\Event $event): ?array {
3535

3636
$vars = $event->getValue();
3737

38-
// support for 'old' tabs
39-
switch ($filter) {
40-
case 'popular':
41-
set_input('sort', 'popular');
42-
set_input('filter', 'all');
43-
$vars['filter_sorting_selected'] = 'popular';
38+
set_input('filter', $filter);
39+
$sorting = elgg_get_plugin_setting("group_listing_{$filter}_sorting", 'group_tools', 'newest');
40+
switch ($sorting) {
41+
case 'alpha':
42+
set_input('sort_by', [
43+
'property_type' => 'metadata',
44+
'property' => 'name',
45+
'direction' => 'asc',
46+
]);
47+
$vars['filter_sorting_selected'] = 'sort:name:asc';
4448
break;
4549

46-
default:
47-
set_input('filter', $filter);
48-
$sorting = elgg_get_plugin_setting("group_listing_{$filter}_sorting", 'group_tools', 'newest');
49-
switch ($sorting) {
50-
case 'alpha':
51-
set_input('sort_by', [
52-
'property_type' => 'metadata',
53-
'property' => 'name',
54-
'direction' => 'asc',
55-
]);
56-
$vars['filter_sorting_selected'] = 'sort:name:asc';
57-
break;
58-
59-
case 'newest':
60-
set_input('sort_by', [
61-
'property_type' => 'attribute',
62-
'property' => 'time_created',
63-
'direction' => 'desc',
64-
]);
65-
$vars['filter_sorting_selected'] = 'sort:time_created:desc';
66-
break;
67-
68-
case 'popular':
69-
set_input('sort', $sorting);
70-
$vars['filter_sorting_selected'] = 'popular';
71-
break;
72-
}
50+
case 'newest':
51+
set_input('sort_by', [
52+
'property_type' => 'attribute',
53+
'property' => 'time_created',
54+
'direction' => 'desc',
55+
]);
56+
$vars['filter_sorting_selected'] = 'sort:time_created:desc';
57+
break;
58+
59+
case 'popular':
60+
set_input('sort_by', $sorting);
61+
$vars['filter_sorting_selected'] = 'popular';
7362
break;
7463
}
7564

7665
return $vars;
7766
}
7867

79-
/**
80-
* Change some inputs when listing users in livesearch for group invites
81-
*
82-
* @param \Elgg\Event $event 'view_vars', 'page/components/list'
83-
*
84-
* @return null|array
85-
*/
86-
public static function livesearchUserListing(\Elgg\Event $event): ?array {
87-
$group_guid = (int) get_input('group_guid');
88-
$group_invite = (bool) get_input('group_invite');
89-
if ($group_guid < 1 || empty($group_invite)) {
90-
return null;
91-
}
92-
93-
$group = get_entity($group_guid);
94-
if (!$group instanceof \ElggGroup) {
95-
return null;
96-
}
97-
98-
$vars = $event->getValue();
99-
if (elgg_extract('type', $vars) !== 'user') {
100-
return null;
101-
}
102-
103-
$vars['item_view'] = 'group_tools/group_invite/user';
104-
$vars['group'] = $group;
105-
106-
return $vars;
107-
}
108-
10968
/**
11069
* Set correct value to show/hide group owner transfer
11170
*

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
"issues": "https://github.com/ColdTrick/group_tools/issues"
1111
},
1212
"conflict": {
13-
"elgg/elgg": "<6.0"
13+
"elgg/elgg": "<6.1"
1414
}
1515
}

composer.lock

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)