summaryrefslogtreecommitdiffstats
path: root/lib/private/legacy/subadmin.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/legacy/subadmin.php')
-rw-r--r--lib/private/legacy/subadmin.php172
1 files changed, 172 insertions, 0 deletions
diff --git a/lib/private/legacy/subadmin.php b/lib/private/legacy/subadmin.php
new file mode 100644
index 00000000000..d10b6e90bb5
--- /dev/null
+++ b/lib/private/legacy/subadmin.php
@@ -0,0 +1,172 @@
+<?php
+/**
+ * @author Bart Visscher <bartv@thisnet.nl>
+ * @author Georg Ehrke <georg@owncloud.com>
+ * @author Jörn Friedrich Dreyer <jfd@butonic.de>
+ * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin McCorkell <rmccorkell@karoshi.org.uk>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program 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, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+/**
+ * This class provides all methods needed for managing groups.
+ *
+ * Hooks provided:
+ * post_createSubAdmin($gid)
+ * post_deleteSubAdmin($gid)
+ */
+class OC_SubAdmin{
+
+ /**
+ * add a SubAdmin
+ * @param string $uid uid of the SubAdmin
+ * @param string $gid gid of the group
+ * @return boolean
+ */
+ public static function createSubAdmin($uid, $gid) {
+ $groupManager = \OC::$server->getGroupManager();
+ $userManager = \OC::$server->getUserManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ return $subAdmin->createSubAdmin($userManager->get($uid), $groupManager->get($gid));
+ }
+
+ /**
+ * delete a SubAdmin
+ * @param string $uid uid of the SubAdmin
+ * @param string $gid gid of the group
+ * @return boolean
+ */
+ public static function deleteSubAdmin($uid, $gid) {
+ $groupManager = \OC::$server->getGroupManager();
+ $userManager = \OC::$server->getUserManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ return $subAdmin->deleteSubAdmin($userManager->get($uid), $groupManager->get($gid));
+ }
+
+ /**
+ * get groups of a SubAdmin
+ * @param string $uid uid of the SubAdmin
+ * @return array
+ */
+ public static function getSubAdminsGroups($uid) {
+ $groupManager = \OC::$server->getGroupManager();
+ $userManager = \OC::$server->getUserManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ $groups = $subAdmin->getSubAdminsGroups($userManager->get($uid));
+
+ // New class returns IGroup[] so convert back
+ $gids = [];
+ foreach ($groups as $group) {
+ $gids[] = $group->getGID();
+ }
+ return $gids;
+ }
+
+ /**
+ * get SubAdmins of a group
+ * @param string $gid gid of the group
+ * @return array
+ */
+ public static function getGroupsSubAdmins($gid) {
+ $groupManager = \OC::$server->getGroupManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ $users = $subAdmin->getGroupsSubAdmins($groupManager->get($gid));
+
+ // New class returns IUser[] so convert back
+ $uids = [];
+ foreach ($users as $user) {
+ $uids[] = $user->getUID();
+ }
+ return $uids;
+ }
+
+ /**
+ * get all SubAdmins
+ * @return array
+ */
+ public static function getAllSubAdmins() {
+ $groupManager = \OC::$server->getGroupManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ $subAdmins = $subAdmin->getAllSubAdmins();
+
+ // New class returns IUser[] so convert back
+ $result = [];
+ foreach ($subAdmins as $subAdmin) {
+ $result[] = [
+ 'gid' => $subAdmin['group']->getGID(),
+ 'uid' => $subAdmin['user']->getUID(),
+ ];
+ }
+ return $result;
+ }
+
+ /**
+ * checks if a user is a SubAdmin of a group
+ * @param string $uid uid of the subadmin
+ * @param string $gid gid of the group
+ * @return bool
+ */
+ public static function isSubAdminofGroup($uid, $gid) {
+ $groupManager = \OC::$server->getGroupManager();
+ $userManager = \OC::$server->getUserManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ return $subAdmin->isSubAdminOfGroup($userManager->get($uid), $groupManager->get($gid));
+ }
+
+ /**
+ * checks if a user is a SubAdmin
+ * @param string $uid uid of the subadmin
+ * @return bool
+ */
+ public static function isSubAdmin($uid) {
+ $groupManager = \OC::$server->getGroupManager();
+ $userManager = \OC::$server->getUserManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ return $subAdmin->isSubAdmin($userManager->get($uid));
+ }
+
+ /**
+ * checks if a user is a accessible by a subadmin
+ * @param string $subadmin uid of the subadmin
+ * @param string $user uid of the user
+ * @return bool
+ */
+ public static function isUserAccessible($subadmin, $user) {
+ $groupManager = \OC::$server->getGroupManager();
+ $userManager = \OC::$server->getUserManager();
+ $subAdmin = $groupManager->getSubAdmin();
+
+ return $subAdmin->isUserAccessible($userManager->get($subadmin), $userManager->get($user));
+ }
+
+ /*
+ * alias for self::isSubAdminofGroup()
+ */
+ public static function isGroupAccessible($subadmin, $group) {
+ return self::isSubAdminofGroup($subadmin, $group);
+ }
+}