summaryrefslogtreecommitdiffstats
path: root/wpmu-settings.php
blob: 8cda5a37c2bc88856c0ead7c3ce78a21dc6a3f01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?php
if( defined( 'ABSPATH' ) == false )
	die();

$wpmuBaseTablePrefix = $table_prefix;

$domain = addslashes( $_SERVER['HTTP_HOST'] );
if( substr( $domain, 0, 4 ) == 'www.' )
	$domain = substr( $domain, 4 );
$domain = preg_replace('/:.*$/', '', $domain); // Strip ports


$path = preg_replace( '|([a-z0-9-]+.php.*)|', '', $_SERVER['REQUEST_URI'] );
$path = str_replace ( '/wp-admin/', '/', $path );
$path = preg_replace( '|(/[a-z0-9-]+?/).*|', '$1', $path );

$wpdb->hide_errors();

// Get site and blog details

if( defined( "WP_INSTALLING" ) == false ) {
	if( constant( 'VHOST' ) == 'yes' ) {
		$current_blog = $wpdb->get_row("SELECT * FROM $wpdb->blogs WHERE domain = '$domain'");
		if( $current_blog != null )
			$current_site = $wpdb->get_row("SELECT * FROM $wpdb->site WHERE id='{$current_blog->site_id}'");
	} else {
		$path = substr( $_SERVER[ 'REQUEST_URI' ], 0, 1 + strpos( $_SERVER[ 'REQUEST_URI' ], '/', 1 ) );
		$current_site = $wpdb->get_row( "SELECT * FROM $wpdb->site WHERE domain = '$domain' AND path='$path'" );
		if( $current_site == null ) {
			$path = '/';
			$current_site = $wpdb->get_row( "SELECT * FROM $wpdb->site WHERE domain = '$domain' AND path='$path'" );
			if( $current_site == null )
				die( "No WPMU site defined on this host." );
		}
		$blogname = htmlspecialchars( str_replace( $path, '', $_SERVER[ 'REQUEST_URI' ] ) );
		$blogname = substr( $blogname, 0, strpos( $blogname, '/' ) );
		if( $blogname == '' || $blogname == 'blog' || $blogname == 'wp-admin' || $blogname == 'files' ) {
			$current_blog = $wpdb->get_row("SELECT * FROM $wpdb->blogs WHERE domain = '$domain' AND path = '$path'");
		} else {
			$current_blog = $wpdb->get_row("SELECT * FROM $wpdb->blogs WHERE domain = '$domain' AND path = '{$path}{$blogname}/'");
		}
	}

	if( $current_blog == false || $current_site == false )
		is_installed();

	$blog_id = $current_blog->blog_id;
	$public  = $current_blog->public;
	$site_id = $current_blog->site_id;

	if( $site_id == 0 )
		$site_id = 1;

	$current_site->site_name = $wpdb->get_var( "SELECT meta_value FROM $wpdb->sitemeta WHERE site_id = '$site_id' AND meta_key = 'site_name'" );
}
if( $blog_id == false ) {
    // no blog found, are we installing? Check if the table exists.

    if ( defined('WP_INSTALLING') ) {
	$query = "SELECT blog_id FROM ".$wpdb->blogs." limit 0,1";
	$blog_id = $wpdb->get_var( $query );
	if( $blog_id == false ) {
	    // table doesn't exist. This is the first blog

	    $blog_id = 1;
	} else {
	    // table exists

	    // don't create record at this stage. we're obviously installing so it doesn't matter what the table vars below are like.

	    // default to using the "main" blog.

	    $blog_id = 1;
	}
    } else {
	$check = $wpdb->get_results( "SELECT * FROM $wpdb->site" );
	if( $check == false ) {
	    $msg = ': DB Tables Missing';
	} else {
	    $msg = '';
	}
	die( "No Blog by that name on this system." . $msg );
    }
}

$wpdb->show_errors();

if( '0' == $current_blog->public ) {
	// This just means the blog shouldn't show up in google, etc. Only to registered members

}

if( $current_blog->archived == '1' ) {
    die( 'This blog has been archived or suspended.' );
}

if( $current_blog->spam == '1' ) {
    die( 'This blog has been archived or suspended.' );
}

function is_installed() {
    global $wpdb, $domain, $path;
	$base = stripslashes( $base );
    if( defined( "WP_INSTALLING" ) == false ) {
	    $check = $wpdb->get_results( "SELECT * FROM $wpdb->site" );
	    if( $check == false ) {
		    $msg = '<strong>Database Tables Missing.</strong><br /> The table <em>' . DB_NAME . '::' . $wpdb->site . '</em> is missing. Delete the .htaccess file and run the installer again!<br />';
	    } else {
		    $msg = '<strong>Could Not Find Blog!</strong><br />';
		    $msg .= "Searched for <em>" . $domain . $path . "</em> in " . DB_NAME . "::" . $wpdb->blogs . " table. Is that right?<br />";
	    }
	    $msg .= "Please check that your database contains the following tables:<ul>

		    <li> $wpdb->blogs </li>

		    <li> $wpdb->users </li>

		    <li> $wpdb->usermeta </li>

		    <li> $wpdb->site </li>

		    <li> $wpdb->sitemeta </li>

		    <li> $wpdb->sitecategories </li>

		    </ul>";
	    $msg .= "If you suspect a problem please report it to <a href='http://mu.wordpress.org/forums/'>support forums</a>!";
	    die( "<h1>Fatal Error</h1> " . $msg );
    }
}

$table_prefix = $table_prefix . $blog_id . '_';

?>