2010-01-06 07:50:12 +00:00
< ? php
2010-01-08 21:25:01 +00:00
/**
2010-01-28 16:09:52 +00:00
* Used to setup and fix common variables and include
* the Multisite procedural and class library .
2010-01-08 21:25:01 +00:00
*
2010-01-28 16:09:52 +00:00
* Allows for some configuration in wp - config . php ( see ms - default - constants . php )
2010-01-08 21:25:01 +00:00
*
2010-01-28 16:09:52 +00:00
* @ package WordPress
* @ subpackage Multisite
2010-01-08 21:25:01 +00:00
*/
2010-01-28 16:09:52 +00:00
/** Include Multisite initialization functions */
require ( ABSPATH . WPINC . '/ms-load.php' );
require ( ABSPATH . WPINC . '/ms-default-constants.php' );
if ( defined ( 'SUNRISE' ) )
include_once ( WP_CONTENT_DIR . '/sunrise.php' );
2010-01-08 21:25:01 +00:00
2010-01-19 17:01:39 +00:00
if ( isset ( $current_site ) && isset ( $current_blog ) )
2010-01-06 07:50:12 +00:00
return ;
$domain = addslashes ( $_SERVER [ 'HTTP_HOST' ] );
2010-01-29 16:26:46 +00:00
if ( false !== strpos ( $domain , ':' ) ) {
2010-01-19 17:01:39 +00:00
if ( substr ( $domain , - 3 ) == ':80' ) {
2010-01-06 07:50:12 +00:00
$domain = substr ( $domain , 0 , - 3 );
$_SERVER [ 'HTTP_HOST' ] = substr ( $_SERVER [ 'HTTP_HOST' ], 0 , - 3 );
2010-01-19 17:01:39 +00:00
} elseif ( substr ( $domain , - 4 ) == ':443' ) {
2010-01-06 07:50:12 +00:00
$domain = substr ( $domain , 0 , - 4 );
$_SERVER [ 'HTTP_HOST' ] = substr ( $_SERVER [ 'HTTP_HOST' ], 0 , - 4 );
} else {
2010-01-29 16:26:46 +00:00
wp_die ( 'Multisite only works without the port number in the URL.' );
2010-01-06 07:50:12 +00:00
}
}
2010-01-29 16:26:46 +00:00
$domain = rtrim ( $domain , '.' );
$cookie_domain = $domain ;
if ( substr ( $cookie_domain , 0 , 4 ) == 'www.' )
$cookie_domain = substr ( $cookie_domain , 4 );
2010-01-21 17:20:23 +00:00
2010-01-06 07:50:12 +00:00
$path = preg_replace ( '|([a-z0-9-]+.php.*)|' , '' , $_SERVER [ 'REQUEST_URI' ] );
$path = str_replace ( '/wp-admin/' , '/' , $path );
$path = preg_replace ( '|(/[a-z0-9-]+?/).*|' , '$1' , $path );
$current_site = wpmu_current_site ();
2010-01-29 16:26:46 +00:00
if ( ! isset ( $current_site -> blog_id ) )
$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-06 07:50:12 +00:00
2010-01-19 17:01:39 +00:00
if ( is_subdomain_install () ) {
2010-01-06 07:50:12 +00:00
$current_blog = wp_cache_get ( 'current_blog_' . $domain , 'site-options' );
2010-01-19 17:01:39 +00:00
if ( ! $current_blog ) {
2010-02-20 14:07:23 +00:00
$current_blog = get_blog_details ( array ( 'domain' => $domain ), false );
2010-01-19 17:01:39 +00:00
if ( $current_blog )
2010-01-06 07:50:12 +00:00
wp_cache_set ( 'current_blog_' . $domain , $current_blog , 'site-options' );
}
2010-01-29 16:26:46 +00:00
if ( $current_blog && $current_blog -> site_id != $current_site -> id )
$current_site = $wpdb -> get_row ( $wpdb -> prepare ( " SELECT * FROM $wpdb->site WHERE id = %d " , $current_blog -> site_id ) );
2010-01-19 17:01:39 +00:00
else
2010-01-06 07:50:12 +00:00
$blogname = substr ( $domain , 0 , strpos ( $domain , '.' ) );
} else {
$blogname = htmlspecialchars ( substr ( $_SERVER [ 'REQUEST_URI' ], strlen ( $path ) ) );
2010-01-29 16:26:46 +00:00
if ( false !== strpos ( $blogname , '/' ) )
2010-01-06 07:50:12 +00:00
$blogname = substr ( $blogname , 0 , strpos ( $blogname , '/' ) );
2010-01-29 16:26:46 +00:00
if ( false !== strpos ( $blogname , '?' ) )
2010-01-06 07:50:12 +00:00
$blogname = substr ( $blogname , 0 , strpos ( $blogname , '?' ) );
$reserved_blognames = array ( 'page' , 'comments' , 'blog' , 'wp-admin' , 'wp-includes' , 'wp-content' , 'files' , 'feed' );
2010-01-29 16:26:46 +00:00
if ( $blogname != '' && ! in_array ( $blogname , $reserved_blognames ) && ! is_file ( $blogname ) )
2010-02-01 20:26:08 +00:00
$path .= $blogname . '/' ;
2010-01-06 07:50:12 +00:00
$current_blog = wp_cache_get ( 'current_blog_' . $domain . $path , 'site-options' );
2010-01-29 16:26:46 +00:00
if ( ! $current_blog ) {
2010-02-20 14:07:23 +00:00
$current_blog = get_blog_details ( array ( 'domain' => $domain , 'path' => $path ), false );
2010-01-19 17:01:39 +00:00
if ( $current_blog )
2010-01-06 07:50:12 +00:00
wp_cache_set ( 'current_blog_' . $domain . $path , $current_blog , 'site-options' );
}
}
2010-01-29 16:26:46 +00:00
if ( ! defined ( 'WP_INSTALLING' ) && is_subdomain_install () && ! is_object ( $current_blog ) ) {
2010-01-19 17:01:39 +00:00
if ( defined ( 'NOBLOGREDIRECT' ) ) {
2010-01-29 16:26:46 +00:00
$destination = NOBLOGREDIRECT ;
if ( '%siteurl%' == $destination )
2010-01-06 07:50:12 +00:00
$destination = " http:// " . $current_site -> domain . $current_site -> path ;
} else {
2010-01-29 16:26:46 +00:00
$destination = 'http://' . $current_site -> domain . $current_site -> path . 'wp-signup.php?new=' . str_replace ( '.' . $current_site -> domain , '' , $domain );
2010-01-06 07:50:12 +00:00
}
2010-02-01 20:26:08 +00:00
header ( 'Location: ' . $destination );
2010-01-29 16:26:46 +00:00
die ();
2010-01-06 07:50:12 +00:00
}
2010-01-28 16:09:52 +00:00
if ( ! defined ( 'WP_INSTALLING' ) ) {
2010-01-29 16:26:46 +00:00
if ( $current_site && ! $current_blog ) {
2010-01-19 17:01:39 +00:00
if ( $current_site -> domain != $_SERVER [ 'HTTP_HOST' ] ) {
2010-02-01 20:26:08 +00:00
header ( 'Location: http://' . $current_site -> domain . $current_site -> path );
2010-01-06 07:50:12 +00:00
exit ;
}
2010-02-20 14:07:23 +00:00
$current_blog = get_blog_details ( array ( 'domain' => $current_site -> domain , 'path' => $current_site -> path ), false );
2010-01-06 07:50:12 +00:00
}
2010-01-29 16:26:46 +00:00
if ( ! $current_blog || ! $current_site )
2010-02-20 13:51:32 +00:00
ms_not_installed ();
2010-01-06 07:50:12 +00:00
}
$blog_id = $current_blog -> blog_id ;
$public = $current_blog -> public ;
2010-01-29 16:26:46 +00:00
if ( empty ( $current_blog -> site_id ) )
2010-01-06 07:50:12 +00:00
$current_blog -> site_id = 1 ;
$site_id = $current_blog -> site_id ;
$current_site = get_current_site_name ( $current_site );
2010-01-29 16:26:46 +00:00
if ( ! $blog_id ) {
2010-02-20 14:07:23 +00:00
if ( defined ( 'WP_INSTALLING' ) ) {
2010-01-29 16:26:46 +00:00
$current_blog -> blog_id = $blog_id = 1 ;
2010-01-06 07:50:12 +00:00
} else {
2010-02-20 14:07:23 +00:00
$msg = ! $wpdb -> get_var ( " SHOW TABLES LIKE ' $wpdb->site ' " ) ? ' ' . __ ( 'Database tables are missing.' ) : '' ;
2010-01-29 16:26:46 +00:00
wp_die ( __ ( 'No blog by that name on this system.' ) . $msg );
2010-01-06 07:50:12 +00:00
}
}
2010-02-24 21:30:13 +00:00
$wpdb -> set_prefix ( $table_prefix , false ); // set DB table prefix
2010-02-24 21:07:23 +00:00
$wpdb -> set_blog_id ( $current_blog -> blog_id , $current_blog -> site_id );
2010-01-28 16:09:52 +00:00
$table_prefix = $wpdb -> get_blog_prefix ();
2010-01-06 07:50:12 +00:00
2010-01-28 17:28:44 +00:00
// need to init cache again after blog_id is set
wp_start_object_cache ();
2010-01-06 07:50:12 +00:00
2010-01-29 16:26:46 +00:00
// Define upload directory constants
2010-02-20 14:07:23 +00:00
ms_upload_constants ();
2010-01-28 16:09:52 +00:00
2010-01-06 07:50:12 +00:00
?>