diff --git a/wp-admin/admin.php b/wp-admin/admin.php index 601dad76c..0cab633c3 100644 --- a/wp-admin/admin.php +++ b/wp-admin/admin.php @@ -198,9 +198,9 @@ if ( isset($plugin_page) ) { require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); define('WP_IMPORTING', true); - if ( is_multisite() ) { + + if ( is_multisite() ) kses_init_filters(); // Always filter imported data with kses. - } call_user_func($wp_importers[$importer][2]); diff --git a/wp-admin/includes/schema.php b/wp-admin/includes/schema.php index d94a9370a..dcc3f12a1 100644 --- a/wp-admin/includes/schema.php +++ b/wp-admin/includes/schema.php @@ -369,6 +369,7 @@ function populate_roles() { populate_roles_260(); populate_roles_270(); populate_roles_280(); + populate_roles_300(); } /** @@ -590,4 +591,19 @@ function populate_roles_280() { } } +/** + * Create and modify WordPress roles for WordPress 2.8. + * + * @since 2.8.0 + */ +function populate_roles_300() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'update_core' ); + $role->add_cap( 'remove_user' ); + $role->add_cap( 'remove_users' ); + } +} + ?> diff --git a/wp-admin/includes/update.php b/wp-admin/includes/update.php index 258482fd4..d35245ab0 100644 --- a/wp-admin/includes/update.php +++ b/wp-admin/includes/update.php @@ -82,10 +82,10 @@ function find_core_update( $version, $locale ) { } function core_update_footer( $msg = '' ) { - if ( is_multisite() && !is_super_admin() ) + if ( is_multisite() && !current_user_can('update_core') ) return false; - if ( !current_user_can('manage_options') ) + if ( !current_user_can('update_core') ) return sprintf( __( 'Version %s' ), $GLOBALS['wp_version'] ); $cur = get_preferred_from_update_core(); @@ -104,10 +104,8 @@ function core_update_footer( $msg = '' ) { break; case 'upgrade' : - if ( current_user_can('manage_options') ) { - return sprintf( ''.__( 'Get Version %2$s' ).'', 'update-core.php', $cur->current); - break; - } + return sprintf( ''.__( 'Get Version %2$s' ).'', 'update-core.php', $cur->current); + break; case 'latest' : default : @@ -118,7 +116,7 @@ function core_update_footer( $msg = '' ) { add_filter( 'update_footer', 'core_update_footer' ); function update_nag() { - if ( is_multisite() && !is_super_admin() ) + if ( is_multisite() && !current_user_can('update_core') ) return false; global $pagenow; @@ -131,7 +129,7 @@ function update_nag() { if ( ! isset( $cur->response ) || $cur->response != 'upgrade' ) return false; - if ( current_user_can('manage_options') ) + if ( current_user_can('update_core') ) $msg = sprintf( __('WordPress %1$s is available! Please update now.'), $cur->current, 'update-core.php' ); else $msg = sprintf( __('WordPress %1$s is available! Please notify the site administrator.'), $cur->current ); @@ -142,13 +140,13 @@ add_action( 'admin_notices', 'update_nag', 3 ); // Called directly from dashboard function update_right_now_message() { - if ( is_multisite() && !is_super_admin() ) + if ( is_multisite() && !current_user_can('update_core') ) return false; $cur = get_preferred_from_update_core(); $msg = sprintf( __('You are using WordPress %s.'), $GLOBALS['wp_version'] ); - if ( isset( $cur->response ) && $cur->response == 'upgrade' && current_user_can('manage_options') ) + if ( isset( $cur->response ) && $cur->response == 'upgrade' && current_user_can('update_core') ) $msg .= " " . sprintf( __('Update to %s'), $cur->current ? $cur->current : __( 'Latest' ) ) . ''; echo "$msg"; @@ -169,6 +167,9 @@ function get_plugin_updates() { } function wp_plugin_update_rows() { + if ( !current_user_can('update_plugins' ) ) + return; + $plugins = get_site_transient( 'update_plugins' ); if ( isset($plugins->response) && is_array($plugins->response) ) { $plugins = array_keys( $plugins->response ); @@ -205,10 +206,6 @@ function wp_plugin_update_row( $file, $plugin_data ) { } function wp_update_plugin($plugin, $feedback = '') { - if ( is_multisite() && !is_super_admin() ) - return false; - - if ( !empty($feedback) ) add_filter('update_feedback', $feedback); @@ -234,7 +231,6 @@ function get_theme_updates() { } function wp_update_theme($theme, $feedback = '') { - if ( !empty($feedback) ) add_filter('update_feedback', $feedback); @@ -245,7 +241,6 @@ function wp_update_theme($theme, $feedback = '') { function wp_update_core($current, $feedback = '') { - if ( !empty($feedback) ) add_filter('update_feedback', $feedback); @@ -260,7 +255,7 @@ function maintenance_nag() { if ( ! isset( $upgrading ) ) return false; - if ( current_user_can('manage_options') ) + if ( current_user_can('update_core') ) $msg = sprintf( __('An automated WordPress update has failed to complete - please attempt the update again now.'), 'update-core.php' ); else $msg = __('An automated WordPress update has failed to complete! Please notify the site administrator.'); diff --git a/wp-admin/includes/upgrade.php b/wp-admin/includes/upgrade.php index 94938d01f..8895b0e3b 100644 --- a/wp-admin/includes/upgrade.php +++ b/wp-admin/includes/upgrade.php @@ -259,7 +259,7 @@ if ( !function_exists('wp_upgrade') ) : * @return null */ function wp_upgrade() { - global $wp_current_db_version, $wp_db_version; + global $wp_current_db_version, $wp_db_version, $wpdb; $wp_current_db_version = __get_option('db_version'); @@ -276,6 +276,14 @@ function wp_upgrade() { make_db_current_silent(); upgrade_all(); wp_cache_flush(); + + if ( is_multisite() ) { + if ( $wpdb->get_row( "SELECT blog_id FROM {$wpdb->blog_versions} WHERE blog_id = '{$wpdb->blogid}'" ) ) { + $wpdb->query( "UPDATE {$wpdb->blog_versions} SET db_version = '{$wp_db_version}' WHERE blog_id = '{$wpdb->blogid}'" ); + } else { + $wpdb->query( "INSERT INTO {$wpdb->blog_versions} ( `blog_id` , `db_version` , `last_updated` ) VALUES ( '{$wpdb->blogid}', '{$wp_db_version}', NOW());" ); + } + } } endif; @@ -352,6 +360,9 @@ function upgrade_all() { if ( $wp_current_db_version < 11958 ) upgrade_290(); + if ( $wp_current_db_version < 12751 ) + upgrade_300(); + maybe_disable_automattic_widgets(); update_option( 'db_version', $wp_db_version ); @@ -1006,6 +1017,14 @@ function upgrade_290() { } } +/** + * Execute changes made in WordPress 3.0. + * + * @since 3.0 + */ +function upgrade_300() { + populate_roles_300(); +} // The functions we use to actually do stuff diff --git a/wp-admin/menu.php b/wp-admin/menu.php index 65bdf8e6c..2d5a72936 100644 --- a/wp-admin/menu.php +++ b/wp-admin/menu.php @@ -30,12 +30,12 @@ $menu[0] = array( __('Dashboard'), 'read', 'index.php', '', 'menu-top', 'menu-da if ( is_multisite() && is_super_admin() ) { $menu[1] = array( '', 'read', 'separator0', '', 'wp-menu-separator' ); $menu[2] = array(__('Site Admin'), '10', 'ms-admin.php', '', 'menu-top menu-top-first', 'menu-site', 'div'); - $submenu[ 'ms-admin.php' ][1] = array( __('Admin'), 'delete_users', 'ms-admin.php' ); - $submenu[ 'ms-admin.php' ][5] = array( __('Blogs'), 'delete_users', 'ms-sites.php' ); - $submenu[ 'ms-admin.php' ][10] = array( __('Users'), 'delete_users', 'ms-users.php' ); - $submenu[ 'ms-admin.php' ][20] = array( __('Themes'), 'delete_users', 'ms-themes.php' ); - $submenu[ 'ms-admin.php' ][25] = array( __('Options'), 'delete_users', 'ms-options.php' ); - $submenu[ 'ms-admin.php' ][30] = array( __('Upgrade'), 'delete_users', 'ms-upgrade-site.php' ); + $submenu[ 'ms-admin.php' ][1] = array( __('Admin'), 'super_admin', 'ms-admin.php' ); + $submenu[ 'ms-admin.php' ][5] = array( __('Blogs'), 'super_admin', 'ms-sites.php' ); + $submenu[ 'ms-admin.php' ][10] = array( __('Users'), 'super_admin', 'ms-users.php' ); + $submenu[ 'ms-admin.php' ][20] = array( __('Themes'), 'super_admin', 'ms-themes.php' ); + $submenu[ 'ms-admin.php' ][25] = array( __('Options'), 'super_admin', 'ms-options.php' ); + $submenu[ 'ms-admin.php' ][30] = array( __('Upgrade'), 'super_admin', 'ms-upgrade-site.php' ); } $menu[4] = array( '', 'read', 'separator1', '', 'wp-menu-separator' ); @@ -105,8 +105,7 @@ $menu[60] = array( __('Appearance'), 'switch_themes', 'themes.php', '', 'menu-to $submenu['themes.php'][5] = array(__('Themes'), 'switch_themes', 'themes.php'); if ( !is_multisite() ) $submenu['themes.php'][10] = array(__('Editor'), 'edit_themes', 'theme-editor.php'); - if ( is_super_admin() ) - $submenu['themes.php'][15] = array(__('Add New Themes'), 'install_themes', 'theme-install.php'); + $submenu['themes.php'][15] = array(__('Add New Themes'), 'install_themes', 'theme-install.php'); $update_plugins = get_site_transient( 'update_plugins' ); $update_count = 0; @@ -117,10 +116,8 @@ $menu_perms = get_site_option('menu_items', array()); if ( is_super_admin() || is_multisite() && $menu_perms['plugins'] ) { $menu[65] = array( sprintf( __('Plugins %s'), "" . number_format_i18n($update_count) . "" ), 'activate_plugins', 'plugins.php', '', 'menu-top', 'menu-plugins', 'div' ); $submenu['plugins.php'][5] = array( __('Installed'), 'activate_plugins', 'plugins.php' ); - if ( is_super_admin() ) { - /* translators: add new plugin */ - $submenu['plugins.php'][10] = array(_x('Add New', 'plugin'), 'install_plugins', 'plugin-install.php'); - } + /* translators: add new plugin */ + $submenu['plugins.php'][10] = array(_x('Add New', 'plugin'), 'install_plugins', 'plugin-install.php'); if ( !is_multisite() ) $submenu['plugins.php'][15] = array( __('Editor'), 'edit_plugins', 'plugin-editor.php' ); } diff --git a/wp-admin/options-general.php b/wp-admin/options-general.php index c043926a8..daf6147e4 100644 --- a/wp-admin/options-general.php +++ b/wp-admin/options-general.php @@ -292,14 +292,17 @@ endfor; +if ( !empty($lang_files) ) { +?>
- -
-