diff options
author | Arthur Schiwon <blizzz@owncloud.com> | 2014-04-15 00:13:23 +0200 |
---|---|---|
committer | Arthur Schiwon <blizzz@owncloud.com> | 2014-06-02 12:53:55 +0200 |
commit | 249e42c4cdf81c2d1c294a5535c055cdfee992b4 (patch) | |
tree | 07d884e082eb686aa93de67693a3296a4c8c08d8 /settings/ajax | |
parent | dbc854d8b8cb0a187859fae174a41de5b296595c (diff) | |
download | nextcloud-server-249e42c4cdf81c2d1c294a5535c055cdfee992b4.tar.gz nextcloud-server-249e42c4cdf81c2d1c294a5535c055cdfee992b4.zip |
enable group filtering
Diffstat (limited to 'settings/ajax')
-rw-r--r-- | settings/ajax/grouplist.php | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/settings/ajax/grouplist.php b/settings/ajax/grouplist.php new file mode 100644 index 00000000000..1041d7374e7 --- /dev/null +++ b/settings/ajax/grouplist.php @@ -0,0 +1,75 @@ +<?php +/** + * ownCloud + * + * @author Arthur Schiwon + * @copyright 2014 Arthur Schiwon <blizzz@owncloud.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ + +OC_JSON::callCheck(); +OC_JSON::checkSubAdminUser(); +if (isset($_GET['pattern']) && !empty($_GET['pattern'])) { + $pattern = $_GET['pattern']; +} else { + $pattern = ''; +} +$groups = array(); +$adminGroups = array(); +$groupManager = \OC_Group::getManager(); + +$accessiblegroups = $groupManager->search($pattern); +if (!OC_User::isAdminUser(OC_User::getUser())) { + $subadminGroups = OC_SubAdmin::getSubAdminsGroups(OC_User::getUser()); + $accessiblegroups = array_intersect($accessiblegroups, $subadminGroups); +} + +$sortGroupsIndex = 0; +$sortGroupsKeys = array(); +$sortAdminGroupsIndex = 0; +$sortAdminGroupsKeys = array(); + +foreach($accessiblegroups as $group) { + $gid = $group->getGID(); + $usersInGroup = OC_Group::usersInGroup($gid, ''); + if (!OC_User::isAdminUser($gid)) { + $groups[] = array( + 'id' => str_replace(' ','', $gid ), + 'name' => $gid, + 'usercount' => count($usersInGroup), + ); + $sortGroupsKeys[$sortGroupsIndex] = count($usersInGroup); + $sortGroupsIndex++; + } else { + $adminGroup[] = array( + 'id' => str_replace(' ','', $gid ), + 'name' => $gid, + 'usercount' => count($usersInGroup) + ); + $sortAdminGroupsKeys[$sortAdminGroupsIndex] = count($usersInGroup); + $sortAdminGroupsIndex++; + } +} + +if(!empty($groups)) { + array_multisort($sortGroupsKeys, SORT_DESC, $groups); +} +if(!empty($adminGroup)) { + array_multisort($sortAdminGroupsKeys, SORT_DESC, $adminGroup); +} + +OC_JSON::success( + array('data' => array('adminGroups' => $adminGroups, 'groups' => $groups))); |