1
1
<?php
2
+
2
3
/*
3
4
* This file is part of MODX Revolution.
4
5
*
11
12
namespace MODX \Revolution \Processors \Security \Group ;
12
13
13
14
use MODX \Revolution \Processors \Processor ;
14
- use MODX \Revolution \modUser ;
15
15
use MODX \Revolution \modUserGroup ;
16
- use MODX \Revolution \modUserGroupMember ;
17
16
use MODX \Revolution \modX ;
18
17
19
18
/**
@@ -56,9 +55,6 @@ public function process()
56
55
}
57
56
58
57
$ this ->sortGroups ($ data );
59
- if ($ this ->modx ->hasPermission ('usergroup_user_edit ' )) {
60
- $ this ->sortUsers ($ data );
61
- }
62
58
63
59
return $ this ->success ();
64
60
}
@@ -75,93 +71,40 @@ public function sortGroups(array $data)
75
71
76
72
/* readjust groups */
77
73
foreach ($ groups as $ groupArray ) {
78
- if (!empty ($ groupArray ['id ' ])) {
79
- /** @var modUserGroup $userGroup */
80
- $ userGroup = $ this ->modx ->getObject (modUserGroup::class, $ groupArray ['id ' ]);
81
- if ($ userGroup === null ) {
82
- $ this ->modx ->log (modX::LOG_LEVEL_ERROR ,
83
- 'Could not sort group ' . $ groupArray ['id ' ] . ' because it could not be found. ' );
84
- continue ;
85
- }
86
- $ oldParentId = $ userGroup ->get ('parent ' );
87
- } else {
88
- $ userGroup = $ this ->modx ->newObject (modUserGroup::class);
89
- $ oldParentId = 0 ;
74
+ if (empty ($ groupArray ['id ' ])) {
75
+ continue ;
76
+ }
77
+
78
+ if ($ groupArray ['id ' ] === 1 ) {
79
+ continue ;
80
+ }
81
+
82
+ /** @var modUserGroup $userGroup */
83
+ $ userGroup = $ this ->modx ->getObject (modUserGroup::class, $ groupArray ['id ' ]);
84
+ if ($ userGroup === null ) {
85
+ $ this ->modx ->log (modX::LOG_LEVEL_ERROR , 'Could not sort group ' . $ groupArray ['id ' ] . ' because it could not be found. ' );
86
+ continue ;
90
87
}
88
+ $ oldParentId = $ userGroup ->get ('parent ' );
89
+
91
90
92
91
if ($ groupArray ['parent ' ] === $ userGroup ->get ('id ' )) {
93
92
continue ;
94
93
}
95
94
96
- if ($ groupArray ['parent ' ] === 0 || $ oldParentId !== $ groupArray ['parent ' ]) {
97
- /* get new parent, if invalid, skip, unless is root */
95
+ if ($ oldParentId !== $ groupArray ['parent ' ]) {
98
96
if ($ groupArray ['parent ' ] !== 0 ) {
99
97
/** @var modUserGroup $parentUserGroup */
100
98
$ parentUserGroup = $ this ->modx ->getObject (modUserGroup::class, $ groupArray ['parent ' ]);
101
99
if ($ parentUserGroup === null ) {
102
100
continue ;
103
101
}
104
- $ depth = $ parentUserGroup ->get ('depth ' ) + 1 ;
105
- } else {
106
- $ depth = 0 ;
107
102
}
108
103
109
- /* save new parent and depth */
110
104
$ userGroup ->set ('parent ' , $ groupArray ['parent ' ]);
111
- $ userGroup ->set ('depth ' , $ depth );
112
- }
113
- if ($ groupArray ['id ' ] !== 0 ) {
114
- $ userGroup ->save ();
115
- }
116
- }
117
- }
118
-
119
- /**
120
- * Sort and rearrange any users in the data
121
- * @param array $data
122
- * @return void
123
- */
124
- public function sortUsers (array $ data )
125
- {
126
- $ users = [];
127
- $ this ->getUsersFormatted ($ users , $ data );
128
- /* readjust users */
129
- foreach ($ users as $ userArray ) {
130
- if (empty ($ userArray ['id ' ])) {
131
- continue ;
132
- }
133
- /** @var modUser $user */
134
- $ user = $ this ->modx ->getObject (modUser::class, $ userArray ['id ' ]);
135
- if ($ user === null ) {
136
- continue ;
137
105
}
138
106
139
- /* get new parent, if invalid, skip, unless is root */
140
- if ($ userArray ['new_group ' ] !== 0 && $ userArray ['new_group ' ] !== $ userArray ['old_group ' ]) {
141
- /** @var modUserGroup $membership */
142
- $ membership = $ this ->modx ->getObject (modUserGroupMember::class, [
143
- 'user_group ' => $ userArray ['new_group ' ],
144
- 'member ' => $ user ->get ('id ' ),
145
- ]);
146
- if ($ membership === null ) {
147
- $ membership = $ this ->modx ->newObject (modUserGroupMember::class);
148
- $ membership ->set ('user_group ' , $ userArray ['new_group ' ]);
149
- }
150
- $ membership ->set ('member ' , $ user ->get ('id ' ));
151
- if ($ membership ->save ()) {
152
- /* remove user from old group */
153
- if (!empty ($ userArray ['old_group ' ])) {
154
- /** @var modUserGroup $oldMembership */
155
- $ oldMembership = $ this ->modx ->getObject (modUserGroupMember::class, [
156
- 'user_group ' => $ userArray ['old_group ' ],
157
- 'member ' => $ user ->get ('id ' ),
158
- ]);
159
- if ($ oldMembership ) {
160
- $ oldMembership ->remove ();
161
- }
162
- }
163
- }
164
- }
107
+ $ userGroup ->save ();
165
108
}
166
109
}
167
110
@@ -177,39 +120,13 @@ protected function getGroupsFormatted(&$ar_nodes, $cur_level, $parent = 0)
177
120
$ id = substr ($ id , 2 ); /* get rid of CSS id n_ prefix */
178
121
if (substr ($ id , 0 , 2 ) === 'ug ' ) {
179
122
$ ar_nodes [] = [
180
- 'id ' => substr ($ id , 3 ),
181
- 'parent ' => substr ($ parent , 3 ),
123
+ 'id ' => intval ( substr ($ id , 3 ) ),
124
+ 'parent ' => intval ( substr ($ parent , 3 ) ),
182
125
'order ' => $ order ,
183
126
];
184
127
$ order ++;
185
128
}
186
129
$ this ->getGroupsFormatted ($ ar_nodes , $ children , $ id );
187
130
}
188
131
}
189
-
190
- /**
191
- * @param $ar_nodes
192
- * @param $cur_level
193
- * @param int $parent
194
- */
195
- protected function getUsersFormatted (&$ ar_nodes , $ cur_level , $ parent = 0 )
196
- {
197
- $ order = 0 ;
198
- foreach ($ cur_level as $ id => $ children ) {
199
- $ id = substr ($ id , 2 ); /* get rid of CSS id n_ prefix */
200
- if (substr ($ id , 0 , 4 ) === 'user ' ) {
201
- $ userMap = substr ($ id , 5 );
202
- $ userMap = explode ('_ ' , $ userMap );
203
- $ ar_nodes [] = [
204
- 'id ' => $ userMap [0 ],
205
- 'old_group ' => $ userMap [1 ],
206
- 'new_group ' => substr ($ parent , 3 ),
207
- 'order ' => $ order ,
208
- ];
209
- $ order ++;
210
- }
211
- $ this ->getUsersFormatted ($ ar_nodes , $ children , $ id );
212
- }
213
- }
214
-
215
132
}
0 commit comments