WordPress 3.4
[autoinstalls/wordpress.git] / wp-admin / includes / upgrade.php
index 646e1ccb5df3342219f8c22b111481881fa3da0d..bb69d9a0778058e7a5c6f872846659189e998f25 100644 (file)
@@ -35,8 +35,6 @@ if ( !function_exists('wp_install') ) :
  * @return array Array keys 'url', 'user_id', 'password', 'password_message'.
  */
 function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated = '', $user_password = '' ) {
-       global $wp_rewrite;
-
        if ( !empty( $deprecated ) )
                _deprecated_argument( __FUNCTION__, '2.6' );
 
@@ -58,8 +56,8 @@ 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;
@@ -74,7 +72,7 @@ function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated
                $message = '<em>'.__('Your chosen password.').'</em>';
                $user_id = wp_create_user($user_name, $user_password, $user_email);
        } else {
-               $message =  __('User already exists. Password inherited.');
+               $message = __('User already exists. Password inherited.');
        }
 
        $user = new WP_User($user_id);
@@ -82,7 +80,7 @@ function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated
 
        wp_install_defaults($user_id);
 
-       $wp_rewrite->flush_rules();
+       flush_rewrite_rules();
 
        wp_new_blog_notification($blog_title, $guessurl, $user_id, ($email_password ? $user_password : __('The password you chose during the install.') ) );
 
@@ -147,38 +145,38 @@ function wp_install_defaults($user_id) {
 
        // Now drop in some default links
        $default_links = array();
-       $default_links[] = array(       'link_url' => 'http://codex.wordpress.org/',
-                                                               'link_name' => 'Documentation',
+       $default_links[] = array(       'link_url' => __( 'http://codex.wordpress.org/' ),
+                                                               'link_name' => __( 'Documentation' ),
                                                                'link_rss' => '',
                                                                'link_notes' => '');
 
-       $default_links[] = array(       'link_url' => 'http://wordpress.org/news/',
-                                                               'link_name' => 'WordPress Blog',
-                                                               'link_rss' => 'http://wordpress.org/news/feed/',
+       $default_links[] = array(       'link_url' => __( 'http://wordpress.org/news/' ),
+                                                               'link_name' => __( 'WordPress Blog' ),
+                                                               'link_rss' => __( 'http://wordpress.org/news/feed/' ),
                                                                'link_notes' => '');
 
-       $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/ideas/',
-                                                               'link_name' => 'Suggest Ideas',
+       $default_links[] = array(       'link_url' => __( 'http://wordpress.org/support/' ),
+                                                               'link_name' => _x( 'Support Forums', 'default link' ),
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
-       $default_links[] = array(       'link_url' => 'http://wordpress.org/support/',
-                                                               'link_name' => 'Support Forum',
+       $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/plugins/',
+                                                               'link_name' => _x( 'Plugins', 'Default link to wordpress.org/extend/plugins/' ),
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
-       $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/plugins/',
-                                                               'link_name' => 'Plugins',
+       $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/themes/',
+                                                               'link_name' => _x( 'Themes', 'Default link to wordpress.org/extend/themes/' ),
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
-       $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/themes/',
-                                                               'link_name' => 'Themes',
+       $default_links[] = array(       'link_url' => __( 'http://wordpress.org/support/forum/requests-and-feedback' ),
+                                                               'link_name' => __( 'Feedback' ),
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
-       $default_links[] = array(       'link_url' => 'http://planet.wordpress.org/',
-                                                               'link_name' => 'WordPress Planet',
+       $default_links[] = array(       'link_url' => __( 'http://planet.wordpress.org/' ),
+                                                               'link_name' => __( 'WordPress Planet' ),
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
@@ -302,7 +300,7 @@ As a new WordPress user, you should go to <a href=\"%s\">your dashboard</a> to d
 
                // Delete any caps that snuck into the previously active blog. (Hardcoded to blog 1 for now.) TODO: Get previous_blog_id.
                if ( !is_super_admin( $user_id ) && $user_id != 1 )
-                       $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $wpdb->base_prefix.'1_capabilities') );
+                       $wpdb->delete( $wpdb->usermeta, array( 'user_id' => $user_id , 'meta_key' => $wpdb->base_prefix.'1_capabilities' ) );
        }
 }
 endif;
@@ -358,7 +356,7 @@ function wp_upgrade() {
 
        $wp_current_db_version = __get_option('db_version');
 
-       // We are up-to-date.  Nothing to do.
+       // We are up-to-date. Nothing to do.
        if ( $wp_db_version == $wp_current_db_version )
                return;
 
@@ -391,10 +389,10 @@ endif;
  * @since 1.0.1
  */
 function upgrade_all() {
-       global $wp_current_db_version, $wp_db_version, $wp_rewrite;
+       global $wp_current_db_version, $wp_db_version;
        $wp_current_db_version = __get_option('db_version');
 
-       // We are up-to-date.  Nothing to do.
+       // We are up-to-date. Nothing to do.
        if ( $wp_db_version == $wp_current_db_version )
                return;
 
@@ -459,6 +457,9 @@ function upgrade_all() {
        if ( $wp_current_db_version < 19389 )
                upgrade_330();
 
+       if ( $wp_current_db_version < 20080 )
+               upgrade_340();
+
        maybe_disable_automattic_widgets();
 
        update_option( 'db_version', $wp_db_version );
@@ -565,7 +566,7 @@ function upgrade_110() {
 
        $time_difference = $all_options->time_difference;
 
-       $server_time = time()+date('Z');
+               $server_time = time()+date('Z');
        $weblogger_time = $server_time + $time_difference*3600;
        $gmt_time = time();
 
@@ -646,7 +647,7 @@ 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.
+       // 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);
@@ -898,9 +899,9 @@ function upgrade_230() {
                $wpdb->insert( $wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id) );
        }
 
-       // < 3570 we used linkcategories.  >= 3570 we used categories and link2cat.
+       // < 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
+               // 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;
@@ -1151,11 +1152,6 @@ function upgrade_330() {
                $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key IN ('show_admin_bar_admin', 'plugins_last_view')" );
        }
 
-       // 3.3-beta. Can remove before release.
-       if ( $wp_current_db_version > 18715 && $wp_current_db_version < 19389
-               && is_main_site() && ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) )
-                       delete_metadata( 'user', 0, 'dismissed_wp_pointers', '', true );
-
        if ( $wp_current_db_version >= 11548 )
                return;
 
@@ -1213,6 +1209,39 @@ function upgrade_330() {
        }
 }
 
+/**
+ * Execute changes made in WordPress 3.4.
+ *
+ * @since 3.4.0
+ */
+function upgrade_340() {
+       global $wp_current_db_version, $wpdb;
+
+       if ( $wp_current_db_version < 19798 ) {
+               $wpdb->hide_errors();
+               $wpdb->query( "ALTER TABLE $wpdb->options DROP COLUMN blog_id" );
+               $wpdb->show_errors();
+       }
+
+       if ( $wp_current_db_version < 19799 ) {
+               $wpdb->hide_errors();
+               $wpdb->query("ALTER TABLE $wpdb->comments DROP INDEX comment_approved");
+               $wpdb->show_errors();
+       }
+
+       if ( $wp_current_db_version < 20022 && is_main_site() && ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) {
+               $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key = 'themes_last_view'" );
+       }
+
+       if ( $wp_current_db_version < 20080 ) {
+               if ( 'yes' == $wpdb->get_var( "SELECT autoload FROM $wpdb->options WHERE option_name = 'uninstall_plugins'" ) ) {
+                       $uninstall_plugins = get_option( 'uninstall_plugins' );
+                       delete_option( 'uninstall_plugins' );
+                       add_option( 'uninstall_plugins', $uninstall_plugins, null, 'no' );
+               }
+       }
+}
+
 /**
  * Execute network level changes
  *
@@ -1248,16 +1277,36 @@ function upgrade_network() {
                        $start += 20;
                }
        }
+
        // 3.0
        if ( $wp_current_db_version < 13576 )
                update_site_option( 'global_terms_enabled', '1' );
+
        // 3.3
        if ( $wp_current_db_version < 19390 )
                update_site_option( 'initial_db_version', $wp_current_db_version );
+
        if ( $wp_current_db_version < 19470 ) {
                if ( false === get_site_option( 'active_sitewide_plugins' ) )
                        update_site_option( 'active_sitewide_plugins', array() );
        }
+
+       // 3.4
+       if ( $wp_current_db_version < 20148 ) {
+               // 'allowedthemes' keys things by stylesheet. 'allowed_themes' keyed things by name.
+               $allowedthemes  = get_site_option( 'allowedthemes'  );
+               $allowed_themes = get_site_option( 'allowed_themes' );
+               if ( false === $allowedthemes && is_array( $allowed_themes ) && $allowed_themes ) {
+                       $converted = array();
+                       $themes = wp_get_themes();
+                       foreach ( $themes as $stylesheet => $theme_data ) {
+                               if ( isset( $allowed_themes[ $theme_data->get('Name') ] ) )
+                                       $converted[ $stylesheet ] = true;
+                       }
+                       update_site_option( 'allowedthemes', $converted );
+                       delete_site_option( 'allowed_themes' );
+               }
+       }
 }
 
 // The functions we use to actually do stuff
@@ -1335,9 +1384,8 @@ function add_clean_index($table, $index) {
  **           false on error
  */
 function maybe_add_column($table_name, $column_name, $create_ddl) {
-       global $wpdb, $debug;
+       global $wpdb;
        foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) {
-               if ($debug) echo("checking $column == $column_name<br />");
                if ($column == $column_name) {
                        return true;
                }
@@ -1362,14 +1410,12 @@ function maybe_add_column($table_name, $column_name, $create_ddl) {
  */
 function get_alloptions_110() {
        global $wpdb;
-       if ($options = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options")) {
-               foreach ($options as $option) {
-                       // "When trying to design a foolproof system,
-                       //  never underestimate the ingenuity of the fools :)" -- Dougal
-                       if ('siteurl' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
-                       if ('home' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
-                       if ('category_base' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
-                       $all_options->{$option->option_name} = stripslashes($option->option_value);
+       $all_options = new stdClass;
+       if ( $options = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" ) ) {
+               foreach ( $options as $option ) {
+                       if ( 'siteurl' == $option->option_name || 'home' == $option->option_name || 'category_base' == $option->option_name )
+                               $option->option_value = untrailingslashit( $option->option_value );
+                       $all_options->{$option->option_name} = stripslashes( $option->option_value );
                }
        }
        return $all_options;
@@ -1387,24 +1433,22 @@ function get_alloptions_110() {
 function __get_option($setting) {
        global $wpdb;
 
-       if ( $setting == 'home' && defined( 'WP_HOME' ) ) {
-               return preg_replace( '|/+$|', '', WP_HOME );
-       }
+       if ( $setting == 'home' && defined( 'WP_HOME' ) )
+               return untrailingslashit( WP_HOME );
 
-       if ( $setting == 'siteurl' && defined( 'WP_SITEURL' ) ) {
-               return preg_replace( '|/+$|', '', WP_SITEURL );
-       }
+       if ( $setting == 'siteurl' && defined( 'WP_SITEURL' ) )
+               return untrailingslashit( WP_SITEURL );
 
-       $option = $wpdb->get_var( $wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s", $setting) );
+       $option = $wpdb->get_var( $wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s", $setting ) );
 
        if ( 'home' == $setting && '' == $option )
-               return __get_option('siteurl');
+               return __get_option( 'siteurl' );
 
-       if ( 'siteurl' == $setting || 'home' == $setting || 'category_base' == $setting )
-               $option = preg_replace('|/+$|', '', $option);
+       if ( 'siteurl' == $setting || 'home' == $setting || 'category_base' == $setting || 'tag_base' == $setting )
+               $option = untrailingslashit( $option );
 
-       @ $kellogs = unserialize($option);
-       if ($kellogs !== FALSE)
+       @ $kellogs = unserialize( $option );
+       if ( $kellogs !== false )
                return $kellogs;
        else
                return $option;
@@ -1457,7 +1501,7 @@ function dbDelta( $queries = '', $execute = true ) {
        // Separate individual queries into an array
        if ( !is_array($queries) ) {
                $queries = explode( ';', $queries );
-               if ('' == $queries[count($queries) - 1]) array_pop($queries);
+               $queries = array_filter( $queries );
        }
        $queries = apply_filters( 'dbdelta_queries', $queries );
 
@@ -1468,7 +1512,7 @@ function dbDelta( $queries = '', $execute = true ) {
        // Create a tablename index for an array ($cqueries) of queries
        foreach($queries as $qry) {
                if (preg_match("|CREATE TABLE ([^ ]*)|", $qry, $matches)) {
-                       $cqueries[trim( strtolower($matches[1]), '`' )] = $qry;
+                       $cqueries[ trim( $matches[1], '`' ) ] = $qry;
                        $for_update[$matches[1]] = 'Created table '.$matches[1];
                } else if (preg_match("|CREATE DATABASE ([^ ]*)|", $qry, $matches)) {
                        array_unshift($cqueries, $qry);
@@ -1667,7 +1711,7 @@ function make_db_current( $tables = 'all' ) {
  *
  * @since 1.5.0
  */
-function make_db_current_silent(  $tables = 'all' ) {
+function make_db_current_silent( $tables = 'all' ) {
        $alterations = dbDelta( $tables );
 }
 
@@ -1690,7 +1734,7 @@ function make_site_theme_from_oldschool($theme_name, $template) {
                return false;
 
        // Copy files from the old locations to the site theme.
-       // TODO: This does not copy arbitrary include dependencies.  Only the
+       // 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');
 
@@ -1848,12 +1892,12 @@ function make_site_theme() {
 
        if (file_exists(ABSPATH . 'wp-layout.css')) {
                if (! make_site_theme_from_oldschool($theme_name, $template)) {
-                       // TODO:  rm -rf the site theme directory.
+                       // TODO: rm -rf the site theme directory.
                        return false;
                }
        } else {
                if (! make_site_theme_from_default($theme_name, $template))
-                       // TODO:  rm -rf the site theme directory.
+                       // TODO: rm -rf the site theme directory.
                        return false;
        }
 
@@ -1938,7 +1982,7 @@ function pre_schema_upgrade() {
 
        // Upgrade versions prior to 2.9
        if ( $wp_current_db_version < 11557 ) {
-               // Delete duplicate options.  Keep the option with the highest option_id.
+               // Delete duplicate options. Keep the option with the highest option_id.
                $wpdb->query("DELETE o1 FROM $wpdb->options AS o1 JOIN $wpdb->options AS o2 USING (`option_name`) WHERE o2.option_id > o1.option_id");
 
                // Drop the old primary key and add the new.
@@ -1974,4 +2018,3 @@ CREATE TABLE $wpdb->sitecategories (
        dbDelta( $ms_queries );
 }
 endif;
-?>