X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/f9001779751f83dc8a10e478bfecb4d8dd5f964c..refs/tags/wordpress-3.4.2-scripts:/wp-admin/includes/upgrade.php diff --git a/wp-admin/includes/upgrade.php b/wp-admin/includes/upgrade.php index f29f594e..bb69d9a0 100644 --- a/wp-admin/includes/upgrade.php +++ b/wp-admin/includes/upgrade.php @@ -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 = ''.__('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,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' =>''); @@ -281,7 +279,12 @@ As a new WordPress user, you should go to your dashboard 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 ( ), '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', ), 'sidebar-2' => array ( ), 'sidebar-3' => array ( ), 'sidebar-4' => array ( ), 'sidebar-5' => array ( ), '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. @@ -297,7 +300,7 @@ As a new WordPress user, you should go to your dashboard 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; @@ -353,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; @@ -386,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; @@ -451,6 +454,12 @@ 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(); + maybe_disable_automattic_widgets(); update_option( 'db_version', $wp_db_version ); @@ -557,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(); @@ -576,7 +585,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)"); @@ -638,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); @@ -890,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; @@ -1122,21 +1131,6 @@ 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-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' ); - } - - // 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' ) ); - // 3.0 screen options key name changes. if ( is_main_site() && !defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) { $prefix = like_escape($wpdb->base_prefix); @@ -1146,6 +1140,108 @@ function upgrade_300() { } +/** + * 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; + + 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')" ); + } + + if ( $wp_current_db_version >= 11548 ) + return; + + $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 network level changes * @@ -1181,9 +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 @@ -1261,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
"); if ($column == $column_name) { return true; } @@ -1288,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; @@ -1313,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; @@ -1374,14 +1492,18 @@ function deslash($content) { * @param unknown_type $execute * @return unknown */ -function dbDelta($queries, $execute = true) { +function dbDelta( $queries = '', $execute = true ) { global $wpdb; + if ( in_array( $queries, array( '', 'all', 'blog', 'global', 'ms_global' ), true ) ) + $queries = wp_get_db_schema( $queries ); + // 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 ); $cqueries = array(); // Creation Queries $iqueries = array(); // Insertion Queries @@ -1390,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); @@ -1402,161 +1524,159 @@ function dbDelta($queries, $execute = true) { // Unrecognized query type } } + $cqueries = apply_filters( 'dbdelta_create_queries', $cqueries ); + $iqueries = apply_filters( 'dbdelta_insert_queries', $iqueries ); - // Check to see which tables and fields exist - if ($tables = $wpdb->get_col('SHOW TABLES;')) { - // For every table in the database - foreach ($tables as $table) { - // 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, $wpdb->tables('global')) && ( !is_main_site() || defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) ) - continue; + $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' ) ) ) + continue; - // If a table query exists for the database table... - if ( array_key_exists(strtolower($table), $cqueries) ) { - // Clear the field and index arrays - $cfields = $indices = array(); - // Get all of the field names in the query from between the parens - preg_match("|\((.*)\)|ms", $cqueries[strtolower($table)], $match2); - $qryline = trim($match2[1]); - - // Separate field lines into an array - $flds = explode("\n", $qryline); - - //echo "
\n".print_r(strtolower($table), true).":\n".print_r($cqueries, true)."

"; - - // For every field line specified in the query - foreach ($flds as $fld) { - // Extract the field name - preg_match("|^([^ ]*)|", trim($fld), $fvals); - $fieldname = trim( $fvals[1], '`' ); - - // Verify the found field name - $validfield = true; - switch (strtolower($fieldname)) { - case '': - case 'primary': - case 'index': - case 'fulltext': - case 'unique': - case 'key': - $validfield = false; - $indices[] = trim(trim($fld), ", \n"); - break; - } - $fld = trim($fld); + // Fetch the table column structure from the database + $wpdb->suppress_errors(); + $tablefields = $wpdb->get_results("DESCRIBE {$table};"); + $wpdb->suppress_errors( false ); - // If it's a valid field, add it to the field array - if ($validfield) { - $cfields[strtolower($fieldname)] = trim($fld, ", \n"); - } + if ( ! $tablefields ) + continue; + + // Clear the field and index arrays + $cfields = $indices = array(); + // Get all of the field names in the query from between the parens + preg_match("|\((.*)\)|ms", $qry, $match2); + $qryline = trim($match2[1]); + + // Separate field lines into an array + $flds = explode("\n", $qryline); + + //echo "
\n".print_r(strtolower($table), true).":\n".print_r($cqueries, true)."

"; + + // For every field line specified in the query + foreach ($flds as $fld) { + // Extract the field name + preg_match("|^([^ ]*)|", trim($fld), $fvals); + $fieldname = trim( $fvals[1], '`' ); + + // Verify the found field name + $validfield = true; + switch (strtolower($fieldname)) { + case '': + case 'primary': + case 'index': + case 'fulltext': + case 'unique': + case 'key': + $validfield = false; + $indices[] = trim(trim($fld), ", \n"); + break; + } + $fld = trim($fld); + + // 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 + foreach ($tablefields as $tablefield) { + // If the table field exists in the field array... + if (array_key_exists(strtolower($tablefield->Field), $cfields)) { + // Get the field type from the query + preg_match("|".$tablefield->Field." ([^ ]*( unsigned)?)|i", $cfields[strtolower($tablefield->Field)], $matches); + $fieldtype = $matches[1]; + + // Is actual field type different from the field type in query? + if ($tablefield->Type != $fieldtype) { + // Add a query to change the column type + $cqueries[] = "ALTER TABLE {$table} CHANGE COLUMN {$tablefield->Field} " . $cfields[strtolower($tablefield->Field)]; + $for_update[$table.'.'.$tablefield->Field] = "Changed type of {$table}.{$tablefield->Field} from {$tablefield->Type} to {$fieldtype}"; } - // Fetch the table column structure from the database - $tablefields = $wpdb->get_results("DESCRIBE {$table};"); - - // For every field in the table - foreach ($tablefields as $tablefield) { - // If the table field exists in the field array... - if (array_key_exists(strtolower($tablefield->Field), $cfields)) { - // Get the field type from the query - preg_match("|".$tablefield->Field." ([^ ]*( unsigned)?)|i", $cfields[strtolower($tablefield->Field)], $matches); - $fieldtype = $matches[1]; - - // Is actual field type different from the field type in query? - if ($tablefield->Type != $fieldtype) { - // Add a query to change the column type - $cqueries[] = "ALTER TABLE {$table} CHANGE COLUMN {$tablefield->Field} " . $cfields[strtolower($tablefield->Field)]; - $for_update[$table.'.'.$tablefield->Field] = "Changed type of {$table}.{$tablefield->Field} from {$tablefield->Type} to {$fieldtype}"; - } - - // Get the default value from the array - //echo "{$cfields[strtolower($tablefield->Field)]}
"; - 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 - $cqueries[] = "ALTER TABLE {$table} ALTER COLUMN {$tablefield->Field} SET DEFAULT '{$default_value}'"; - $for_update[$table.'.'.$tablefield->Field] = "Changed default value of {$table}.{$tablefield->Field} from {$tablefield->Default} to {$default_value}"; - } - } - - // 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? + // Get the default value from the array + //echo "{$cfields[strtolower($tablefield->Field)]}
"; + 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 + $cqueries[] = "ALTER TABLE {$table} ALTER COLUMN {$tablefield->Field} SET DEFAULT '{$default_value}'"; + $for_update[$table.'.'.$tablefield->Field] = "Changed default value of {$table}.{$tablefield->Field} from {$tablefield->Default} to {$default_value}"; } } - // 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 - $cqueries[] = "ALTER TABLE {$table} ADD COLUMN $fielddef"; - $for_update[$table.'.'.$fieldname] = 'Added column '.$table.'.'.$fieldname; - } + // 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? + } + } - // Index stuff goes here - // Fetch the table index structure from the database - $tableindices = $wpdb->get_results("SHOW INDEX FROM {$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 + $cqueries[] = "ALTER TABLE {$table} ADD COLUMN $fielddef"; + $for_update[$table.'.'.$fieldname] = 'Added column '.$table.'.'.$fieldname; + } - if ($tableindices) { - // Clear the index array - unset($index_ary); + // Index stuff goes here + // Fetch the table index structure from the database + $tableindices = $wpdb->get_results("SHOW INDEX FROM {$table};"); - // For every index in the table - foreach ($tableindices as $tableindex) { - // 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; - } + if ($tableindices) { + // Clear the index array + unset($index_ary); + + // For every index in the table + foreach ($tableindices as $tableindex) { + // 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 = ''; - // 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]); - //echo "
{$table}:
Found index:".$index_string."
\n"; - } - //else echo "
{$table}:
Did not find index:".$index_string."
".print_r($indices, true)."
\n"; + // 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 = ''; + // 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'].')'; } } - - // 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 column list to the index create string + $index_string .= ' ('.$index_columns.')'; + if (!(($aindex = array_search($index_string, $indices)) === false)) { + unset($indices[$aindex]); + //echo "
{$table}:
Found index:".$index_string."
\n"; } - - // 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? + //else echo "
{$table}:
Did not find index:".$index_string."
".print_r($indices, true)."
\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[$table.'.'.$fieldname] = 'Added index '.$table.' '.$index; + } + + // Remove the original table creation query from processing + unset( $cqueries[ $table ], $for_update[ $table ] ); } $allqueries = array_merge($cqueries, $iqueries); @@ -1577,10 +1697,8 @@ function dbDelta($queries, $execute = true) { * * @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 "
    \n"; foreach($alterations as $alteration) echo "
  1. $alteration
  2. \n"; echo "
\n"; @@ -1593,10 +1711,8 @@ function make_db_current() { * * @since 1.5.0 */ -function make_db_current_silent() { - global $wp_queries; - - $alterations = dbDelta($wp_queries); +function make_db_current_silent( $tables = 'all' ) { + $alterations = dbDelta( $tables ); } /** @@ -1618,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 arbitarary 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'); @@ -1776,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; } @@ -1866,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. @@ -1878,102 +1994,6 @@ function pre_schema_upgrade() { } -/** - * Install Network. - * - * @since 3.0.0 - * - */ -if ( !function_exists( 'install_network' ) ) : -function install_network() { - global $wpdb, $charset_collate; - $ms_queries = " -CREATE TABLE $wpdb->users ( - ID bigint(20) unsigned NOT NULL auto_increment, - user_login varchar(60) NOT NULL default '', - user_pass varchar(64) NOT NULL default '', - user_nicename varchar(50) NOT NULL default '', - user_email varchar(100) NOT NULL default '', - user_url varchar(100) NOT NULL default '', - user_registered datetime NOT NULL default '0000-00-00 00:00:00', - user_activation_key varchar(60) NOT NULL default '', - user_status int(11) NOT NULL default '0', - display_name varchar(250) NOT NULL default '', - spam tinyint(2) NOT NULL default '0', - deleted tinyint(2) NOT NULL default '0', - PRIMARY KEY (ID), - KEY user_login_key (user_login), - KEY user_nicename (user_nicename) -) $charset_collate; -CREATE TABLE $wpdb->blogs ( - blog_id bigint(20) NOT NULL auto_increment, - site_id bigint(20) NOT NULL default '0', - domain varchar(200) NOT NULL default '', - path varchar(100) NOT NULL default '', - registered datetime NOT NULL default '0000-00-00 00:00:00', - last_updated datetime NOT NULL default '0000-00-00 00:00:00', - public tinyint(2) NOT NULL default '1', - archived enum('0','1') NOT NULL default '0', - mature tinyint(2) NOT NULL default '0', - spam tinyint(2) NOT NULL default '0', - deleted tinyint(2) NOT NULL default '0', - lang_id int(11) NOT NULL default '0', - PRIMARY KEY (blog_id), - KEY domain (domain(50),path(5)), - KEY lang_id (lang_id) -) $charset_collate; -CREATE TABLE $wpdb->blog_versions ( - blog_id bigint(20) NOT NULL default '0', - db_version varchar(20) NOT NULL default '', - last_updated datetime NOT NULL default '0000-00-00 00:00:00', - PRIMARY KEY (blog_id), - KEY db_version (db_version) -) $charset_collate; -CREATE TABLE $wpdb->registration_log ( - ID bigint(20) NOT NULL auto_increment, - email varchar(255) NOT NULL default '', - IP varchar(30) NOT NULL default '', - blog_id bigint(20) NOT NULL default '0', - date_registered datetime NOT NULL default '0000-00-00 00:00:00', - PRIMARY KEY (ID), - KEY IP (IP) -) $charset_collate; -CREATE TABLE $wpdb->site ( - id bigint(20) NOT NULL auto_increment, - domain varchar(200) NOT NULL default '', - path varchar(100) NOT NULL default '', - PRIMARY KEY (id), - KEY domain (domain,path) -) $charset_collate; -CREATE TABLE $wpdb->sitemeta ( - meta_id bigint(20) NOT NULL auto_increment, - site_id bigint(20) NOT NULL default '0', - meta_key varchar(255) default NULL, - meta_value longtext, - PRIMARY KEY (meta_id), - KEY meta_key (meta_key), - KEY site_id (site_id) -) $charset_collate; -CREATE TABLE $wpdb->signups ( - domain varchar(200) NOT NULL default '', - path varchar(100) NOT NULL default '', - title longtext NOT NULL, - user_login varchar(60) NOT NULL default '', - user_email varchar(100) NOT NULL default '', - registered datetime NOT NULL default '0000-00-00 00:00:00', - activated datetime NOT NULL default '0000-00-00 00:00:00', - active tinyint(1) NOT NULL default '0', - activation_key varchar(50) NOT NULL default '', - meta longtext, - KEY activation_key (activation_key), - KEY domain (domain) -) $charset_collate; -"; -// now create tables - dbDelta( $ms_queries ); -} -endif; - /** * Install global terms. * @@ -1998,4 +2018,3 @@ CREATE TABLE $wpdb->sitecategories ( dbDelta( $ms_queries ); } endif; -?>