1+ <?php
2+ /**
3+ * @link https://www.humhub.org/
4+ * @copyright Copyright (c) 2019 HumHub GmbH & Co. KG
5+ * @license https://www.humhub.com/licences
6+ */
7+
8+ namespace humhub \modules \rest \controllers \space ;
9+
10+ use Colors \RandomColor ;
11+ use humhub \modules \rest \components \BaseController ;
12+ use humhub \modules \rest \definitions \SpaceDefinitions ;
13+ use humhub \modules \space \models \Membership ;
14+ use humhub \modules \space \models \Space ;
15+ use humhub \modules \space \modules \manage \models \AdvancedSettingsSpace ;
16+ use humhub \modules \space \permissions \CreatePrivateSpace ;
17+ use humhub \modules \space \permissions \CreatePublicSpace ;
18+ use Yii ;
19+
20+ /**
21+ * Class MembershipController
22+ */
23+ class MembershipController extends BaseController
24+ {
25+
26+
27+ public function actionIndex ($ spaceId )
28+ {
29+ $ space = Space::findOne (['id ' => (int )$ spaceId ]);
30+ if ($ space === null ) {
31+ return $ this ->returnError (404 , 'Space not found! ' );
32+ }
33+ if (!$ space ->isAdmin ()) {
34+ return $ this ->returnError (400 , 'You cannot administer this space! ' );
35+ }
36+
37+ $ results = [];
38+ $ query = Membership::find ()->where (['space_id ' => $ space ->id ]);
39+
40+ $ pagination = $ this ->handlePagination ($ query );
41+ foreach ($ query ->all () as $ membership ) {
42+ /** @var Membership $membership */
43+ $ results [] = SpaceDefinitions::getSpaceMembership ($ membership );
44+ }
45+ return $ this ->returnPagination ($ query , $ pagination , $ results );
46+ }
47+
48+ public function actionCreate ($ spaceId , $ userId )
49+ {
50+ $ space = Space::findOne (['id ' => (int )$ spaceId ]);
51+ if ($ space === null ) {
52+ return $ this ->returnError (404 , 'Space not found! ' );
53+ }
54+ if (!$ space ->isAdmin ()) {
55+ return $ this ->returnError (400 , 'You cannot administer this space! ' );
56+ }
57+
58+ $ space ->addMember ($ userId , Yii::$ app ->request ->get ('canLeave ' , true ), Yii::$ app ->request ->get ('silent ' , false ));
59+
60+ return $ this ->returnSuccess ('Member added! ' );
61+ }
62+
63+ public function actionDelete ($ spaceId , $ userId )
64+ {
65+ $ space = Space::findOne (['id ' => (int )$ spaceId ]);
66+ if ($ space === null ) {
67+ return $ this ->returnError (404 , 'Space not found! ' );
68+ }
69+ if (!$ space ->isAdmin ()) {
70+ return $ this ->returnError (400 , 'You cannot administer this space! ' );
71+ }
72+
73+ if ($ space ->removeMember ($ userId )) {
74+ return $ this ->returnSuccess ('Member deleted ' );
75+ }
76+ return $ this ->returnError (404 , 'Member NOT deleted! ' );
77+
78+ }
79+
80+ public function actionRole ($ spaceId , $ userId )
81+ {
82+ $ space = Space::findOne (['id ' => (int )$ spaceId ]);
83+ if ($ space === null ) {
84+ return $ this ->returnError (404 , 'Space not found! ' );
85+ }
86+ if (!$ space ->isAdmin ()) {
87+ return $ this ->returnError (400 , 'You cannot administer this space! ' );
88+ }
89+
90+ $ membership = $ space ->getMembership ($ userId );
91+ if ($ membership === null ) {
92+ return $ this ->returnError (404 , 'Membership not found! ' );
93+ }
94+
95+ $ newRole = Yii::$ app ->request ->get ('role ' );
96+ if (!in_array ($ newRole , ['admin ' , 'moderator ' , 'member ' ])) {
97+ return $ this ->returnError (400 , 'Invalid role given! ' );
98+ }
99+
100+ $ membership ->group_id = $ newRole ;
101+ $ membership ->save ();
102+
103+ return $ this ->returnSuccess ('Member updated! ' );
104+ }
105+
106+
107+ }
0 commit comments