From b01479de3719b5c70a4d934dea90841ea3677581 Mon Sep 17 00:00:00 2001 From: wpmuguru Date: Mon, 1 Feb 2010 20:26:08 +0000 Subject: [PATCH] reorganize code on ms startup. props nacin, see #11644 git-svn-id: http://svn.automattic.com/wordpress/trunk@12921 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/default-constants.php | 21 +-- wp-includes/ms-default-constants.php | 11 +- wp-includes/ms-load.php | 207 ++++++++++++++++----------- wp-includes/ms-settings.php | 6 +- wp-settings.php | 8 +- 5 files changed, 129 insertions(+), 124 deletions(-) diff --git a/wp-includes/default-constants.php b/wp-includes/default-constants.php index fdb839fdd..be152ea24 100644 --- a/wp-includes/default-constants.php +++ b/wp-includes/default-constants.php @@ -1,5 +1,4 @@ blogid}/files/" ); - + /** @since 3.0.0 */ if ( !defined( 'BLOGUPLOADDIR' ) ) define( 'BLOGUPLOADDIR', WP_CONTENT_DIR . "/blogs.dir/{$wpdb->blogid}/files/" ); break; case 'cookies' : global $current_site; /** - * It is possible to define this in wp-config.php * @since 1.2.0 */ if ( !defined( 'COOKIEPATH' ) ) define( 'COOKIEPATH', $current_site->path ); - /** - * It is possible to define this in wp-config.php * @since 1.5.0 */ if ( !defined( 'SITECOOKIEPATH' ) ) define( 'SITECOOKIEPATH', $current_site->path ); - /** - * It is possible to define this in wp-config.php * @since 2.6.0 */ if ( !defined( 'ADMIN_COOKIE_PATH' ) ) { @@ -53,7 +49,6 @@ function ms_default_constants( $context ) { } } /** - * It is possible to define this in wp-config.php * @since 2.0.0 */ if ( !defined('COOKIE_DOMAIN') ) diff --git a/wp-includes/ms-load.php b/wp-includes/ms-load.php index ea8293d84..0dcb22361 100644 --- a/wp-includes/ms-load.php +++ b/wp-includes/ms-load.php @@ -9,7 +9,7 @@ */ /** - * Whether a subdomain configuration is enabled + * Whether a subdomain configuration is enabled. * * @since 3.0 * @@ -22,16 +22,13 @@ function is_subdomain_install() { return false; } -function ms_network_settings() { - global $wpdb, $current_site, $cookiehash; - - if ( !isset($current_site->site_name) ) - $current_site->site_name = get_site_option('site_name'); - - if ( $current_site->site_name == false ) - $current_site->site_name = ucfirst( $current_site->domain ); -} - +/** + * Returns array of sitewide plugin files to be included in global scope. + * + * @access private + * @since 3.0.0 + * @return array Files to include + */ function ms_network_plugins() { $network_plugins = array(); $deleted_sitewide_plugins = array(); @@ -62,47 +59,76 @@ function ms_network_plugins() { return $network_plugins; } +/** + * Checks status of current blog. + * + * Checks if the blog is deleted, inactive, archived, or spammed. + * + * Dies with a default message if the blog does not pass the check. + * + * To change the default message when a blog does not pass the check, + * use the wp-content/blog-deleted.php, blog-inactive.php and + * blog-suspended.php drop-ins. + * + * @return bool|string Returns true on success, or drop-in file to include. + */ function ms_site_check() { global $wpdb, $current_blog; if ( '1' == $current_blog->deleted ) { - if ( file_exists( WP_CONTENT_DIR . '/blog-deleted.php' ) ) { - return WP_CONTENT_DIR . '/blog-deleted.php'; - } else { - header('HTTP/1.1 410 Gone'); - wp_die(__('This user has elected to delete their account and the content is no longer available.')); - } - } elseif ( '2' == $current_blog->deleted ) { - if ( file_exists( WP_CONTENT_DIR . '/blog-inactive.php' ) ) - return WP_CONTENT_DIR . '/blog-inactive.php'; - else - wp_die( sprintf( __( 'This blog has not been activated yet. If you are having problems activating your blog, please contact %1$s.' ), str_replace( '@', ' AT ', get_site_option( 'admin_email', "support@{$current_site->domain}" ) ) ) ); + if ( file_exists( WP_CONTENT_DIR . '/blog-deleted.php' ) ) { + return WP_CONTENT_DIR . '/blog-deleted.php'; + } else { + header( 'HTTP/1.1 410 Gone' ); + wp_die( __( 'This user has elected to delete their account and the content is no longer available.' ) ); + } + } + + if ( '2' == $current_blog->deleted ) { + if ( file_exists( WP_CONTENT_DIR . '/blog-inactive.php' ) ) + return WP_CONTENT_DIR . '/blog-inactive.php'; + else + wp_die( sprintf( __( 'This blog has not been activated yet. If you are having problems activating your blog, please contact %1$s.' ), str_replace( '@', ' AT ', get_site_option( 'admin_email', "support@{$current_site->domain}" ) ) ) ); } if ( $current_blog->archived == '1' || $current_blog->spam == '1' ) { - if ( file_exists( WP_CONTENT_DIR . '/blog-suspended.php' ) ) { - return WP_CONTENT_DIR . '/blog-suspended.php'; - } else { - header('HTTP/1.1 410 Gone'); - wp_die(__('This blog has been archived or suspended.')); - } + if ( file_exists( WP_CONTENT_DIR . '/blog-suspended.php' ) ) { + return WP_CONTENT_DIR . '/blog-suspended.php'; + } else { + header( 'HTTP/1.1 410 Gone' ); + wp_die( __( 'This blog has been archived or suspended.' ) ); + } } return true; } +/** + * Sets current site name. + * + * @access private + * @since 3.0.0 + * @return object $current_site object with site_name + */ function get_current_site_name( $current_site ) { global $wpdb; $current_site->site_name = wp_cache_get( $current_site->id . ':current_site_name', "site-options" ); - if ( !$current_site->site_name ) { + if ( ! $current_site->site_name ) { $current_site->site_name = $wpdb->get_var( $wpdb->prepare( "SELECT meta_value FROM $wpdb->sitemeta WHERE site_id = %d AND meta_key = 'site_name'", $current_site->id ) ); - if ( $current_site->site_name == null ) + if ( ! $current_site->site_name ) $current_site->site_name = ucfirst( $current_site->domain ); - wp_cache_set( $current_site->id . ':current_site_name', $current_site->site_name, 'site-options'); + wp_cache_set( $current_site->id . ':current_site_name', $current_site->site_name, 'site-options' ); } return $current_site; } +/** + * Sets current_site object. + * + * @access private + * @since 3.0.0 + * @return object $current_site object + */ function wpmu_current_site() { global $wpdb, $current_site, $domain, $path, $sites, $cookie_domain; if ( defined( 'DOMAIN_CURRENT_SITE' ) && defined( 'PATH_CURRENT_SITE' ) ) { @@ -121,99 +147,106 @@ function wpmu_current_site() { return $current_site; } - $current_site = wp_cache_get( "current_site", "site-options" ); + $current_site = wp_cache_get( 'current_site', 'site-options' ); if ( $current_site ) return $current_site; $sites = $wpdb->get_results( "SELECT * FROM $wpdb->site" ); // usually only one site - if ( count( $sites ) == 1 ) { + if ( 1 == count( $sites ) ) { $current_site = $sites[0]; $path = $current_site->path; - $current_site->blog_id = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} WHERE domain='{$current_site->domain}' AND path='{$current_site->path}'" ); + $current_site->blog_id = $wpdb->get_var( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs WHERE domain = %s AND path = %s", $current_site->domain, $current_site->path ) ); $current_site = get_current_site_name( $current_site ); if ( substr( $current_site->domain, 0, 4 ) == 'www.' ) $current_site->cookie_domain = substr( $current_site->domain, 4 ); - wp_cache_set( "current_site", $current_site, "site-options" ); + wp_cache_set( 'current_site', $current_site, 'site-options' ); return $current_site; } $path = substr( $_SERVER[ 'REQUEST_URI' ], 0, 1 + strpos( $_SERVER[ 'REQUEST_URI' ], '/', 1 ) ); if ( $domain == $cookie_domain ) - $current_site = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->site WHERE domain = %s AND path = %s", $domain, $path ) ); + $current_site = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->site WHERE domain = %s AND path = %s", $domain, $path ) ); else - $current_site = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->site WHERE domain IN ( %s, %s ) AND path = %s ORDER BY CHAR_LENGTH( domain ) DESC LIMIT 1", $domain, $cookie_domain, $path ) ); - if ( $current_site == null ) { + $current_site = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->site WHERE domain IN ( %s, %s ) AND path = %s ORDER BY CHAR_LENGTH( domain ) DESC LIMIT 1", $domain, $cookie_domain, $path ) ); + + if ( ! $current_site ) { if ( $domain == $cookie_domain ) $current_site = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->site WHERE domain = %s AND path='/'", $domain ) ); else $current_site = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->site WHERE domain IN ( %s, %s ) AND path = '/' ORDER BY CHAR_LENGTH( domain ) DESC LIMIT 1", $domain, $cookie_domain, $path ) ); } - if ( $current_site != null ) { + + if ( $current_site ) { $path = $current_site->path; $current_site->cookie_domain = $cookie_domain; return $current_site; - } elseif ( is_subdomain_install() ) { + } + + if ( is_subdomain_install() ) { $sitedomain = substr( $domain, 1 + strpos( $domain, '.' ) ); $current_site = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->site WHERE domain = %s AND path = %s", $sitedomain, $path) ); - if ( $current_site != null ) { + if ( $current_site ) { $current_site->cookie_domain = $current_site->domain; return $current_site; } + $current_site = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->site WHERE domain = %s AND path='/'", $sitedomain) ); - if ( $current_site == null && defined( "WP_INSTALLING" ) == false ) { - if ( count( $sites ) == 1 ) { - $current_site = $sites[0]; - die( "That blog does not exist. Please try http://{$current_site->domain}{$current_site->path}" ); - } else { - die( "No WPMU site defined on this host. If you are the owner of this site, please check Debugging WPMU for further assistance." ); - } - } else { - $path = '/'; - } - } elseif ( defined( "WP_INSTALLING" ) == false ) { - if ( count( $sites ) == 1 ) { - $current_site = $sites[0]; - die( "That blog does not exist. Please try http://{$current_site->domain}{$current_site->path}" ); - } else { - die( "No WPMU site defined on this host. If you are the owner of this site, please check Debugging WPMU for further assistance." ); - } - } else { - $path = '/'; } - return $current_site; + + if ( $current_site || defined( 'WP_INSTALLING' ) ) { + $path = '/'; + return $current_site; + } + + // Still no dice. + // @todo Update or remove WPMU codex link. + if ( 1 == count( $sites ) ) + wp_die( sprintf( __( 'That blog does not exist. Please try %s.' ), $sites[0]->domain . $sites[0]->path ) ); + else + wp_die( __( 'No site defined on this host. If you are the owner of this site, please check Debugging WPMU for further assistance.' ) ); } +/** + * Displays a failure message when blog does not exist. + * + * Checks for a missing $wpdb->site table as well. + * + * @todo Merge with is_blog_installed(), dead_db(), wp_not_installed(), etc. + * @access private + * @since 3.0.0 + */ function is_installed() { global $wpdb, $domain, $path; $base = stripslashes( $base ); - if ( defined( "WP_INSTALLING" ) == false ) { - $check = $wpdb->get_results( "SELECT * FROM $wpdb->site" ); - $msg = "If your blog does not display, please contact the owner of this site.

If you are the owner of this site please check that MySQL is running properly and all tables are error free.

"; - if ( $check == false ) { - $msg .= "Database Tables Missing.
Database tables are missing. This means that MySQL is either not running, WPMU was not installed properly, or someone deleted {$wpdb->site}. You really should look at your database now.
"; - } else { - $msg .= 'Could Not Find Blog!
'; - $msg .= "Searched for " . $domain . $path . " in " . DB_NAME . "::" . $wpdb->blogs . " table. Is that right?
"; - } - $msg .= "
\n

What do I do now?

"; - $msg .= "Read the bug report page. Some of the guidelines there may help you figure out what went wrong.
"; - $msg .= "If you're still stuck with this message, then check that your database contains the following tables:"; - $msg .= "If you suspect a problem please report it to the support forums but you must include the information asked for in the WPMU bug reporting guidelines!

"; - if ( is_file( 'release-info.txt' ) ) { - $msg .= 'Your bug report must include the following text: "'; - $info = file( 'release-info.txt' ); - $msg .= $info[ 4 ] . '"'; - } + if ( defined( 'WP_INSTALLING' ) ) + return; - die( "

Fatal Error

" . $msg ); + $msg = '

' . esc_html__( 'Fatal Error' ) . '

'; + $msg = '

' . __( 'If your blog does not display, please contact the owner of this site.' ) . '

'; + $msg .= '

' . __( 'If you are the owner of this site please check that MySQL is running properly and all tables are error free.' ) . '

'; + if ( ! $wpdb->get_var( "SHOW TABLES LIKE '$wpdb->site'" ) ) + $msg .= '

' . sprintf( __( 'Database tables are missing. This means that MySQL is not running, WordPress was not installed properly, or someone deleted %s. You really should look at your database now.' ), $wpdb->site ) . '

'; + else + $msg .= '

' . sprintf( __( 'Could Not Find Blog! Searched for table %1$s in %2$s. Is that right?' ), $domain . $path, DB_NAME, $wpdb->blogs ) . '

'; + $msg .= '

' . esc_html__( 'What do I do now?' ) . '

'; + // @todo Update WPMU codex link. + $msg .= '

' . __( 'Read the bug report page. Some of the guidelines there may help you figure out what went wrong.' ) . '

'; + $msg .= '

' . __( "If you're still stuck with this message, then check that your database contains the following tables:" ) . '

'; + // @todo Update WPMU codex link and support instructions. + $msg = '

' . __( 'If you suspect a problem please report it to the support forums but you must include the information asked for in the WPMU bug reporting guidelines! ' ) . '

'; + + // @todo This file no longer exists post-merge. + if ( is_file( 'release-info.txt' ) ) { + $msg .= '

' . __( 'Your bug report must include the following text:' ) . '

'; + $info = file( 'release-info.txt' ); + $msg .= $info[ 4 ] . '"'; + } + + die( $msg ); } ?> diff --git a/wp-includes/ms-settings.php b/wp-includes/ms-settings.php index 903057c37..380dace34 100644 --- a/wp-includes/ms-settings.php +++ b/wp-includes/ms-settings.php @@ -64,7 +64,7 @@ if ( is_subdomain_install() ) { $blogname = substr( $blogname, 0, strpos( $blogname, '?' ) ); $reserved_blognames = array( 'page', 'comments', 'blog', 'wp-admin', 'wp-includes', 'wp-content', 'files', 'feed' ); if ( $blogname != '' && ! in_array( $blogname, $reserved_blognames ) && ! is_file( $blogname ) ) - $path = $path . $blogname . '/'; + $path .= $blogname . '/'; $current_blog = wp_cache_get( 'current_blog_' . $domain . $path, 'site-options' ); if ( ! $current_blog ) { $current_blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE domain = %s AND path = %s", $domain, $path ) ); @@ -81,14 +81,14 @@ if ( ! defined( 'WP_INSTALLING' ) && is_subdomain_install() && ! is_object( $cur } else { $destination = 'http://' . $current_site->domain . $current_site->path . 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain ); } - wp_redirect( $destination ); + header( 'Location: ' . $destination ); die(); } if ( ! defined( 'WP_INSTALLING' ) ) { if ( $current_site && ! $current_blog ) { if ( $current_site->domain != $_SERVER[ 'HTTP_HOST' ] ) { - wp_redirect( 'http://' . $current_site->domain . $current_site->path ); + header( 'Location: http://' . $current_site->domain . $current_site->path ); exit; } $current_blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE domain = %s AND path = %s", $current_site->domain, $current_site->path ) ); diff --git a/wp-settings.php b/wp-settings.php index e41ce87fa..0a5db913e 100644 --- a/wp-settings.php +++ b/wp-settings.php @@ -132,14 +132,8 @@ if ( is_multisite() ) { } // Define constants that rely on the API to obtain the default value. -wp_default_constants( 'wp_included' ); - -// Set up multisite if enabled. -if ( is_multisite() ) - ms_network_settings(); - // Define must-use plugin directory constants, which may be overridden in the sunrise.php drop-in. -wp_default_constants( 'ms_network_settings_loaded' ); +wp_default_constants( 'wp_included' ); // Load must-use plugins. foreach( wp_muplugins_to_load() as $mu_plugin )