@@ -115,67 +115,46 @@ public function getDefUserShell()
115115 //
116116 // ID Number selection functions
117117 //
118- public function getNextUIDNumber ()
118+ public function getNextUIDNumber ($ UnitySQL )
119119 {
120- $ users = $ this ->userOU ->getChildrenArray (true );
120+ $ max_uid = $ UnitySQL ->getSiteVar ('MAX_UID ' );
121+ $ new_uid = $ max_uid + 1 ;
121122
122- // This could become inefficient with more users
123- usort ($ users , function ($ a , $ b ) {
124- return $ a ["uidnumber " ] <=> $ b ["uidnumber " ];
125- });
126-
127- $ id = self ::ID_MAP [0 ];
128- foreach ($ users as $ acc ) {
129- if ($ id == $ acc ["uidnumber " ][0 ]) {
130- $ id ++;
131- } else {
132- if (!$ this ->GIDNumInUse ($ id )) {
133- break ;
134- }
135- }
123+ while ($ this ->UIDNumInUse ($ new_uid )) {
124+ $ new_uid ++;
136125 }
137126
138- return $ id ;
127+ $ UnitySQL ->updateSiteVar ('MAX_UID ' , $ new_uid );
128+
129+ return $ new_uid ;
139130 }
140131
141- public function getNextPiGIDNumber ()
132+ public function getNextPiGIDNumber ($ UnitySQL )
142133 {
143- $ groups = $ this ->pi_groupOU ->getChildrenArray (true );
144-
145- usort ($ groups , function ($ a , $ b ) {
146- return $ a ["gidnumber " ] <=> $ b ["gidnumber " ];
147- });
148-
149- $ id = self ::PI_ID_MAP [0 ];
150- foreach ($ groups as $ acc ) {
151- if ($ id == $ acc ["gidnumber " ][0 ]) {
152- $ id ++;
153- } else {
154- break ;
155- }
134+ $ max_pigid = $ UnitySQL ->getSiteVar ('MAX_PIGID ' );
135+ $ new_pigid = $ max_pigid + 1 ;
136+
137+ while ($ this ->PIGIDNumInUse ($ new_pigid )) {
138+ $ new_pigid ++;
156139 }
157140
158- return $ id ;
141+ $ UnitySQL ->updateSiteVar ('MAX_PIGID ' , $ new_pigid );
142+
143+ return $ new_pigid ;
159144 }
160145
161- public function getNextOrgGIDNumber ()
146+ public function getNextOrgGIDNumber ($ UnitySQL )
162147 {
163- $ groups = $ this ->org_groupOU ->getChildrenArray (true );
164-
165- usort ($ groups , function ($ a , $ b ) {
166- return $ a ["gidnumber " ] <=> $ b ["gidnumber " ];
167- });
168-
169- $ id = self ::ORG_ID_MAP [0 ];
170- foreach ($ groups as $ acc ) {
171- if ($ id == $ acc ["gidnumber " ][0 ]) {
172- $ id ++;
173- } else {
174- break ;
175- }
148+ $ max_gid = $ UnitySQL ->getSiteVar ('MAX_GID ' );
149+ $ new_gid = $ max_gid + 1 ;
150+
151+ while ($ this ->GIDNumInUse ($ new_gid )) {
152+ $ new_gid ++;
176153 }
177154
178- return $ id ;
155+ $ UnitySQL ->updateSiteVar ('MAX_GID ' , $ new_gid );
156+
157+ return $ new_gid ;
179158 }
180159
181160 private function UIDNumInUse ($ id )
@@ -190,19 +169,31 @@ private function UIDNumInUse($id)
190169 return false ;
191170 }
192171
172+ private function PIGIDNumInUse ($ id )
173+ {
174+ $ pi_groups = $ this ->pi_groupOU ->getChildrenArray (true );
175+ foreach ($ pi_groups as $ pi_group ) {
176+ if ($ pi_group ["gidnumber " ][0 ] == $ id ) {
177+ return true ;
178+ }
179+ }
180+
181+ return false ;
182+ }
183+
193184 private function GIDNumInUse ($ id )
194185 {
195- $ users = $ this ->groupOU ->getChildrenArray (true );
196- foreach ($ users as $ user ) {
197- if ($ user ["gidnumber " ][0 ] == $ id ) {
186+ $ groups = $ this ->groupOU ->getChildrenArray (true );
187+ foreach ($ groups as $ group ) {
188+ if ($ group ["gidnumber " ][0 ] == $ id ) {
198189 return true ;
199190 }
200191 }
201192
202193 return false ;
203194 }
204195
205- public function getUnassignedID ($ uid )
196+ public function getUnassignedID ($ uid, $ UnitySQL )
206197 {
207198 $ netid = strtok ($ uid , "_ " ); // extract netid
208199 // scrape all files in custom folder
@@ -226,7 +217,7 @@ public function getUnassignedID($uid)
226217 }
227218
228219 // didn't find anything from existing mappings, use next available
229- $ next_uid = $ this ->getNextUIDNumber ();
220+ $ next_uid = $ this ->getNextUIDNumber ($ UnitySQL );
230221
231222 return $ next_uid ;
232223 }
0 commit comments