Advertisement
aknath

Replace duplicate nickname and display name with username

Nov 28th, 2013
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.60 KB | None | 0 0
  1. // A dirty script by Ashok
  2. /*
  3.  * adding action when user profile is updated
  4.  */
  5. add_action('personal_options_update', 'check_display_name');
  6. add_action('edit_user_profile_update', 'check_display_name');
  7. function check_display_name($user_id) {
  8.         global $wpdb;
  9.     // Getting user data and user meta data
  10.         $err['display'] = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) FROM $wpdb->users WHERE display_name = %s AND ID <> %d", $_POST['display_name'], $_POST['user_id']));
  11.     $err['nick'] = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) FROM $wpdb->users as users, $wpdb->usermeta as meta WHERE users.ID = meta.user_id AND meta.meta_key = 'nickname' AND meta.meta_value = %s AND users.ID <> %d", $_POST['nickname'], $_POST['user_id']));
  12.     foreach($err as $key => $e) {
  13.         // If display name or nickname already exists
  14.         if($e >= 1) {
  15.             $err[$key] = $_POST['username'];
  16.             // Adding filter to corresponding error
  17.             add_filter('user_profile_update_errors', "check_{$key}_field", 10, 3);
  18.         }
  19.     }
  20. }
  21. /*
  22.  * Filter function for display name error
  23.  */
  24. function check_display_field($errors, $update, $user) {
  25.         $errors->add('display_name_error',__('Sorry, Display Name is already in use. It needs to be unique.'));
  26.         return false;
  27. }
  28. /*
  29.  * Filter function for nickname error
  30.  */
  31. function check_nick_field($errors, $update, $user) {
  32.         $errors->add('display_nick_error',__('Sorry, Nickname is already in use. It needs to be unique.'));
  33.         return false;
  34. }
  35. /*
  36.  * Check for duplicate display name and nickname and replace with username
  37.  */
  38. function display_name_and_nickname_duplicate_check() {
  39.     global $wpdb;
  40.     $query = $wpdb->get_results("select * from $wpdb->users");
  41.     $query2 = $wpdb->get_results("SELECT * FROM $wpdb->users as users, $wpdb->usermeta as meta WHERE users.ID = meta.user_id AND meta.meta_key = 'nickname'");
  42.     $c = count($query);
  43.     for($i = 0; $i < $c; $i++) {
  44.         for($j = $i+1; $j < $c; $j++) {
  45.             if($query[$i]->display_name == $query[$j]->display_name){
  46.                 wp_update_user(
  47.                         array(
  48.                               'ID' => $query[$i]->ID,
  49.                               'display_name' => $query[$i]->user_login
  50.                         )      
  51.                     );
  52.             }
  53.             if($query2[$i]->meta_value == $query2[$j]->meta_value){
  54.                 update_user_meta($query2[$i]->ID, 'nickname', $query2[$i]->user_login, $prev_value);
  55.             }
  56.         }
  57.     }
  58. }
  59. // Call the function
  60. display_name_and_nickname_duplicate_check();
  61.  
  62. /*
  63.  * Calling the display_name_and_nickname_duplicate_check() again when a new user is registered
  64.  */
  65. add_action( 'user_register', 'check_nickname', 10, 1 );
  66. function check_nickname() {
  67.     display_name_and_nickname_duplicate_check();
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement