summaryrefslogtreecommitdiffstats
path: root/wpmu-settings.php
blob: c5f58c665cf13669b4a81a828929bf1e1109a147 (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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<?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();

#$sites = $wpdb->get_results( "SELECT * FROM $wpdb->site" );

#if( count( $sites ) == 1 ) {

	#$current_site = $sites[0];

#}

	
if( isset( $current_site ) == false ) {
	$path = substr( $_SERVER[ 'REQUEST_URI' ], 0, 1 + strpos( $_SERVER[ 'REQUEST_URI' ], '/', 1 ) );
	if( constant( 'VHOST' ) == 'yes' ) {
		$current_site = $wpdb->get_row( "SELECT * FROM $wpdb->site WHERE domain = '$domain' AND path='$path'" );
		if( $current_site == null ) {
			$current_site = $wpdb->get_row( "SELECT * FROM $wpdb->site WHERE domain = '$domain' AND path='/'" );
			if( $current_site == null ) {
				$sitedomain = substr( $domain, 1 + strpos( $domain, '.' ) );
				$current_site = $wpdb->get_row( "SELECT * FROM $wpdb->site WHERE domain = '$sitedomain' AND path='$path'" );
				if( $current_site == null ) {
					$path = '/';
					$current_site = $wpdb->get_row( "SELECT * FROM $wpdb->site WHERE domain = '$sitedomain' AND path='$path'" );
					if( $current_site == null && defined( "WP_INSTALLING" ) == false )
						die( "No WPMU site defined on this host." );
				}
			} else {
				$path = '/';
			}
		}
	} else {
		$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 && defined( "WP_INSTALLING" ) == false )
				die( "No WPMU site defined on this host." );
		}
	}
}


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 {
		$blogname = substr( $domain, 0, strpos( $domain, '.' ) );
	}
} else {
	$blogname = htmlspecialchars( substr( $_SERVER[ 'REQUEST_URI' ], strlen( $path ) ) );
	if( strpos( $blogname, '/' ) )
		$blogname = substr( $blogname, 0, strpos( $blogname, '/' ) );
	if( strpos( $blogname, '?' ) )
		$blogname = substr( $blogname, 0, strpos( $blogname, '?' ) );
	$blognames = array( 'blog', 'wp-admin', 'wp-includes', 'wp-content', 'files', 'feed' );
	if( $blogname == '' || in_array( $blogname, $blognames ) || is_file( $blogname ) || is_blogname_page( $blogname ) ) {
		$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( defined( "WP_INSTALLING" ) == false ) {
	if( $current_site && $current_blog == null ) {
		header( "Location: http://{$current_site->domain}{$current_site->path}wp-signup.php?new=" . urlencode( $blogname ) );
		die();
	}
	if( $current_blog == false || $current_site == false )
		is_installed();
}

function is_blogname_page( $blogname ) {
	global $wpdb, $table_prefix;

	// is the request for a page of the main blog? We need to cache this information somewhere to save a request

	$pages = $wpdb->get_col( "SELECT post_name FROM {$table_prefix}1_posts WHERE post_type='page'" ); 
	if( in_array( $blogname, $pages ) ) {
		return true;
	} else {
		return false;
	}
}

$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( $current_site->site_name == null )
	$current_site->site_name = ucfirst( $current_site->domain );

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 .= "<br />\n<h1>What do I do now?</h1>";
		$msg .= "Read the <a target='_blank' href='http://trac.mu.wordpress.org/wiki/DebuggingWpmu'>bug report</a> page. Some of the guidelines there may help you figure out what went wrong.<br />";
		$msg .= "If you're still stuck with this message, then 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> but follow the <a href='http://trac.mu.wordpress.org/wiki/DebuggingWpmu'>guidelines</a>!<br /><br />";
		if( is_file( 'release-info.txt' ) ) {
			$msg .= 'Your bug report must include the following text: "';
			$info = file( 'release-info.txt' );
			$msg .= $info[ 4 ] . '"';
		}

		die( "<h1>Fatal Error</h1> " . $msg );
	}
}

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

?>