X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/7688c6ba71852cd89123b62b2d57683535e4702a..58f607a1de715c9bca69340a4d6fb9e1b9c2bed2:/wp-admin/admin.php diff --git a/wp-admin/admin.php b/wp-admin/admin.php index 0a6f22ae..998ff1ff 100644 --- a/wp-admin/admin.php +++ b/wp-admin/admin.php @@ -1,14 +1,54 @@ flush_rules(); + update_option( 'db_upgraded', false ); + + /** + * Runs on the next page load after successful upgrade + * + * @since 2.8 + */ + do_action('after_db_upgrade'); +} elseif ( get_option('db_version') != $wp_db_version ) { + if ( !is_multisite() ) { + wp_redirect(admin_url('upgrade.php?_wp_http_referer=' . urlencode(stripslashes($_SERVER['REQUEST_URI'])))); + exit; + } elseif ( apply_filters( 'do_mu_upgrade', true ) ) { + /** + * On really small MU installs run the upgrader every time, + * else run it less often to reduce load. + * + * @since 2.8.4b + */ + $c = get_blog_count(); + if ( $c <= 50 || ( $c > 50 && mt_rand( 0, (int)( $c / 50 ) ) == 1 ) ) { + require_once( ABSPATH . WPINC . '/http.php' ); + $response = wp_remote_get( admin_url( 'upgrade.php?step=1' ), array( 'timeout' => 120, 'httpversion' => '1.1' ) ); + do_action( 'after_mu_upgrade', $response ); + unset($response); + } + unset($c); + } } require_once(ABSPATH . 'wp-admin/includes/admin.php'); @@ -19,30 +59,77 @@ nocache_headers(); update_category_cache(); -wp_get_current_user(); +// Schedule trash collection +if ( !wp_next_scheduled('wp_scheduled_delete') && !defined('WP_INSTALLING') ) + wp_schedule_event(time(), 'daily', 'wp_scheduled_delete'); + +set_screen_options(); -$posts_per_page = get_option('posts_per_page'); -$what_to_show = get_option('what_to_show'); $date_format = get_option('date_format'); $time_format = get_option('time_format'); -wp_reset_vars(array('profile', 'redirect', 'redirect_url', 'a', 'popuptitle', 'popupurl', 'text', 'trackback', 'pingback')); +wp_reset_vars(array('profile', 'redirect', 'redirect_url', 'a', 'text', 'trackback', 'pingback')); -wp_enqueue_script( 'fat' ); +wp_enqueue_script( 'common' ); +wp_enqueue_script( 'jquery-color' ); $editing = false; -if (isset($_GET['page'])) { +if ( isset($_GET['page']) ) { $plugin_page = stripslashes($_GET['page']); $plugin_page = plugin_basename($plugin_page); } +if ( isset($_GET['post_type']) ) + $typenow = sanitize_key($_GET['post_type']); +else + $typenow = ''; + +if ( isset($_GET['taxonomy']) ) + $taxnow = sanitize_key($_GET['taxonomy']); +else + $taxnow = ''; + require(ABSPATH . 'wp-admin/menu.php'); -// Handle plugin admin pages. -if (isset($plugin_page)) { - $page_hook = get_plugin_page_hook($plugin_page, $pagenow); +if ( current_user_can( 'manage_options' ) ) + @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', '256M' ) ); + +do_action('admin_init'); + +if ( isset($plugin_page) ) { + if ( !empty($typenow) ) + $the_parent = $pagenow . '?post_type=' . $typenow; + else + $the_parent = $pagenow; + if ( ! $page_hook = get_plugin_page_hook($plugin_page, $the_parent) ) { + $page_hook = get_plugin_page_hook($plugin_page, $plugin_page); + // backwards compatibility for plugins using add_management_page + if ( empty( $page_hook ) && 'edit.php' == $pagenow && '' != get_plugin_page_hook($plugin_page, 'tools.php') ) { + // There could be plugin specific params on the URL, so we need the whole query string + if ( !empty($_SERVER[ 'QUERY_STRING' ]) ) + $query_string = $_SERVER[ 'QUERY_STRING' ]; + else + $query_string = 'page=' . $plugin_page; + wp_redirect( 'tools.php?' . $query_string ); + exit; + } + } + unset($the_parent); +} + +$hook_suffix = ''; +if ( isset($page_hook) ) + $hook_suffix = $page_hook; +else if ( isset($plugin_page) ) + $hook_suffix = $plugin_page; +else if ( isset($pagenow) ) + $hook_suffix = $pagenow; +set_current_screen(); + +// Handle plugin admin pages. +if ( isset($plugin_page) ) { if ( $page_hook ) { do_action('load-' . $page_hook); if (! isset($_GET['noheader'])) @@ -50,19 +137,22 @@ if (isset($plugin_page)) { do_action($page_hook); } else { - if ( validate_file($plugin_page) ) { + if ( validate_file($plugin_page) ) wp_die(__('Invalid plugin page')); - } - if (! file_exists(ABSPATH . PLUGINDIR . "/$plugin_page")) + + if ( !( file_exists(WP_PLUGIN_DIR . "/$plugin_page") && is_file(WP_PLUGIN_DIR . "/$plugin_page") ) && !( file_exists(WPMU_PLUGIN_DIR . "/$plugin_page") && is_file(WPMU_PLUGIN_DIR . "/$plugin_page") ) ) wp_die(sprintf(__('Cannot load %s.'), htmlentities($plugin_page))); do_action('load-' . $plugin_page); - if (! isset($_GET['noheader'])) + if ( !isset($_GET['noheader'])) require_once(ABSPATH . 'wp-admin/admin-header.php'); - include(ABSPATH . PLUGINDIR . "/$plugin_page"); + if ( file_exists(WPMU_PLUGIN_DIR . "/$plugin_page") ) + include(WPMU_PLUGIN_DIR . "/$plugin_page"); + else + include(WP_PLUGIN_DIR . "/$plugin_page"); } include(ABSPATH . 'wp-admin/admin-footer.php'); @@ -75,21 +165,17 @@ if (isset($plugin_page)) { if ( ! current_user_can('import') ) wp_die(__('You are not allowed to import.')); - if ( validate_file($importer) ) { - wp_die(__('Invalid importer.')); - } + if ( validate_file($importer) ) + wp_redirect( admin_url( 'import.php?invalid=' . $importer ) ); // Allow plugins to define importers as well - if (! is_callable($wp_importers[$importer][2])) - { + if ( !isset($wp_importers) || !isset($wp_importers[$importer]) || ! is_callable($wp_importers[$importer][2])) { if (! file_exists(ABSPATH . "wp-admin/import/$importer.php")) - { - wp_die(__('Cannot load importer.')); - } + wp_redirect( admin_url( 'import.php?invalid=' . $importer ) ); include(ABSPATH . "wp-admin/import/$importer.php"); } - $parent_file = 'edit.php'; + $parent_file = 'tools.php'; $submenu_file = 'import.php'; $title = __('Import'); @@ -100,13 +186,33 @@ if (isset($plugin_page)) { define('WP_IMPORTING', true); + if ( is_multisite() ) + kses_init_filters(); // Always filter imported data with kses. + call_user_func($wp_importers[$importer][2]); include(ABSPATH . 'wp-admin/admin-footer.php'); + // Make sure rules are flushed + global $wp_rewrite; + $wp_rewrite->flush_rules(false); + exit(); } else { do_action("load-$pagenow"); + // Backwards compatibility with old load-page-new.php, load-page.php, + // and load-categories.php actions. + if ( $typenow == 'page' ) { + if ( $pagenow == 'post-new.php' ) + do_action( 'load-page-new.php' ); + elseif ( $pagenow == 'post.php' ) + do_action( 'load-page.php' ); + } elseif ( $taxnow == 'category' && $pagenow == 'edit-tags.php' ) { + do_action( 'load-categories.php' ); + } } +if ( !empty($_REQUEST['action']) ) + do_action('admin_action_' . $_REQUEST['action']); + ?>