|
35 | 35 | use Pydio\Conf\Core\AjxpRole;
|
36 | 36 |
|
37 | 37 | use Pydio\Core\Services\RepositoryService;
|
| 38 | +use Pydio\Core\Services\RolesService; |
38 | 39 | use Pydio\Core\Services\UsersService;
|
39 | 40 | use Pydio\Core\Utils\DBHelper;
|
40 | 41 | use Pydio\Core\Utils\Vars\InputFilter;
|
@@ -919,16 +920,23 @@ public function relabelGroup($groupPath, $groupLabel)
|
919 | 920 | */
|
920 | 921 | public function deleteGroup($groupPath)
|
921 | 922 | {
|
922 |
| - // Delete users of this group, as well as subgroups |
923 |
| - $res = dibi::query("SELECT * FROM [ajxp_users] WHERE [groupPath] LIKE %like~ OR [groupPath] = %s ORDER BY [login] ASC", $groupPath."/", $groupPath); |
| 923 | + // Delete users of this group |
| 924 | + $res = dibi::query("SELECT [login] FROM [ajxp_users] WHERE [groupPath] LIKE %like~ OR [groupPath] = %s ORDER BY [login] ASC", $groupPath."/", $groupPath); |
924 | 925 | $rows = $res->fetchAll();
|
925 |
| - $subUsers = array(); |
926 | 926 | foreach ($rows as $row) {
|
927 |
| - $this->deleteUser($row["login"], $subUsers); |
928 |
| - dibi::query("DELETE FROM [ajxp_users] WHERE [login] = %s", $row["login"]); |
| 927 | + UsersService::deleteUser($row["login"]); |
929 | 928 | }
|
| 929 | + |
| 930 | + // Delete associated roles |
| 931 | + $res = dibi::query("SELECT [groupPath] FROM [ajxp_groups] WHERE [groupPath] LIKE %like~ OR [groupPath] = %s", $groupPath."/", $groupPath); |
| 932 | + $rows = $res->fetchAll(); |
| 933 | + foreach($rows as $row){ |
| 934 | + RolesService::deleteRole('AJXP_GRP_'.$row['groupPath']); |
| 935 | + } |
| 936 | + |
| 937 | + // Now delete groups and subgroups |
930 | 938 | dibi::query("DELETE FROM [ajxp_groups] WHERE [groupPath] LIKE %like~ OR [groupPath] = %s", $groupPath."/", $groupPath);
|
931 |
| - dibi::query('DELETE FROM [ajxp_roles] WHERE [role_id] = %s', 'AJXP_GRP_'.$groupPath); |
| 939 | + |
932 | 940 | }
|
933 | 941 |
|
934 | 942 | /**
|
@@ -976,12 +984,12 @@ public function deleteUser($userId, &$deletedSubUsers)
|
976 | 984 | dibi::query('DELETE FROM [ajxp_user_prefs] WHERE [login] = %s', $userId);
|
977 | 985 | dibi::query('DELETE FROM [ajxp_user_bookmarks] WHERE [login] = %s', $userId);
|
978 | 986 | dibi::query('DELETE FROM [ajxp_user_teams] WHERE [owner_id] = %s', $userId);
|
979 |
| - dibi::query('DELETE FROM [ajxp_roles] WHERE [role_id] = %s', 'AJXP_USR_/'.$userId); |
980 | 987 | dibi::commit();
|
981 | 988 | foreach ($children as $childId) {
|
982 | 989 | $this->deleteUser($childId, $deletedSubUsers);
|
983 | 990 | $deletedSubUsers[] = $childId;
|
984 | 991 | }
|
| 992 | + RolesService::deleteRole("AJXP_USR_/".$userId); |
985 | 993 | } catch (DibiException $e) {
|
986 | 994 | throw new \Exception('Failed to delete user, Reason: '.$e->getMessage());
|
987 | 995 | }
|
|
0 commit comments