]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-admin/includes/upgrade.php
WordPress 4.0
[autoinstalls/wordpress.git] / wp-admin / includes / upgrade.php
index d22922ed781480a96357a6ca04d540a73fd2ec3b..02dfe093d3d7a2ccc752cefc4a0e2d0b891c65ab 100644 (file)
@@ -32,9 +32,10 @@ if ( !function_exists('wp_install') ) :
  * @param bool $public Whether blog is public.
  * @param null $deprecated Optional. Not used.
  * @param string $user_password Optional. User's chosen password. Will default to a random password.
+ * @param string $language Optional. Language chosen.
  * @return array Array keys 'url', 'user_id', 'password', 'password_message'.
  */
-function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated = '', $user_password = '' ) {
+function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated = '', $user_password = '', $language = '' ) {
        if ( !empty( $deprecated ) )
                _deprecated_argument( __FUNCTION__, '2.6' );
 
@@ -48,6 +49,10 @@ function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated
        update_option('admin_email', $user_email);
        update_option('blog_public', $public);
 
+       if ( $language ) {
+               update_option( 'WPLANG', $language );
+       }
+
        $guessurl = wp_guess_url();
 
        update_option('siteurl', $guessurl);
@@ -56,8 +61,10 @@ function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated
        if ( ! $public )
                update_option('default_pingback_flag', 0);
 
-       // Create default user. If the user already exists, the user tables are
-       // being shared among blogs. Just set the role in that case.
+       /*
+        * Create default user. If the user already exists, the user tables are
+        * being shared among blogs. Just set the role in that case.
+        */
        $user_id = username_exists($user_name);
        $user_password = trim($user_password);
        $email_password = false;
@@ -86,6 +93,15 @@ function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated
 
        wp_cache_flush();
 
+       /**
+        * Fires after a site is fully installed.
+        *
+        * @since 3.9.0
+        *
+        * @param WP_User $user The site owner.
+        */
+       do_action( 'wp_install', $user );
+
        return array('url' => $guessurl, 'user_id' => $user_id, 'password' => $user_password, 'password_message' => $message);
 }
 endif;
@@ -100,8 +116,8 @@ if ( !function_exists('wp_install_defaults') ) :
  *
  * @param int $user_id User ID.
  */
-function wp_install_defaults($user_id) {
-       global $wpdb, $wp_rewrite, $current_site, $table_prefix;
+function wp_install_defaults( $user_id ) {
+       global $wpdb, $wp_rewrite, $table_prefix;
 
        // Default category
        $cat_name = __('Uncategorized');
@@ -132,10 +148,10 @@ function wp_install_defaults($user_id) {
                $first_post = get_site_option( 'first_post' );
 
                if ( empty($first_post) )
-                       $first_post = stripslashes( __( 'Welcome to <a href="SITE_URL">SITE_NAME</a>. This is your first post. Edit or delete it, then start blogging!' ) );
+                       $first_post = __( 'Welcome to <a href="SITE_URL">SITE_NAME</a>. This is your first post. Edit or delete it, then start blogging!' );
 
                $first_post = str_replace( "SITE_URL", esc_url( network_home_url() ), $first_post );
-               $first_post = str_replace( "SITE_NAME", $current_site->site_name, $first_post );
+               $first_post = str_replace( "SITE_NAME", get_current_site()->site_name, $first_post );
        } else {
                $first_post = __('Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!');
        }
@@ -161,7 +177,7 @@ function wp_install_defaults($user_id) {
 
        // Default comment
        $first_comment_author = __('Mr WordPress');
-       $first_comment_url = 'http://wordpress.org/';
+       $first_comment_url = 'https://wordpress.org/';
        $first_comment = __('Hi, this is a comment.
 To delete a comment, just log in and view the post&#039;s comments. There you will have the option to edit or delete them.');
        if ( is_multisite() ) {
@@ -218,7 +234,7 @@ As a new WordPress user, you should go to <a href=\"%s\">your dashboard</a> to d
        update_option( 'widget_archives', array ( 2 => array ( 'title' => '', 'count' => 0, 'dropdown' => 0 ), '_multiwidget' => 1 ) );
        update_option( 'widget_categories', array ( 2 => array ( 'title' => '', 'count' => 0, 'hierarchical' => 0, 'dropdown' => 0 ), '_multiwidget' => 1 ) );
        update_option( 'widget_meta', array ( 2 => array ( 'title' => '' ), '_multiwidget' => 1 ) );
-       update_option( 'sidebars_widgets', array ( 'wp_inactive_widgets' => array ( ), 'sidebar-1' => array ( 0 => 'search-2', 1 => 'recent-posts-2', 2 => 'recent-comments-2', 3 => 'archives-2', 4 => 'categories-2', 5 => 'meta-2', ), 'sidebar-2' => array ( ), 'sidebar-3' => array ( ), 'array_version' => 3 ) );
+       update_option( 'sidebars_widgets', array ( 'wp_inactive_widgets' => array (), 'sidebar-1' => array ( 0 => 'search-2', 1 => 'recent-posts-2', 2 => 'recent-comments-2', 3 => 'archives-2', 4 => 'categories-2', 5 => 'meta-2', ), 'sidebar-2' => array (), 'sidebar-3' => array (), 'array_version' => 3 ) );
 
        if ( ! is_multisite() )
                update_user_meta( $user_id, 'show_welcome_panel', 1 );
@@ -273,7 +289,7 @@ Password: %3\$s
 We hope you enjoy your new site. Thanks!
 
 --The WordPress Team
-http://wordpress.org/
+https://wordpress.org/
 "), $blog_url, $name, $password);
 
        @wp_mail($email, __('New WordPress Site'), $message);
@@ -317,6 +333,16 @@ function wp_upgrade() {
                else
                        $wpdb->query( "INSERT INTO {$wpdb->blog_versions} ( `blog_id` , `db_version` , `last_updated` ) VALUES ( '{$wpdb->blogid}', '{$wp_db_version}', NOW());" );
        }
+
+       /**
+        * Fires after a site is fully upgraded.
+        *
+        * @since 3.9.0
+        *
+        * @param int $wp_db_version         The new $wp_db_version.
+        * @param int $wp_current_db_version The old (current) $wp_db_version.
+        */
+       do_action( 'wp_upgrade', $wp_db_version, $wp_current_db_version );
 }
 endif;
 
@@ -402,6 +428,18 @@ function upgrade_all() {
        if ( $wp_current_db_version < 22422 )
                upgrade_350();
 
+       if ( $wp_current_db_version < 25824 )
+               upgrade_370();
+
+       if ( $wp_current_db_version < 26148 )
+               upgrade_372();
+
+       if ( $wp_current_db_version < 26691 )
+               upgrade_380();
+
+       if ( $wp_current_db_version < 29630 )
+               upgrade_400();
+
        maybe_disable_link_manager();
 
        maybe_disable_automattic_widgets();
@@ -433,13 +471,15 @@ function upgrade_100() {
        foreach ($categories as $category) {
                if ('' == $category->category_nicename) {
                        $newtitle = sanitize_title($category->cat_name);
-                       $wpdb>update( $wpdb->categories, array('category_nicename' => $newtitle), array('cat_ID' => $category->cat_ID) );
+                       $wpdb->update( $wpdb->categories, array('category_nicename' => $newtitle), array('cat_ID' => $category->cat_ID) );
                }
        }
 
-       $wpdb->query("UPDATE $wpdb->options SET option_value = REPLACE(option_value, 'wp-links/links-images/', 'wp-images/links/')
-       WHERE option_name LIKE 'links_rating_image%'
-       AND option_value LIKE 'wp-links/links-images/%'");
+       $sql = "UPDATE $wpdb->options
+               SET option_value = REPLACE(option_value, 'wp-links/links-images/', 'wp-images/links/')
+               WHERE option_name LIKE %s
+               AND option_value LIKE %s";
+       $wpdb->query( $wpdb->prepare( $sql, $wpdb->esc_like( 'links_rating_image' ) . '%', $wpdb->esc_like( 'wp-links/links-images/' ) . '%' ) );
 
        $done_ids = $wpdb->get_results("SELECT DISTINCT post_id FROM $wpdb->post2cat");
        if ($done_ids) :
@@ -590,8 +630,10 @@ function upgrade_130() {
 
        $active_plugins = __get_option('active_plugins');
 
-       // If plugins are not stored in an array, they're stored in the old
-       // newline separated format. Convert to new format.
+       /*
+        * If plugins are not stored in an array, they're stored in the old
+        * newline separated format. Convert to new format.
+        */
        if ( !is_array( $active_plugins ) ) {
                $active_plugins = explode("\n", trim($active_plugins));
                update_option('active_plugins', $active_plugins);
@@ -636,23 +678,23 @@ function upgrade_160() {
        $users = $wpdb->get_results("SELECT * FROM $wpdb->users");
        foreach ( $users as $user ) :
                if ( !empty( $user->user_firstname ) )
-                       update_user_meta( $user->ID, 'first_name', $wpdb->escape($user->user_firstname) );
+                       update_user_meta( $user->ID, 'first_name', wp_slash($user->user_firstname) );
                if ( !empty( $user->user_lastname ) )
-                       update_user_meta( $user->ID, 'last_name', $wpdb->escape($user->user_lastname) );
+                       update_user_meta( $user->ID, 'last_name', wp_slash($user->user_lastname) );
                if ( !empty( $user->user_nickname ) )
-                       update_user_meta( $user->ID, 'nickname', $wpdb->escape($user->user_nickname) );
+                       update_user_meta( $user->ID, 'nickname', wp_slash($user->user_nickname) );
                if ( !empty( $user->user_level ) )
                        update_user_meta( $user->ID, $wpdb->prefix . 'user_level', $user->user_level );
                if ( !empty( $user->user_icq ) )
-                       update_user_meta( $user->ID, 'icq', $wpdb->escape($user->user_icq) );
+                       update_user_meta( $user->ID, 'icq', wp_slash($user->user_icq) );
                if ( !empty( $user->user_aim ) )
-                       update_user_meta( $user->ID, 'aim', $wpdb->escape($user->user_aim) );
+                       update_user_meta( $user->ID, 'aim', wp_slash($user->user_aim) );
                if ( !empty( $user->user_msn ) )
-                       update_user_meta( $user->ID, 'msn', $wpdb->escape($user->user_msn) );
+                       update_user_meta( $user->ID, 'msn', wp_slash($user->user_msn) );
                if ( !empty( $user->user_yim ) )
-                       update_user_meta( $user->ID, 'yim', $wpdb->escape($user->user_icq) );
+                       update_user_meta( $user->ID, 'yim', wp_slash($user->user_icq) );
                if ( !empty( $user->user_description ) )
-                       update_user_meta( $user->ID, 'description', $wpdb->escape($user->user_description) );
+                       update_user_meta( $user->ID, 'description', wp_slash($user->user_description) );
 
                if ( isset( $user->user_idmode ) ):
                        $idmode = $user->user_idmode;
@@ -681,14 +723,16 @@ function upgrade_160() {
                $wpdb->query("ALTER TABLE $wpdb->users DROP $old");
        $wpdb->show_errors();
 
-       // populate comment_count field of posts table
+       // Populate comment_count field of posts table.
        $comments = $wpdb->get_results( "SELECT comment_post_ID, COUNT(*) as c FROM $wpdb->comments WHERE comment_approved = '1' GROUP BY comment_post_ID" );
        if ( is_array( $comments ) )
                foreach ($comments as $comment)
                        $wpdb->update( $wpdb->posts, array('comment_count' => $comment->c), array('ID' => $comment->comment_post_ID) );
 
-       // Some alpha versions used a post status of object instead of attachment and put
-       // the mime type in post_type instead of post_mime_type.
+       /*
+        * Some alpha versions used a post status of object instead of attachment
+        * and put the mime type in post_type instead of post_mime_type.
+        */
        if ( $wp_current_db_version > 2541 && $wp_current_db_version <= 3091 ) {
                $objects = $wpdb->get_results("SELECT ID, post_type FROM $wpdb->posts WHERE post_status = 'object'");
                foreach ($objects as $object) {
@@ -845,8 +889,10 @@ function upgrade_230() {
 
        // < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
        if ( $wp_current_db_version < 3570 ) {
-               // Create link_category terms for link categories. Create a map of link cat IDs
-               // to link_category terms.
+               /*
+                * Create link_category terms for link categories. Create a map of link
+                * cat IDs to link_category terms.
+                */
                $link_cat_id_map = array();
                $default_link_cat = 0;
                $tt_ids = array();
@@ -854,7 +900,7 @@ function upgrade_230() {
                foreach ( $link_cats as $category) {
                        $cat_id = (int) $category->cat_id;
                        $term_id = 0;
-                       $name = $wpdb->escape($category->cat_name);
+                       $name = wp_slash($category->cat_name);
                        $slug = sanitize_title($name);
                        $term_group = 0;
 
@@ -954,7 +1000,7 @@ function upgrade_230_old_tables() {
  * @since 2.2.0
  */
 function upgrade_old_slugs() {
-       // upgrade people who were using the Redirect Old Slugs plugin
+       // Upgrade people who were using the Redirect Old Slugs plugin.
        global $wpdb;
        $wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_wp_old_slug' WHERE meta_key = 'old_slug'");
 }
@@ -1072,9 +1118,28 @@ function upgrade_300() {
 
        // 3.0 screen options key name changes.
        if ( is_main_site() && !defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) {
-               $prefix = like_escape($wpdb->base_prefix);
-               $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key LIKE '{$prefix}%meta-box-hidden%' OR meta_key LIKE '{$prefix}%closedpostboxes%' OR meta_key LIKE '{$prefix}%manage-%-columns-hidden%' OR meta_key LIKE '{$prefix}%meta-box-order%' OR meta_key LIKE '{$prefix}%metaboxorder%' OR meta_key LIKE '{$prefix}%screen_layout%'
-                                        OR meta_key = 'manageedittagscolumnshidden' OR meta_key='managecategoriescolumnshidden' OR meta_key = 'manageedit-tagscolumnshidden' OR meta_key = 'manageeditcolumnshidden' OR meta_key = 'categories_per_page' OR meta_key = 'edit_tags_per_page'" );
+               $sql = "DELETE FROM $wpdb->usermeta
+                       WHERE meta_key LIKE %s
+                       OR meta_key LIKE %s
+                       OR meta_key LIKE %s
+                       OR meta_key LIKE %s
+                       OR meta_key LIKE %s
+                       OR meta_key LIKE %s
+                       OR meta_key = 'manageedittagscolumnshidden'
+                       OR meta_key = 'managecategoriescolumnshidden'
+                       OR meta_key = 'manageedit-tagscolumnshidden'
+                       OR meta_key = 'manageeditcolumnshidden'
+                       OR meta_key = 'categories_per_page'
+                       OR meta_key = 'edit_tags_per_page'";
+               $prefix = $wpdb->esc_like( $wpdb->base_prefix );
+               $wpdb->query( $wpdb->prepare( $sql,
+                       $prefix . '%' . $wpdb->esc_like( 'meta-box-hidden' ) . '%',
+                       $prefix . '%' . $wpdb->esc_like( 'closedpostboxes' ) . '%',
+                       $prefix . '%' . $wpdb->esc_like( 'manage-'         ) . '%' . $wpdb->esc_like( '-columns-hidden' ) . '%',
+                       $prefix . '%' . $wpdb->esc_like( 'meta-box-order'  ) . '%',
+                       $prefix . '%' . $wpdb->esc_like( 'metaboxorder'    ) . '%',
+                       $prefix . '%' . $wpdb->esc_like( 'screen_layout'   ) . '%'
+               ) );
        }
 
 }
@@ -1208,6 +1273,59 @@ function upgrade_350() {
                wp_delete_term( $term->term_id, 'post_format' );
 }
 
+/**
+ * Execute changes made in WordPress 3.7.
+ *
+ * @since 3.7.0
+ */
+function upgrade_370() {
+       global $wp_current_db_version;
+       if ( $wp_current_db_version < 25824 )
+               wp_clear_scheduled_hook( 'wp_auto_updates_maybe_update' );
+}
+
+/**
+ * Execute changes made in WordPress 3.7.2.
+ *
+ * @since 3.7.2
+ * @since 3.8.0
+ */
+function upgrade_372() {
+       global $wp_current_db_version;
+       if ( $wp_current_db_version < 26148 )
+               wp_clear_scheduled_hook( 'wp_maybe_auto_update' );
+}
+
+/**
+ * Execute changes made in WordPress 3.8.0.
+ *
+ * @since 3.8.0
+ */
+function upgrade_380() {
+       global $wp_current_db_version;
+       if ( $wp_current_db_version < 26691 ) {
+               deactivate_plugins( array( 'mp6/mp6.php' ), true );
+       }
+}
+
+/**
+ * Execute changes made in WordPress 4.0.0.
+ *
+ * @since 4.0.0
+ */
+function upgrade_400() {
+       global $wp_current_db_version;
+       if ( $wp_current_db_version < 29630 ) {
+               if ( ! is_multisite() && false === get_option( 'WPLANG' ) ) {
+                       if ( defined( 'WPLANG' ) && ( '' !== WPLANG ) && in_array( WPLANG, get_available_languages() ) ) {
+                               update_option( 'WPLANG', WPLANG );
+                       } else {
+                               update_option( 'WPLANG', '' );
+                       }
+               }
+       }
+}
+
 /**
  * Execute network level changes
  *
@@ -1215,7 +1333,24 @@ function upgrade_350() {
  */
 function upgrade_network() {
        global $wp_current_db_version, $wpdb;
-       // 2.8
+
+       // Always.
+       if ( is_main_network() ) {
+               /*
+                * Deletes all expired transients. The multi-table delete syntax is used
+                * to delete the transient record from table a, and the corresponding
+                * transient_timeout record from table b.
+                */
+               $time = time();
+               $sql = "DELETE a, b FROM $wpdb->sitemeta a, $wpdb->sitemeta b
+                       WHERE a.meta_key LIKE %s
+                       AND a.meta_key NOT LIKE %s
+                       AND b.meta_key = CONCAT( '_site_transient_timeout_', SUBSTRING( a.meta_key, 17 ) )
+                       AND b.meta_value < %d";
+               $wpdb->query( $wpdb->prepare( $sql, $wpdb->esc_like( '_site_transient_' ) . '%', $wpdb->esc_like ( '_site_transient_timeout_' ) . '%', $time ) );
+       }
+
+       // 2.8.
        if ( $wp_current_db_version < 11549 ) {
                $wpmu_sitewide_plugins = get_site_option( 'wpmu_sitewide_plugins' );
                $active_sitewide_plugins = get_site_option( 'active_sitewide_plugins' );
@@ -1279,7 +1414,7 @@ function upgrade_network() {
                update_site_option( 'ms_files_rewriting', '1' );
 
        // 3.5.2
-       if ( $wp_current_db_version < 22442 ) {
+       if ( $wp_current_db_version < 24448 ) {
                $illegal_names = get_site_option( 'illegal_names' );
                if ( is_array( $illegal_names ) && count( $illegal_names ) === 1 ) {
                        $illegal_name = reset( $illegal_names );
@@ -1306,13 +1441,20 @@ function upgrade_network() {
  */
 function maybe_create_table($table_name, $create_ddl) {
        global $wpdb;
-       if ( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name )
+
+       $query = $wpdb->prepare( "SHOW TABLES LIKE %s", $wpdb->esc_like( $table_name ) );
+
+       if ( $wpdb->get_var( $query ) == $table_name ) {
                return true;
-       //didn't find it try to create it.
-       $q = $wpdb->query($create_ddl);
-       // we cannot directly tell that whether this succeeded!
-       if ( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name )
+       }
+
+       // Didn't find it try to create it..
+       $wpdb->query($create_ddl);
+
+       // We cannot directly tell that whether this succeeded!
+       if ( $wpdb->get_var( $query ) == $table_name ) {
                return true;
+       }
        return false;
 }
 
@@ -1370,9 +1512,11 @@ function maybe_add_column($table_name, $column_name, $create_ddl) {
                        return true;
                }
        }
-       //didn't find it try to create it.
-       $q = $wpdb->query($create_ddl);
-       // we cannot directly tell that whether this succeeded!
+
+       // Didn't find it try to create it.
+       $wpdb->query($create_ddl);
+
+       // We cannot directly tell that whether this succeeded!
        foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) {
                if ($column == $column_name) {
                        return true;
@@ -1427,11 +1571,7 @@ function __get_option($setting) {
        if ( 'siteurl' == $setting || 'home' == $setting || 'category_base' == $setting || 'tag_base' == $setting )
                $option = untrailingslashit( $option );
 
-       @ $kellogs = unserialize( $option );
-       if ( $kellogs !== false )
-               return $kellogs;
-       else
-               return $option;
+       return maybe_unserialize( $option );
 }
 
 /**
@@ -1447,12 +1587,16 @@ function __get_option($setting) {
 function deslash($content) {
        // Note: \\\ inside a regex denotes a single backslash.
 
-       // Replace one or more backslashes followed by a single quote with
-       // a single quote.
+       /*
+        * Replace one or more backslashes followed by a single quote with
+        * a single quote.
+        */
        $content = preg_replace("/\\\+'/", "'", $content);
 
-       // Replace one or more backslashes followed by a double quote with
-       // a double quote.
+       /*
+        * Replace one or more backslashes followed by a double quote with
+        * a double quote.
+        */
        $content = preg_replace('/\\\+"/', '"', $content);
 
        // Replace one or more backslashes with one backslash.
@@ -1483,6 +1627,14 @@ function dbDelta( $queries = '', $execute = true ) {
                $queries = explode( ';', $queries );
                $queries = array_filter( $queries );
        }
+
+       /**
+        * Filter the dbDelta SQL queries.
+        *
+        * @since 3.3.0
+        *
+        * @param array $queries An array of dbDelta SQL queries.
+        */
        $queries = apply_filters( 'dbdelta_queries', $queries );
 
        $cqueries = array(); // Creation Queries
@@ -1504,41 +1656,66 @@ function dbDelta( $queries = '', $execute = true ) {
                        // Unrecognized query type
                }
        }
+
+       /**
+        * Filter the dbDelta SQL queries for creating tables and/or databases.
+        *
+        * Queries filterable via this hook contain "CREATE TABLE" or "CREATE DATABASE".
+        *
+        * @since 3.3.0
+        *
+        * @param array $cqueries An array of dbDelta create SQL queries.
+        */
        $cqueries = apply_filters( 'dbdelta_create_queries', $cqueries );
+
+       /**
+        * Filter the dbDelta SQL queries for inserting or updating.
+        *
+        * Queries filterable via this hook contain "INSERT INTO" or "UPDATE".
+        *
+        * @since 3.3.0
+        *
+        * @param array $iqueries An array of dbDelta insert or update SQL queries.
+        */
        $iqueries = apply_filters( 'dbdelta_insert_queries', $iqueries );
 
        $global_tables = $wpdb->tables( 'global' );
        foreach ( $cqueries as $table => $qry ) {
                // Upgrade global tables only for the main site. Don't upgrade at all if DO_NOT_UPGRADE_GLOBAL_TABLES is defined.
-               if ( in_array( $table, $global_tables ) && ( !is_main_site() || defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) )
+               if ( in_array( $table, $global_tables ) && ( !is_main_site() || defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) ) {
+                       unset( $cqueries[ $table ], $for_update[ $table ] );
                        continue;
+               }
 
                // Fetch the table column structure from the database
-               $wpdb->suppress_errors();
+               $suppress = $wpdb->suppress_errors();
                $tablefields = $wpdb->get_results("DESCRIBE {$table};");
-               $wpdb->suppress_errors( false );
+               $wpdb->suppress_errors( $suppress );
 
                if ( ! $tablefields )
                        continue;
 
-               // Clear the field and index arrays
+               // Clear the field and index arrays.
                $cfields = $indices = array();
-               // Get all of the field names in the query from between the parens
+
+               // Get all of the field names in the query from between the parentheses.
                preg_match("|\((.*)\)|ms", $qry, $match2);
                $qryline = trim($match2[1]);
 
-               // Separate field lines into an array
+               // Separate field lines into an array.
                $flds = explode("\n", $qryline);
 
+               // todo: Remove this?
                //echo "<hr/><pre>\n".print_r(strtolower($table), true).":\n".print_r($cqueries, true)."</pre><hr/>";
 
-               // For every field line specified in the query
+               // For every field line specified in the query.
                foreach ($flds as $fld) {
-                       // Extract the field name
+
+                       // Extract the field name.
                        preg_match("|^([^ ]*)|", trim($fld), $fvals);
                        $fieldname = trim( $fvals[1], '`' );
 
-                       // Verify the found field name
+                       // Verify the found field name.
                        $validfield = true;
                        switch (strtolower($fieldname)) {
                        case '':
@@ -1553,17 +1730,19 @@ function dbDelta( $queries = '', $execute = true ) {
                        }
                        $fld = trim($fld);
 
-                       // If it's a valid field, add it to the field array
+                       // If it's a valid field, add it to the field array.
                        if ($validfield) {
                                $cfields[strtolower($fieldname)] = trim($fld, ", \n");
                        }
                }
 
-               // For every field in the table
+               // For every field in the table.
                foreach ($tablefields as $tablefield) {
-                       // If the table field exists in the field array...
+
+                       // If the table field exists in the field array ...
                        if (array_key_exists(strtolower($tablefield->Field), $cfields)) {
-                               // Get the field type from the query
+
+                               // Get the field type from the query.
                                preg_match("|".$tablefield->Field." ([^ ]*( unsigned)?)|i", $cfields[strtolower($tablefield->Field)], $matches);
                                $fieldtype = $matches[1];
 
@@ -1575,8 +1754,9 @@ function dbDelta( $queries = '', $execute = true ) {
                                }
 
                                // Get the default value from the array
+                                       // todo: Remove this?
                                        //echo "{$cfields[strtolower($tablefield->Field)]}<br>";
-                               if (preg_match("| DEFAULT '(.*)'|i", $cfields[strtolower($tablefield->Field)], $matches)) {
+                               if (preg_match("| DEFAULT '(.*?)'|i", $cfields[strtolower($tablefield->Field)], $matches)) {
                                        $default_value = $matches[1];
                                        if ($tablefield->Default != $default_value) {
                                                // Add a query to change the column's default value
@@ -1585,39 +1765,40 @@ function dbDelta( $queries = '', $execute = true ) {
                                        }
                                }
 
-                               // Remove the field from the array (so it's not added)
+                               // Remove the field from the array (so it's not added).
                                unset($cfields[strtolower($tablefield->Field)]);
                        } else {
                                // This field exists in the table, but not in the creation queries?
                        }
                }
 
-               // For every remaining field specified for the table
+               // For every remaining field specified for the table.
                foreach ($cfields as $fieldname => $fielddef) {
-                       // Push a query line into $cqueries that adds the field to that table
+                       // Push a query line into $cqueries that adds the field to that table.
                        $cqueries[] = "ALTER TABLE {$table} ADD COLUMN $fielddef";
                        $for_update[$table.'.'.$fieldname] = 'Added column '.$table.'.'.$fieldname;
                }
 
-               // Index stuff goes here
-               // Fetch the table index structure from the database
+               // Index stuff goes here. Fetch the table index structure from the database.
                $tableindices = $wpdb->get_results("SHOW INDEX FROM {$table};");
 
                if ($tableindices) {
-                       // Clear the index array
+                       // Clear the index array.
                        unset($index_ary);
 
-                       // For every index in the table
+                       // For every index in the table.
                        foreach ($tableindices as $tableindex) {
-                               // Add the index to the index data array
+
+                               // Add the index to the index data array.
                                $keyname = $tableindex->Key_name;
                                $index_ary[$keyname]['columns'][] = array('fieldname' => $tableindex->Column_name, 'subpart' => $tableindex->Sub_part);
                                $index_ary[$keyname]['unique'] = ($tableindex->Non_unique == 0)?true:false;
                        }
 
-                       // For each actual index in the index array
+                       // For each actual index in the index array.
                        foreach ($index_ary as $index_name => $index_data) {
-                               // Build a create string to compare to the query
+
+                               // Build a create string to compare to the query.
                                $index_string = '';
                                if ($index_name == 'PRIMARY') {
                                        $index_string .= 'PRIMARY ';
@@ -1629,39 +1810,44 @@ function dbDelta( $queries = '', $execute = true ) {
                                        $index_string .= $index_name;
                                }
                                $index_columns = '';
-                               // For each column in the index
+
+                               // For each column in the index.
                                foreach ($index_data['columns'] as $column_data) {
                                        if ($index_columns != '') $index_columns .= ',';
-                                       // Add the field to the column list string
+
+                                       // Add the field to the column list string.
                                        $index_columns .= $column_data['fieldname'];
                                        if ($column_data['subpart'] != '') {
                                                $index_columns .= '('.$column_data['subpart'].')';
                                        }
                                }
-                               // Add the column list to the index create string
+                               // Add the column list to the index create string.
                                $index_string .= ' ('.$index_columns.')';
                                if (!(($aindex = array_search($index_string, $indices)) === false)) {
                                        unset($indices[$aindex]);
+                                       // todo: Remove this?
                                        //echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">{$table}:<br />Found index:".$index_string."</pre>\n";
                                }
+                               // todo: Remove this?
                                //else echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">{$table}:<br /><b>Did not find index:</b>".$index_string."<br />".print_r($indices, true)."</pre>\n";
                        }
                }
 
-               // For every remaining index specified for the table
+               // For every remaining index specified for the table.
                foreach ( (array) $indices as $index ) {
-                       // Push a query line into $cqueries that adds the index to that table
+                       // Push a query line into $cqueries that adds the index to that table.
                        $cqueries[] = "ALTER TABLE {$table} ADD $index";
-                       $for_update[$table.'.'.$fieldname] = 'Added index '.$table.' '.$index;
+                       $for_update[] = 'Added index ' . $table . ' ' . $index;
                }
 
-               // Remove the original table creation query from processing
+               // Remove the original table creation query from processing.
                unset( $cqueries[ $table ], $for_update[ $table ] );
        }
 
        $allqueries = array_merge($cqueries, $iqueries);
        if ($execute) {
                foreach ($allqueries as $query) {
+                       // todo: Remove this?
                        //echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">".print_r($query, true)."</pre>\n";
                        $wpdb->query($query);
                }
@@ -1692,7 +1878,7 @@ function make_db_current( $tables = 'all' ) {
  * @since 1.5.0
  */
 function make_db_current_silent( $tables = 'all' ) {
-       $alterations = dbDelta( $tables );
+       dbDelta( $tables );
 }
 
 /**
@@ -1713,9 +1899,10 @@ function make_site_theme_from_oldschool($theme_name, $template) {
        if (! file_exists("$home_path/index.php"))
                return false;
 
-       // Copy files from the old locations to the site theme.
-       // TODO: This does not copy arbitrary include dependencies. Only the
-       // standard WP files are copied.
+       /*
+        * Copy files from the old locations to the site theme.
+        * TODO: This does not copy arbitrary include dependencies. Only the standard WP files are copied.
+        */
        $files = array('index.php' => 'index.php', 'wp-layout.css' => 'style.css', 'wp-comments.php' => 'comments.php', 'wp-comments-popup.php' => 'comments-popup.php');
 
        foreach ($files as $oldfile => $newfile) {
@@ -1724,12 +1911,15 @@ function make_site_theme_from_oldschool($theme_name, $template) {
                else
                        $oldpath = ABSPATH;
 
-               if ($oldfile == 'index.php') { // Check to make sure it's not a new index
+               // Check to make sure it's not a new index.
+               if ($oldfile == 'index.php') {
                        $index = implode('', file("$oldpath/$oldfile"));
                        if (strpos($index, 'WP_USE_THEMES') !== false) {
                                if (! @copy(WP_CONTENT_DIR . '/themes/' . WP_DEFAULT_THEME . '/index.php', "$site_dir/$newfile"))
                                        return false;
-                               continue; // Don't copy anything
+
+                               // Don't copy anything.
+                               continue;
                                }
                }
 
@@ -1968,7 +2158,7 @@ function maybe_disable_link_manager() {
  * @since 2.9.0
  */
 function pre_schema_upgrade() {
-       global $wp_current_db_version, $wp_db_version, $wpdb;
+       global $wp_current_db_version, $wpdb;
 
        // Upgrade versions prior to 2.9
        if ( $wp_current_db_version < 11557 ) {
@@ -1982,6 +2172,22 @@ function pre_schema_upgrade() {
                $wpdb->query("ALTER TABLE $wpdb->options DROP INDEX option_name");
        }
 
+       // Multisite schema upgrades.
+       if ( $wp_current_db_version < 25448 && is_multisite() && ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) && is_main_network() ) {
+
+               // Upgrade verions prior to 3.7
+               if ( $wp_current_db_version < 25179 ) {
+                       // New primary key for signups.
+                       $wpdb->query( "ALTER TABLE $wpdb->signups ADD signup_id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST" );
+                       $wpdb->query( "ALTER TABLE $wpdb->signups DROP INDEX domain" );
+               }
+
+               if ( $wp_current_db_version < 25448 ) {
+                       // Convert archived from enum to tinyint.
+                       $wpdb->query( "ALTER TABLE $wpdb->blogs CHANGE COLUMN archived archived varchar(1) NOT NULL default '0'" );
+                       $wpdb->query( "ALTER TABLE $wpdb->blogs CHANGE COLUMN archived archived tinyint(2) NOT NULL default 0" );
+               }
+       }
 }
 
 /**