88namespace OC ;
99
1010use OC \Hooks \PublicEmitter ;
11+ use OCP \EventDispatcher \Event ;
1112use OCP \EventDispatcher \IEventDispatcher ;
13+ use OCP \EventDispatcher \IEventListener ;
1214use OCP \Group \Events \GroupDeletedEvent ;
1315use OCP \Group \Events \SubAdminAddedEvent ;
1416use OCP \Group \Events \SubAdminRemovedEvent ;
1921use OCP \IUser ;
2022use OCP \IUserManager ;
2123use OCP \User \Events \UserDeletedEvent ;
24+ use Override ;
2225
23- class SubAdmin extends PublicEmitter implements ISubAdmin {
26+ /**
27+ * @template-implements IEventListener<UserDeletedEvent|GroupDeletedEvent>
28+ */
29+ class SubAdmin extends PublicEmitter implements ISubAdmin, IEventListener {
2430 public function __construct (
2531 private IUserManager $ userManager ,
2632 private IGroupManager $ groupManager ,
2733 private IDBConnection $ dbConn ,
2834 private IEventDispatcher $ eventDispatcher ,
2935 ) {
30- $ this ->eventDispatcher ->addListener (UserDeletedEvent::class, function (UserDeletedEvent $ event ) {
31- $ this ->post_deleteUser ($ event ->getUser ());
32- });
33- $ this ->eventDispatcher ->addListener (GroupDeletedEvent::class, function (GroupDeletedEvent $ event ) {
36+ }
37+
38+ #[Override]
39+ public function handle (Event $ event ): void {
40+ if ($ event instanceof GroupDeletedEvent) {
3441 $ this ->post_deleteGroup ($ event ->getGroup ());
35- });
42+ }
43+
44+ if ($ event instanceof UserDeletedEvent) {
45+ $ this ->post_deleteUser ($ event ->getUser ());
46+ }
3647 }
3748
38- /**
39- * add a SubAdmin
40- * @param IUser $user user to be SubAdmin
41- * @param IGroup $group group $user becomes subadmin of
42- */
49+ #[Override]
4350 public function createSubAdmin (IUser $ user , IGroup $ group ): void {
4451 $ qb = $ this ->dbConn ->getQueryBuilder ();
4552
@@ -50,17 +57,10 @@ public function createSubAdmin(IUser $user, IGroup $group): void {
5057 ])
5158 ->executeStatement ();
5259
53- /** @deprecated 21.0.0 - use type SubAdminAddedEvent instead */
54- $ this ->emit ('\OC\SubAdmin ' , 'postCreateSubAdmin ' , [$ user , $ group ]);
55- $ event = new SubAdminAddedEvent ($ group , $ user );
56- $ this ->eventDispatcher ->dispatchTyped ($ event );
60+ $ this ->eventDispatcher ->dispatchTyped (new SubAdminAddedEvent ($ group , $ user ));
5761 }
5862
59- /**
60- * delete a SubAdmin
61- * @param IUser $user the user that is the SubAdmin
62- * @param IGroup $group the group
63- */
63+ #[Override]
6464 public function deleteSubAdmin (IUser $ user , IGroup $ group ): void {
6565 $ qb = $ this ->dbConn ->getQueryBuilder ();
6666
@@ -69,17 +69,10 @@ public function deleteSubAdmin(IUser $user, IGroup $group): void {
6969 ->andWhere ($ qb ->expr ()->eq ('uid ' , $ qb ->createNamedParameter ($ user ->getUID ())))
7070 ->executeStatement ();
7171
72- /** @deprecated 21.0.0 - use type SubAdminRemovedEvent instead */
73- $ this ->emit ('\OC\SubAdmin ' , 'postDeleteSubAdmin ' , [$ user , $ group ]);
74- $ event = new SubAdminRemovedEvent ($ group , $ user );
75- $ this ->eventDispatcher ->dispatchTyped ($ event );
72+ $ this ->eventDispatcher ->dispatchTyped (new SubAdminRemovedEvent ($ group , $ user ));
7673 }
7774
78- /**
79- * get groups of a SubAdmin
80- * @param IUser $user the SubAdmin
81- * @return IGroup[]
82- */
75+ #[Override]
8376 public function getSubAdminsGroups (IUser $ user ): array {
8477 $ groupIds = $ this ->getSubAdminsGroupIds ($ user );
8578
@@ -127,11 +120,7 @@ public function getSubAdminsGroupsName(IUser $user): array {
127120 }, $ this ->getSubAdminsGroups ($ user ));
128121 }
129122
130- /**
131- * get SubAdmins of a group
132- * @param IGroup $group the group
133- * @return IUser[]
134- */
123+ #[Override]
135124 public function getGroupsSubAdmins (IGroup $ group ): array {
136125 $ qb = $ this ->dbConn ->getQueryBuilder ();
137126
@@ -179,12 +168,7 @@ public function getAllSubAdmins(): array {
179168 return $ subadmins ;
180169 }
181170
182- /**
183- * checks if a user is a SubAdmin of a group
184- * @param IUser $user
185- * @param IGroup $group
186- * @return bool
187- */
171+ #[Override]
188172 public function isSubAdminOfGroup (IUser $ user , IGroup $ group ): bool {
189173 $ qb = $ this ->dbConn ->getQueryBuilder ();
190174
@@ -204,11 +188,7 @@ public function isSubAdminOfGroup(IUser $user, IGroup $group): bool {
204188 return $ result ;
205189 }
206190
207- /**
208- * checks if a user is a SubAdmin
209- * @param IUser $user
210- * @return bool
211- */
191+ #[Override]
212192 public function isSubAdmin (IUser $ user ): bool {
213193 // Check if the user is already an admin
214194 if ($ this ->groupManager ->isAdmin ($ user ->getUID ())) {
@@ -234,12 +214,7 @@ public function isSubAdmin(IUser $user): bool {
234214 return $ isSubAdmin !== false ;
235215 }
236216
237- /**
238- * checks if a user is a accessible by a subadmin
239- * @param IUser $subadmin
240- * @param IUser $user
241- * @return bool
242- */
217+ #[Override]
243218 public function isUserAccessible (IUser $ subadmin , IUser $ user ): bool {
244219 if ($ subadmin ->getUID () === $ user ->getUID ()) {
245220 return true ;
@@ -258,10 +233,9 @@ public function isUserAccessible(IUser $subadmin, IUser $user): bool {
258233 }
259234
260235 /**
261- * delete all SubAdmins by $user
262- * @param IUser $user
236+ * Delete all SubAdmins by $user
263237 */
264- private function post_deleteUser (IUser $ user ) {
238+ private function post_deleteUser (IUser $ user ): void {
265239 $ qb = $ this ->dbConn ->getQueryBuilder ();
266240
267241 $ qb ->delete ('group_admin ' )
@@ -270,10 +244,9 @@ private function post_deleteUser(IUser $user) {
270244 }
271245
272246 /**
273- * delete all SubAdmins by $group
274- * @param IGroup $group
247+ * Delete all SubAdmins by $group
275248 */
276- private function post_deleteGroup (IGroup $ group ) {
249+ private function post_deleteGroup (IGroup $ group ): void {
277250 $ qb = $ this ->dbConn ->getQueryBuilder ();
278251
279252 $ qb ->delete ('group_admin ' )
0 commit comments