1414use LearnPress \Databases \UserItemsDB ;
1515use LearnPress \Filters \Course \CourseJsonFilter ;
1616use LearnPress \Filters \UserItemsFilter ;
17+ use LearnPress \Services \UserService ;
1718use LP_Cache ;
1819use LP_Debug ;
1920use LP_User ;
@@ -243,39 +244,6 @@ public function get_pretty_slug( bool $fallback_to_username = true ): string {
243244 return $ this ->get_username ();
244245 }
245246
246- /**
247- * Check if pretty slug exists of another user.
248- *
249- * @param string $slug
250- *
251- * @return int
252- * @since 4.3.4
253- * @version 1.0.0
254- */
255- public function check_user_slug_pretty ( string $ slug ): int {
256- $ user_id = 0 ;
257-
258- try {
259- $ lp_user_db = LP_User_DB::instance ();
260- $ filter = new LP_User_Filter ();
261- $ filter ->only_fields = [ 'u.ID ' ];
262- $ filter ->run_query_count = false ;
263- $ filter ->limit = 1 ;
264- $ filter ->return_string_query = true ;
265- $ filter ->join [] = "INNER JOIN {$ lp_user_db ->wpdb ->usermeta } AS um ON um.user_id = u.ID " ;
266- $ filter ->where [] = $ lp_user_db ->wpdb ->prepare ( 'AND um.meta_key = %s ' , self ::META_KEY_USER_SLUG );
267- $ filter ->where [] = $ lp_user_db ->wpdb ->prepare ( 'AND um.meta_value = %s ' , $ slug );
268- $ filter ->where [] = $ lp_user_db ->wpdb ->prepare ( 'AND u.ID != %d ' , $ this ->get_id () );
269- $ query = $ lp_user_db ->get_users ( $ filter );
270-
271- $ user_id = (int ) $ lp_user_db ->wpdb ->get_var ( $ query );
272- } catch ( Throwable $ e ) {
273- LP_Debug::error_log ( $ e );
274- }
275-
276- return $ user_id ;
277- }
278-
279247 /**
280248 * Create a unique pretty slug for user.
281249 *
@@ -306,7 +274,8 @@ public function generate_pretty_slug() {
306274 }
307275
308276 // Check slug exists.
309- if ( ! $ this ->check_user_slug_pretty ( $ base_slug ) ) {
277+ $ userModelFind = UserService::instance ()->get_user_by_pretty_slug ( $ base_slug );
278+ if ( ! $ userModelFind ) {
310279 $ this ->set_meta_value_by_key ( self ::META_KEY_USER_SLUG , $ base_slug );
311280 } else {
312281 // Regenerate slug by adding random string at the end of base slug until it is unique.
@@ -340,7 +309,14 @@ public function update_pretty_slug( string $slug ) {
340309 return '' ;
341310 }
342311
343- if ( $ this ->check_user_slug_pretty ( $ slug ) ) {
312+ $ userModelFind = UserService::instance ()->get_user_by_pretty_slug ( $ slug );
313+ // If not found any user with the slug, or found user is current user, update slug, else throw error.
314+ if ( ! $ userModelFind ) {
315+ $ this ->set_meta_value_by_key ( self ::META_KEY_USER_SLUG , $ slug );
316+
317+ return $ slug ;
318+ } elseif ( $ userModelFind ->get_id () !== $ this ->get_id () ) {
319+ // Found another user with the slug, throw error.
344320 throw new Exception (
345321 sprintf (
346322 /* translators: 1: user slug */
@@ -358,52 +334,6 @@ public function update_pretty_slug( string $slug ) {
358334 return $ slug ;
359335 }
360336
361- /**
362- * Generate pretty slug for users that still miss one (old sites support).
363- *
364- * @return array [ 'processed' => int, 'generated' => int, 'skipped' => int, 'failed' => int ]
365- */
366- public static function generate_users_pretty_slug (): array {
367- $ user_ids = get_users (
368- [
369- 'fields ' => 'ids ' ,
370- 'number ' => - 1 ,
371- ]
372- );
373-
374- $ result = [
375- 'processed ' => 0 ,
376- 'generated ' => 0 ,
377- 'skipped ' => 0 ,
378- 'failed ' => 0 ,
379- ];
380-
381- foreach ( $ user_ids as $ user_id ) {
382- $ user_id = (int ) $ user_id ;
383- ++ $ result ['processed ' ];
384-
385- $ userModel = UserModel::find ( $ user_id , true );
386- if ( ! $ userModel instanceof UserModel ) {
387- ++ $ result ['failed ' ];
388- continue ;
389- }
390-
391- if ( '' !== $ userModel ->get_pretty_slug ( false ) ) {
392- ++ $ result ['skipped ' ];
393- continue ;
394- }
395-
396- $ generated = $ userModel ->generate_pretty_slug ();
397- if ( is_wp_error ( $ generated ) ) {
398- ++ $ result ['failed ' ];
399- } else {
400- ++ $ result ['generated ' ];
401- }
402- }
403-
404- return $ result ;
405- }
406-
407337 /**
408338 * Get upload profile src.
409339 *
0 commit comments