X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/699231ae09f7057a4d0000cdf32e50a3df6a04ca..refs/tags/wordpress-4.1:/wp-admin/includes/upgrade.php?ds=sidebyside
diff --git a/wp-admin/includes/upgrade.php b/wp-admin/includes/upgrade.php
index 1560f2c8..15a1097f 100644
--- a/wp-admin/includes/upgrade.php
+++ b/wp-admin/includes/upgrade.php
@@ -24,19 +24,18 @@ if ( !function_exists('wp_install') ) :
*
* {@internal Missing Long Description}}
*
- * @since unknown
+ * @since 2.1.0
*
* @param string $blog_title Blog title.
* @param string $user_name User's username.
* @param string $user_email User's email.
* @param bool $public Whether blog is public.
- * @param null $deprecated Optional. Not used.
+ * @param string $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 = '' ) {
- global $wp_rewrite;
-
+function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated = '', $user_password = '', $language = '' ) {
if ( !empty( $deprecated ) )
_deprecated_argument( __FUNCTION__, '2.6' );
@@ -50,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);
@@ -58,13 +61,15 @@ 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;
if ( !$user_id && empty($user_password) ) {
- $user_password = wp_generate_password();
+ $user_password = wp_generate_password( 12, false );
$message = __('Note that password carefully! It is a random password that was generated just for you.');
$user_id = wp_create_user($user_name, $user_password, $user_email);
update_user_option($user_id, 'default_password_nag', true, true);
@@ -74,7 +79,7 @@ function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated
$message = ''.__('Your chosen password.').'';
$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,12 +87,21 @@ 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.') ) );
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;
@@ -98,12 +112,12 @@ if ( !function_exists('wp_install_defaults') ) :
*
* {@internal Missing Long Description}}
*
- * @since unknown
+ * @since 2.1.0
*
* @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');
@@ -125,68 +139,6 @@ function wp_install_defaults($user_id) {
$wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $cat_id, 'taxonomy' => 'category', 'description' => '', 'parent' => 0, 'count' => 1));
$cat_tt_id = $wpdb->insert_id;
- // Default link category
- $cat_name = __('Blogroll');
- /* translators: Default link category slug */
- $cat_slug = sanitize_title(_x('Blogroll', 'Default link category slug'));
-
- if ( global_terms_enabled() ) {
- $blogroll_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM {$wpdb->sitecategories} WHERE category_nicename = %s", $cat_slug ) );
- if ( $blogroll_id == null ) {
- $wpdb->insert( $wpdb->sitecategories, array('cat_ID' => 0, 'cat_name' => $cat_name, 'category_nicename' => $cat_slug, 'last_updated' => current_time('mysql', true)) );
- $blogroll_id = $wpdb->insert_id;
- }
- update_option('default_link_category', $blogroll_id);
- } else {
- $blogroll_id = 2;
- }
-
- $wpdb->insert( $wpdb->terms, array('term_id' => $blogroll_id, 'name' => $cat_name, 'slug' => $cat_slug, 'term_group' => 0) );
- $wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $blogroll_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 7));
- $blogroll_tt_id = $wpdb->insert_id;
-
- // Now drop in some default links
- $default_links = array();
- $default_links[] = array( 'link_url' => 'http://codex.wordpress.org/',
- 'link_name' => 'Documentation',
- 'link_rss' => '',
- 'link_notes' => '');
-
- $default_links[] = array( 'link_url' => 'http://wordpress.org/development/',
- 'link_name' => 'WordPress Blog',
- 'link_rss' => 'http://wordpress.org/development/feed/',
- 'link_notes' => '');
-
- $default_links[] = array( 'link_url' => 'http://wordpress.org/extend/ideas/',
- 'link_name' => 'Suggest Ideas',
- 'link_rss' => '',
- 'link_notes' =>'');
-
- $default_links[] = array( 'link_url' => 'http://wordpress.org/support/',
- 'link_name' => 'Support Forum',
- 'link_rss' => '',
- 'link_notes' =>'');
-
- $default_links[] = array( 'link_url' => 'http://wordpress.org/extend/plugins/',
- 'link_name' => 'Plugins',
- 'link_rss' => '',
- 'link_notes' =>'');
-
- $default_links[] = array( 'link_url' => 'http://wordpress.org/extend/themes/',
- 'link_name' => 'Themes',
- 'link_rss' => '',
- 'link_notes' =>'');
-
- $default_links[] = array( 'link_url' => 'http://planet.wordpress.org/',
- 'link_name' => 'WordPress Planet',
- 'link_rss' => '',
- 'link_notes' =>'');
-
- foreach ( $default_links as $link ) {
- $wpdb->insert( $wpdb->links, $link);
- $wpdb->insert( $wpdb->term_relationships, array('term_taxonomy_id' => $blogroll_tt_id, 'object_id' => $wpdb->insert_id) );
- }
-
// First post
$now = date('Y-m-d H:i:s');
$now_gmt = gmdate('Y-m-d H:i:s');
@@ -196,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 SITE_NAME. This is your first post. Edit or delete it, then start blogging!' ) );
+ $first_post = __( 'Welcome to SITE_NAME. 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!');
}
@@ -225,8 +177,9 @@ function wp_install_defaults($user_id) {
// Default comment
$first_comment_author = __('Mr WordPress');
- $first_comment_url = 'http://wordpress.org/';
- $first_comment = __('Hi, this is a comment.
To delete a comment, just log in and view the post's comments. There you will have the option to edit or delete them.');
+ $first_comment_url = 'https://wordpress.org/';
+ $first_comment = __('Hi, this is a comment.
+To delete a comment, just log in and view the post's comments. There you will have the option to edit or delete them.');
if ( is_multisite() ) {
$first_comment_author = get_site_option( 'first_comment_author', $first_comment_author );
$first_comment_url = get_site_option( 'first_comment_url', network_home_url() );
@@ -243,7 +196,15 @@ function wp_install_defaults($user_id) {
));
// First Page
- $first_page = __('This is an example of a WordPress page, you could edit this to put information about yourself or your site so readers know where you are coming from. You can create as many pages like this one or sub-pages as you like and manage all of your content inside of WordPress.');
+ $first_page = sprintf( __( "This is an example page. It's different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:
+
+
Hi there! I'm a bike messenger by day, aspiring actor by night, and this is my blog. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin' caught in the rain.)+ +...or something like this: + +
The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.+ +As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!" ), admin_url() ); if ( is_multisite() ) $first_page = get_site_option( 'first_page', $first_page ); $first_post_guid = get_option('home') . '/?page_id=2'; @@ -253,9 +214,9 @@ function wp_install_defaults($user_id) { 'post_date_gmt' => $now_gmt, 'post_content' => $first_page, 'post_excerpt' => '', - 'post_title' => __('About'), + 'post_title' => __( 'Sample Page' ), /* translators: Default page slug */ - 'post_name' => _x('about', 'Default page slug'), + 'post_name' => __( 'sample-page' ), 'post_modified' => $now, 'post_modified_gmt' => $now_gmt, 'guid' => $first_post_guid, @@ -266,14 +227,19 @@ function wp_install_defaults($user_id) { )); $wpdb->insert( $wpdb->postmeta, array( 'post_id' => 2, 'meta_key' => '_wp_page_template', 'meta_value' => 'default' ) ); - // Setup default widgets for default theme. + // Set up default widgets for default theme. update_option( 'widget_search', array ( 2 => array ( 'title' => '' ), '_multiwidget' => 1 ) ); update_option( 'widget_recent-posts', array ( 2 => array ( 'title' => '', 'number' => 5 ), '_multiwidget' => 1 ) ); update_option( 'widget_recent-comments', array ( 2 => array ( 'title' => '', 'number' => 5 ), '_multiwidget' => 1 ) ); 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 ( ), 'primary-widget-area' => array ( 0 => 'search-2', 1 => 'recent-posts-2', 2 => 'recent-comments-2', 3 => 'archives-2', 4 => 'categories-2', 5 => 'meta-2', ), 'secondary-widget-area' => array ( ), 'first-footer-widget-area' => array ( ), 'second-footer-widget-area' => array ( ), 'third-footer-widget-area' => array ( ), 'fourth-footer-widget-area' => 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', ), 'array_version' => 3 ) ); + + if ( ! is_multisite() ) + update_user_meta( $user_id, 'show_welcome_panel', 1 ); + elseif ( ! is_super_admin( $user_id ) && ! metadata_exists( 'user', $user_id, 'show_welcome_panel' ) ) + update_user_meta( $user_id, 'show_welcome_panel', 2 ); if ( is_multisite() ) { // Flush rules to pick up the new page. @@ -289,7 +255,7 @@ function wp_install_defaults($user_id) { // 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; @@ -300,7 +266,7 @@ if ( !function_exists('wp_new_blog_notification') ) : * * {@internal Missing Long Description}} * - * @since unknown + * @since 2.1.0 * * @param string $blog_title Blog title. * @param string $blog_url Blog url. @@ -308,10 +274,11 @@ if ( !function_exists('wp_new_blog_notification') ) : * @param string $password User's Password. */ function wp_new_blog_notification($blog_title, $blog_url, $user_id, $password) { - $user = new WP_User($user_id); + $user = new WP_User( $user_id ); $email = $user->user_email; $name = $user->user_login; - $message = sprintf(__("Your new WordPress site has been successfully set up at: + $login_url = wp_login_url(); + $message = sprintf( __( "Your new WordPress site has been successfully set up at: %1\$s @@ -319,12 +286,13 @@ You can log in to the administrator account with the following information: Username: %2\$s Password: %3\$s +Log in here: %4\$s We hope you enjoy your new site. Thanks! --The WordPress Team -http://wordpress.org/ -"), $blog_url, $name, $password); +https://wordpress.org/ +"), $blog_url, $name, $password, $login_url ); @wp_mail($email, __('New WordPress Site'), $message); } @@ -336,7 +304,7 @@ if ( !function_exists('wp_upgrade') ) : * * {@internal Missing Long Description}} * - * @since unknown + * @since 2.1.0 * * @return null */ @@ -345,7 +313,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; @@ -367,6 +335,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; @@ -375,13 +353,13 @@ endif; * * {@internal Missing Long Description}} * - * @since unknown + * @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; @@ -443,6 +421,29 @@ function upgrade_all() { if ( $wp_current_db_version < 15260 ) upgrade_300(); + if ( $wp_current_db_version < 19389 ) + upgrade_330(); + + if ( $wp_current_db_version < 20080 ) + upgrade_340(); + + 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(); update_option( 'db_version', $wp_db_version ); @@ -472,13 +473,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) : @@ -549,12 +552,12 @@ function upgrade_110() { $time_difference = $all_options->time_difference; - $server_time = time()+date('Z'); - $weblogger_time = $server_time + $time_difference*3600; + $server_time = time()+date('Z'); + $weblogger_time = $server_time + $time_difference * HOUR_IN_SECONDS; $gmt_time = time(); - $diff_gmt_server = ($gmt_time - $server_time) / 3600; - $diff_weblogger_server = ($weblogger_time - $server_time) / 3600; + $diff_gmt_server = ($gmt_time - $server_time) / HOUR_IN_SECONDS; + $diff_weblogger_server = ($weblogger_time - $server_time) / HOUR_IN_SECONDS; $diff_gmt_weblogger = $diff_gmt_server - $diff_weblogger_server; $gmt_offset = -$diff_gmt_weblogger; @@ -568,7 +571,7 @@ function upgrade_110() { if (!$got_gmt_fields) { - // Add or substract time to all dates, to get GMT dates + // Add or subtract time to all dates, to get GMT dates $add_hours = intval($diff_gmt_weblogger); $add_minutes = intval(60 * ($diff_gmt_weblogger - $add_hours)); $wpdb->query("UPDATE $wpdb->posts SET post_date_gmt = DATE_ADD(post_date, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE)"); @@ -629,8 +632,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); @@ -675,23 +680,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; @@ -720,14 +725,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) { @@ -882,10 +889,12 @@ 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 - // 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(); @@ -893,7 +902,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; @@ -993,7 +1002,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'"); } @@ -1033,11 +1042,6 @@ function upgrade_260() { if ( $wp_current_db_version < 8000 ) populate_roles_260(); - - if ( $wp_current_db_version < 8201 ) { - update_option('enable_app', 1); - update_option('enable_xmlrpc', 1); - } } /** @@ -1114,28 +1118,214 @@ function upgrade_300() { if ( $wp_current_db_version < 14139 && is_multisite() && is_main_site() && ! defined( 'MULTISITE' ) && get_site_option( 'siteurl' ) === false ) add_site_option( 'siteurl', '' ); - // 3.0-alpha nav menu postmeta changes. can be removed before release. // r13802 - if ( $wp_current_db_version >= 13226 && $wp_current_db_version < 13974 ) - $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key IN( 'menu_type', 'object_id', 'menu_new_window', 'menu_link', '_menu_item_append', 'menu_item_append', 'menu_item_type', 'menu_item_object_id', 'menu_item_target', 'menu_item_classes', 'menu_item_xfn', 'menu_item_url' )" ); + // 3.0 screen options key name changes. + if ( is_main_site() && !defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) { + $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' ) . '%' + ) ); + } + +} + +/** + * Execute changes made in WordPress 3.3. + * + * @since 3.3.0 + */ +function upgrade_330() { + global $wp_current_db_version, $wpdb, $wp_registered_widgets, $sidebars_widgets; - // 3.0-beta1 remove_user primitive->meta cap. can be removed before release. r13956 - if ( $wp_current_db_version >= 12751 && $wp_current_db_version < 13974 ) { - $role =& get_role( 'administrator' ); - if ( ! empty( $role ) ) - $role->remove_cap( 'remove_user' ); + if ( $wp_current_db_version < 19061 && is_main_site() && ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) { + $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key IN ('show_admin_bar_admin', 'plugins_last_view')" ); } - // 3.0-beta1 nav menu postmeta changes. can be removed before release. r13974 - if ( $wp_current_db_version >= 13802 && $wp_current_db_version < 13974 ) - $wpdb->update( $wpdb->postmeta, array( 'meta_value' => '' ), array( 'meta_key' => '_menu_item_target', 'meta_value' => '_self' ) ); + if ( $wp_current_db_version >= 11548 ) + return; - // 3.0 screen options key name changes. - if ( !is_multisite() || is_main_site() ) { - $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'" ); + $sidebars_widgets = get_option( 'sidebars_widgets', array() ); + $_sidebars_widgets = array(); + + if ( isset($sidebars_widgets['wp_inactive_widgets']) || empty($sidebars_widgets) ) + $sidebars_widgets['array_version'] = 3; + elseif ( !isset($sidebars_widgets['array_version']) ) + $sidebars_widgets['array_version'] = 1; + + switch ( $sidebars_widgets['array_version'] ) { + case 1 : + foreach ( (array) $sidebars_widgets as $index => $sidebar ) + if ( is_array($sidebar) ) + foreach ( (array) $sidebar as $i => $name ) { + $id = strtolower($name); + if ( isset($wp_registered_widgets[$id]) ) { + $_sidebars_widgets[$index][$i] = $id; + continue; + } + $id = sanitize_title($name); + if ( isset($wp_registered_widgets[$id]) ) { + $_sidebars_widgets[$index][$i] = $id; + continue; + } + + $found = false; + + foreach ( $wp_registered_widgets as $widget_id => $widget ) { + if ( strtolower($widget['name']) == strtolower($name) ) { + $_sidebars_widgets[$index][$i] = $widget['id']; + $found = true; + break; + } elseif ( sanitize_title($widget['name']) == sanitize_title($name) ) { + $_sidebars_widgets[$index][$i] = $widget['id']; + $found = true; + break; + } + } + + if ( $found ) + continue; + + unset($_sidebars_widgets[$index][$i]); + } + $_sidebars_widgets['array_version'] = 2; + $sidebars_widgets = $_sidebars_widgets; + unset($_sidebars_widgets); + + case 2 : + $sidebars_widgets = retrieve_widgets(); + $sidebars_widgets['array_version'] = 3; + update_option( 'sidebars_widgets', $sidebars_widgets ); + } +} + +/** + * 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 changes made in WordPress 3.5. + * + * @since 3.5.0 + */ +function upgrade_350() { + global $wp_current_db_version, $wpdb; + + if ( $wp_current_db_version < 22006 && $wpdb->get_var( "SELECT link_id FROM $wpdb->links LIMIT 1" ) ) + update_option( 'link_manager_enabled', 1 ); // Previously set to 0 by populate_options() + + if ( $wp_current_db_version < 21811 && is_main_site() && ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) { + $meta_keys = array(); + foreach ( array_merge( get_post_types(), get_taxonomies() ) as $name ) { + if ( false !== strpos( $name, '-' ) ) + $meta_keys[] = 'edit_' . str_replace( '-', '_', $name ) . '_per_page'; + } + if ( $meta_keys ) { + $meta_keys = implode( "', '", $meta_keys ); + $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key IN ('$meta_keys')" ); + } } + if ( $wp_current_db_version < 22422 && $term = get_term_by( 'slug', 'post-format-standard', 'post_format' ) ) + 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', '' ); + } + } + } } /** @@ -1145,7 +1335,24 @@ function upgrade_300() { */ 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' ); @@ -1173,9 +1380,50 @@ 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' ); + } + } + + // 3.5 + if ( $wp_current_db_version < 21823 ) + update_site_option( 'ms_files_rewriting', '1' ); + + // 3.5.2 + 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 ); + $illegal_names = explode( ' ', $illegal_name ); + update_site_option( 'illegal_names', $illegal_names ); + } + } } // The functions we use to actually do stuff @@ -1187,7 +1435,7 @@ function upgrade_network() { * * {@internal Missing Long Description}} * - * @since unknown + * @since 1.0.0 * * @param string $table_name Database table name to create. * @param string $create_ddl SQL statement to create table. @@ -1195,13 +1443,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; } @@ -1210,7 +1465,7 @@ function maybe_create_table($table_name, $create_ddl) { * * {@internal Missing Long Description}} * - * @since unknown + * @since 1.0.1 * * @param string $table Database table name. * @param string $index Index name to drop. @@ -1233,7 +1488,7 @@ function drop_index($table, $index) { * * {@internal Missing Long Description}} * - * @since unknown + * @since 1.0.1 * * @param string $table Database table name. * @param string $index Database table index column. @@ -1253,16 +1508,17 @@ 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
\n".print_r(strtolower($table), true).":\n".print_r($cqueries, true)."
\n".print_r(strtolower($table), true).":\n".print_r($cqueries, true)."
{$table}:\n"; - } - //else echo "
Found index:".$index_string."
{$table}:\n"; - } - } + // For every index in the table. + foreach ($tableindices as $tableindex) { - // 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 - $cqueries[] = "ALTER TABLE {$table} ADD $index"; - $for_update[$table.'.'.$fieldname] = 'Added index '.$table.' '.$index; + // 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. + foreach ($index_ary as $index_name => $index_data) { + + // Build a create string to compare to the query. + $index_string = ''; + if ($index_name == 'PRIMARY') { + $index_string .= 'PRIMARY '; + } else if($index_data['unique']) { + $index_string .= 'UNIQUE '; + } + $index_string .= 'KEY '; + if ($index_name != 'PRIMARY') { + $index_string .= $index_name; } + $index_columns = ''; - // Remove the original table creation query from processing - unset($cqueries[strtolower($table)]); - unset($for_update[strtolower($table)]); - } else { - // This table exists in the database, but not in the creation queries? + // 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. + $index_columns .= $column_data['fieldname']; + if ($column_data['subpart'] != '') { + $index_columns .= '('.$column_data['subpart'].')'; + } + } + // 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 "
Did not find index:".$index_string."
".print_r($indices, true)."
{$table}:\n"; + } + // todo: Remove this? + //else echo "
Found index:".$index_string."
{$table}:\n"; } } + + // 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. + $cqueries[] = "ALTER TABLE {$table} ADD $index"; + $for_update[] = 'Added index ' . $table . ' ' . $index; + } + + // 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 "
Did not find index:".$index_string."
".print_r($indices, true)."
".print_r($query, true)."\n"; $wpdb->query($query); } @@ -1563,12 +1863,10 @@ function dbDelta($queries, $execute = true) { * * {@internal Missing Long Description}} * - * @since unknown + * @since 1.5.0 */ -function make_db_current() { - global $wp_queries; - - $alterations = dbDelta($wp_queries); +function make_db_current( $tables = 'all' ) { + $alterations = dbDelta( $tables ); echo "