Make WordPress Core

Ticket #33376: 33376-enhanced-upgrade.patch

File 33376-enhanced-upgrade.patch, 2.1 KB (added by chriscct7, 11 years ago)

33376 with deduplication of user_email routine

  • src/wp-admin/includes/schema.php

     
    194194  user_status int(11) NOT NULL default '0',
    195195  display_name varchar(250) NOT NULL default '',
    196196  PRIMARY KEY  (ID),
    197   KEY user_login_key (user_login),
    198   KEY user_nicename (user_nicename)
     197  UNIQUE KEY user_login_key (user_login),
     198  UNIQUE KEY user_nicename (user_nicename),
     199  UNIQUE KEY user_email_key (user_email)
    199200) $charset_collate;\n";
    200201
    201202        // Multisite users table
     
    213214  spam tinyint(2) NOT NULL default '0',
    214215  deleted tinyint(2) NOT NULL default '0',
    215216  PRIMARY KEY  (ID),
    216   KEY user_login_key (user_login),
    217   KEY user_nicename (user_nicename)
     217  UNIQUE KEY user_login_key (user_login),
     218  UNIQUE KEY user_nicename (user_nicename),
     219  UNIQUE KEY user_email_key (user_email)
    218220) $charset_collate;\n";
    219221
    220222        // Usermeta.
  • src/wp-admin/includes/upgrade.php

     
    25902590                $wpdb->query( "ALTER TABLE $wpdb->postmeta DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))" );
    25912591                $wpdb->query( "ALTER TABLE $wpdb->posts DROP INDEX post_name, ADD INDEX post_name(post_name(191))" );
    25922592        }
     2593
     2594        // Upgrade versions prior to 4.4.
     2595        if ( $wp_current_db_version < 31415 && wp_should_upgrade_global_tables() ) {
     2596                $users = $wpdb->get_results( "SELECT ID, user_login, user_email, COUNT(*) FROM $wpdb->users GROUP BY user_email HAVING COUNT(*) > 1" );
     2597                foreach( $users as $user ){
     2598                        $email = $user->user_login . '+' . $user->user_email;
     2599                        $wpdb->update( $wpdb->users ,array( 'user_email' => $email ), array( 'ID' => $user->ID ),'%s','%d' );
     2600                }
     2601                $wpdb->query( "ALTER TABLE $wpdb->users ADD ( CONSTRAINT user_login_key UNIQUE (user_login), CONSTRAINT user_nicename UNIQUE (user_nicename),  CONSTRAINT user_email_key UNIQUE (user_email) )" );
     2602        }
    25932603}
    25942604
    25952605/**