2010-01-10 13:10:51 -05:00
< ? php
/**
2010-01-28 11:09:52 -05:00
* These functions are needed to load Multisite .
2010-01-10 13:10:51 -05:00
*
2010-01-28 11:09:52 -05:00
* @ since 3.0 . 0
2010-01-10 13:10:51 -05:00
*
* @ package WordPress
2010-01-28 11:09:52 -05:00
* @ subpackage Multisite
2010-01-10 13:10:51 -05:00
*/
2010-01-28 11:09:52 -05:00
/**
2010-02-01 15:26:08 -05:00
* Whether a subdomain configuration is enabled .
2010-01-28 11:09:52 -05:00
*
* @ since 3.0
*
* @ return bool True if subdomain configuration is enabled , false otherwise .
*/
function is_subdomain_install () {
if ( defined ( 'VHOST' ) && VHOST == 'yes' )
return true ;
2010-01-10 13:10:51 -05:00
2010-01-28 11:09:52 -05:00
return false ;
}
2010-01-10 13:10:51 -05:00
2010-02-01 15:26:08 -05:00
/**
* 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 .
*/
2010-01-10 13:10:51 -05:00
function ms_site_check () {
2010-01-20 02:44:47 -05:00
global $wpdb , $current_blog ;
if ( '1' == $current_blog -> deleted ) {
2010-02-01 15:26:08 -05:00
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
2010-02-24 18:12:51 -05:00
wp_die ( sprintf ( __ ( 'This site has not been activated yet. If you are having problems activating your site, please contact <a href="mailto:%1$s">%1$s</a>.' ), str_replace ( '@' , ' AT ' , get_site_option ( 'admin_email' , " support@ { $current_site -> domain } " ) ) ) );
2010-01-20 02:44:47 -05:00
}
2010-01-25 17:09:43 -05:00
if ( $current_blog -> archived == '1' || $current_blog -> spam == '1' ) {
2010-02-01 15:26:08 -05:00
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.' ) );
}
2010-01-20 02:44:47 -05:00
}
2010-01-25 17:09:43 -05:00
2010-01-20 02:44:47 -05:00
return true ;
2010-01-10 13:10:51 -05:00
}
2010-02-01 15:26:08 -05:00
/**
* Sets current site name .
*
* @ access private
* @ since 3.0 . 0
* @ return object $current_site object with site_name
*/
2010-01-28 11:09:52 -05:00
function get_current_site_name ( $current_site ) {
global $wpdb ;
2010-02-12 12:06:43 -05:00
$current_site -> site_name = wp_cache_get ( $current_site -> id . ':current_site_name' , 'site-options' );
2010-02-01 15:26:08 -05:00
if ( ! $current_site -> site_name ) {
2010-02-12 12:06:43 -05:00
$current_site -> site_name = wp_cache_get ( $current_site -> id . ':site_name' , 'site-options' );
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 )
$current_site -> site_name = ucfirst ( $current_site -> domain );
}
2010-02-01 15:26:08 -05:00
wp_cache_set ( $current_site -> id . ':current_site_name' , $current_site -> site_name , 'site-options' );
2010-01-28 11:09:52 -05:00
}
return $current_site ;
}
2010-02-01 15:26:08 -05:00
/**
* Sets current_site object .
*
* @ access private
* @ since 3.0 . 0
* @ return object $current_site object
*/
2010-01-28 11:09:52 -05:00
function wpmu_current_site () {
global $wpdb , $current_site , $domain , $path , $sites , $cookie_domain ;
if ( defined ( 'DOMAIN_CURRENT_SITE' ) && defined ( 'PATH_CURRENT_SITE' ) ) {
2010-02-18 20:03:58 -05:00
$current_site -> id = defined ( 'SITE_ID_CURRENT_SITE' ) ? SITE_ID_CURRENT_SITE : 1 ;
2010-01-28 11:09:52 -05:00
$current_site -> domain = DOMAIN_CURRENT_SITE ;
$current_site -> path = $path = PATH_CURRENT_SITE ;
2010-03-06 15:01:32 -05:00
if ( defined ( 'BLOG_ID_CURRENT_SITE' ) )
$current_site -> blog_id = BLOG_ID_CURRENT_SITE ;
elseif ( defined ( 'BLOGID_CURRENT_SITE' ) ) // deprecated.
2010-01-28 11:09:52 -05:00
$current_site -> blog_id = BLOGID_CURRENT_SITE ;
if ( DOMAIN_CURRENT_SITE == $domain )
$current_site -> cookie_domain = $cookie_domain ;
elseif ( substr ( $current_site -> domain , 0 , 4 ) == 'www.' )
$current_site -> cookie_domain = substr ( $current_site -> domain , 4 );
else
$current_site -> cookie_domain = $current_site -> domain ;
2010-02-24 18:12:51 -05:00
wp_load_core_site_options ( $current_site -> id );
2010-02-12 12:06:43 -05:00
2010-01-28 11:09:52 -05:00
return $current_site ;
}
2010-02-01 15:26:08 -05:00
$current_site = wp_cache_get ( 'current_site' , 'site-options' );
2010-01-28 11:09:52 -05:00
if ( $current_site )
return $current_site ;
$sites = $wpdb -> get_results ( " SELECT * FROM $wpdb->site " ); // usually only one site
2010-02-01 15:26:08 -05:00
if ( 1 == count ( $sites ) ) {
2010-01-28 11:09:52 -05:00
$current_site = $sites [ 0 ];
2010-02-24 18:12:51 -05:00
wp_load_core_site_options ( $current_site -> id );
2010-01-28 11:09:52 -05:00
$path = $current_site -> path ;
2010-02-01 15:26:08 -05:00
$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 ) );
2010-01-28 11:09:52 -05:00
$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 );
2010-02-01 15:26:08 -05:00
wp_cache_set ( 'current_site' , $current_site , 'site-options' );
2010-01-28 11:09:52 -05:00
return $current_site ;
}
$path = substr ( $_SERVER [ 'REQUEST_URI' ], 0 , 1 + strpos ( $_SERVER [ 'REQUEST_URI' ], '/' , 1 ) );
if ( $domain == $cookie_domain )
2010-02-01 15:26:08 -05:00
$current_site = $wpdb -> get_row ( $wpdb -> prepare ( " SELECT * FROM $wpdb->site WHERE domain = %s AND path = %s " , $domain , $path ) );
2010-01-28 11:09:52 -05:00
else
2010-02-01 15:26:08 -05:00
$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 ) {
2010-01-28 11:09:52 -05:00
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 ) );
}
2010-02-01 15:26:08 -05:00
if ( $current_site ) {
2010-01-28 11:09:52 -05:00
$path = $current_site -> path ;
$current_site -> cookie_domain = $cookie_domain ;
return $current_site ;
2010-02-01 15:26:08 -05:00
}
2010-02-08 13:02:23 -05:00
2010-02-01 15:26:08 -05:00
if ( is_subdomain_install () ) {
2010-01-28 11:09:52 -05:00
$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 ) );
2010-02-01 15:26:08 -05:00
if ( $current_site ) {
2010-01-28 11:09:52 -05:00
$current_site -> cookie_domain = $current_site -> domain ;
return $current_site ;
}
2010-02-01 15:26:08 -05:00
2010-01-28 11:09:52 -05:00
$current_site = $wpdb -> get_row ( $wpdb -> prepare ( " SELECT * FROM $wpdb->site WHERE domain = %s AND path='/' " , $sitedomain ) );
2010-02-01 15:26:08 -05:00
}
if ( $current_site || defined ( 'WP_INSTALLING' ) ) {
2010-01-28 11:09:52 -05:00
$path = '/' ;
2010-02-01 15:26:08 -05:00
return $current_site ;
2010-01-20 02:44:47 -05:00
}
2010-02-01 15:26:08 -05:00
// Still no dice.
// @todo Update or remove WPMU codex link.
if ( 1 == count ( $sites ) )
2010-03-03 12:13:38 -05:00
wp_die ( sprintf ( 'That blog does not exist. Please try <a href="%s">%s</a>.' , $sites [ 0 ] -> domain . $sites [ 0 ] -> path ) );
2010-02-01 15:26:08 -05:00
else
2010-03-03 12:13:38 -05:00
wp_die ( 'No site defined on this host. If you are the owner of this site, please check <a href="http://codex.wordpress.org/Debugging_WPMU">Debugging WPMU</a> for further assistance.' );
2010-01-10 13:10:51 -05:00
}
2010-01-28 11:09:52 -05:00
2010-02-01 15:26:08 -05:00
/**
2010-02-20 08:51:32 -05:00
* Displays a failure message .
2010-02-01 15:26:08 -05:00
*
2010-02-20 08:51:32 -05:00
* Used when blog does not exist . Checks for a missing $wpdb -> site table as well .
2010-02-01 15:26:08 -05:00
*
2010-03-09 01:14:42 -05:00
* @ todo update for 3.0 , pare down , and i18n
*
2010-02-01 15:26:08 -05:00
* @ access private
* @ since 3.0 . 0
*/
2010-02-20 08:51:32 -05:00
function ms_not_installed () {
2010-01-28 11:09:52 -05:00
global $wpdb , $domain , $path ;
2010-02-01 15:26:08 -05:00
2010-03-09 01:14:42 -05:00
$msg = '<h1>' . 'Fatal Error' . '</h1>' ;
$msg .= '<p>' . 'If your site does not display, please contact the owner of this network.' . '</p>' ;
2010-03-03 12:13:38 -05:00
$msg .= '<p>' . 'If you are the owner of this network please check that MySQL is running properly and all tables are error free.' . '</p>' ;
2010-02-01 15:26:08 -05:00
if ( ! $wpdb -> get_var ( " SHOW TABLES LIKE ' $wpdb->site ' " ) )
2010-03-03 12:13:38 -05:00
$msg .= '<p>' . sprintf ( '<strong>Database tables are missing.</strong> This means that MySQL is not running, WordPress was not installed properly, or someone deleted <code>%s</code>. You really <em>should</em> look at your database now.' , $wpdb -> site ) . '</p>' ;
2010-02-01 15:26:08 -05:00
else
2010-03-03 12:13:38 -05:00
$msg .= '<p>' . sprintf ( '<strong>Could Not Find Site!</strong> Searched for table <em>%1$s</em> in <code>%2$s</code>. Is that right?' , $domain . $path , DB_NAME , $wpdb -> blogs ) . '</p>' ;
2010-03-09 01:14:42 -05:00
$msg .= '<h1>' . 'What do I do now?' . '</h1>' ;
2010-02-01 15:26:08 -05:00
// @todo Update WPMU codex link.
2010-03-03 12:13:38 -05:00
$msg .= '<p>' . 'Read the <a target="_blank" href="http://codex.wordpress.org/Debugging_WPMU">bug report</a> page. Some of the guidelines there may help you figure out what went wrong.' . '</p>' ;
$msg .= '<p>' . " If you're still stuck with this message, then check that your database contains the following tables: " . '</p><ul>' ;
2010-02-01 15:26:08 -05:00
foreach ( $wpdb -> global_tables as $table ) {
$msg .= '<li>' . $wpdb -> prefix . $table . '</li>' ;
}
$msg .= '</ul>' ;
// @todo Update WPMU codex link and support instructions.
2010-03-09 01:14:42 -05:00
$msg .= '<p>' . 'If you suspect a problem please report it to the support forums but you must include the information asked for in the <a target="_blank" href="http://codex.wordpress.org/Debugging_WPMU">WPMU bug reporting guidelines</a>! ' . '</p>' ;
2010-02-01 15:26:08 -05:00
die ( $msg );
2010-01-28 11:09:52 -05:00
}
2010-01-10 13:10:51 -05:00
?>