';
}
function check_writeable_dir( $dir, $ret ) {
if( is_writeable( $dir ) == false ) {
print $dir." : FAILED
Quick Fix: chmod 777 $dir
";
return false;
} else {
if( $ret == true ) {
return true;
} else {
return false;
}
}
}
function filestats( $err ) {
print "Server Summary
";
print "If you post a message to the MU support forum at http://mu.wordpress.org/forums/ then copy and paste the following information into your message:
";
print "";
print "
ERROR: $err";
clearstatcache();
$files = array( "htaccess.dist", ".htaccess" );
while( list( $key, $val ) = each( $files ) ) {
$stats = @stat( $val );
if( $stats ) {
print "$val
";
print " uid/gid: " . $stats[ 'uid' ] . "/" . $stats[ 'gid' ] . "
\n";
print " size: " . $stats[ 'size' ] . "
";
print " perms: " . substr( sprintf('%o', fileperms( $val ) ), -4 ) . "
";
print " readable: ";
print is_readable( $val ) == true ? "yes" : "no";
print "
";
print " writeable: ";
print is_writeable( $val ) == true ? "yes" : "no";
print "
";
} elseif( file_exists( $val ) == false ) {
print "$val
";
print " FILE NOT FOUND: $val
";
}
}
print "
";
}
function do_htaccess( $oldfilename, $newfilename, $base, $url )
{
// remove ending slash from $base and $url
$htaccess = '';
if( substr($base, -1 ) == '/') {
$base = substr($base, 0, -1);
}
if( substr($url, -1 ) == '/') {
$url = substr($url, 0, -1);
}
$err = '';
if( is_file( $oldfilename ) ) {
$fp = @fopen( $oldfilename, "r" );
if( $fp ) {
while( !feof( $fp ) )
{
$htaccess .= fgets( $fp, 4096 );
}
fclose( $fp );
$htaccess = str_replace( "BASE", $base, $htaccess );
if( touch( $newfilename ) ) {
$fp = fopen( $newfilename, "w" );
if( $fp ) {
fwrite( $fp, $htaccess );
fclose( $fp );
} else {
$err = "could not open $newfilename for writing";
}
} else {
$err = "could not open $newfilename for writing";
}
} else {
$err = "could not open $oldfilename for reading";
}
} else {
$err = "$oldfilename not found";
}
if( $err != '' ) {
print "Warning!
";
print "There was a problem creating the .htaccess file.
";
print "Error: ";
if( $err == "could not open $newfilename for writing" ) {
print "Could Not Write To $newfilename.";
} elseif( $err == "could not open $oldfilename for reading" ) {
print "I could not read from $oldfilename. ";
} elseif( $err == "$oldfilename not found" ) {
print "The file, $oldfilename, is missing.";
}
print "
";
filestats( $err );
print "Please ensure that the webserver can write to this directory.
";
print "If you use Cpanel then read this post. Cpanel creates files that I need to overwrite and you have to fix that.
";
print "If all else fails then you'll have to create it by hand:";
print "
- Download htaccess.dist to your computer and open it in your favourite text editor.
- Replace the following text:
- BASE by '$base'
- HOST by '$url'
- Rename htaccess.dist to .htaccess and upload it back to the same directory.
";
die( "Installation Aborted!" );
}
}
function checkdirs() {
$ret = true;
$ret = check_writeable_dir( dirname(__FILE__), $ret );
$ret = check_writeable_dir( dirname(__FILE__) . "/wp-content/", $ret );
if( $ret == false )
{
print "Warning!
";
print "";
print "
One or more of the above directories must be made writeable by the webserver.
";
print "Please chmod 777 directory-name
or chown
that directory to the user the web server runs as (usually nobody, apache, or www-data)
";
print "Refresh this page when you're done!
";
print "
";
}
if( file_exists( "./.htaccess" ) && is_writeable( "./.htaccess" ) == false ) {
$ret = false;
print "Warning! .htaccess already exists.
";
print "";
print "
A file with the name '.htaccess' already exists in this directory and I cannot write to it. Please ftp to the server and delete this file from this directory!
";
print "Offending file: " . realpath( '.htaccess' ) . "
";
print "
";
}
return $ret;
}
function step1() {
print "Installing WPµ
";
print "Please make sure mod_rewrite
is installed as it will be activated at the end of this install.
If the mod_rewrite
module is disabled ask your administrator to enable that module, or look at the Apache documentation or elsewhere for help setting it up.
";
if( checkdirs() == false ) {
return false;
}
// Create Blogs living area.
@mkdir( dirname(__FILE__) . "/wp-content/blogs.dir", 0777 );
$url = stripslashes( "http://".$_SERVER["SERVER_NAME"] . dirname( $_SERVER[ "SCRIPT_NAME" ] ) );
if( substr( $url, -1 ) == '/' )
$url = substr( $url, 0, -1 );
$base = stripslashes( dirname( $_SERVER["SCRIPT_NAME"] ) );
if( $base != "/")
{
$base .= "/";
}
$realpath = dirname(__FILE__);
return true;
}
function printstep1form( $dbname = 'wordpress', $uname = 'username', $pwd = 'password', $dbhost = 'localhost', $prefix = 'wp_' ) {
$weblog_title = 'My new WPMU Blog';
$email = '';
$hostname = str_replace( "www.", "", $_SERVER[ 'HTTP_HOST' ] );
print "
";
}
function step2() {
global $wpdb, $table_prefix, $base, $blog_id;
$dbname = $_POST['dbname'];
$uname = $_POST['uname'];
$passwrd = $_POST['pwd'];
$dbhost = $_POST['dbhost'];
$vhost = $_POST['vhost' ];
$prefix = 'wp_';
$base = stripslashes( dirname( $_SERVER["SCRIPT_NAME"] ) );
if( $base != "/") {
$base .= "/";
}
// Test the db connection.
define('DB_NAME', $dbname);
define('DB_USER', $uname);
define('DB_PASSWORD', $passwrd);
define('DB_HOST', $dbhost);
if (!file_exists('wp-config-sample.php'))
die('Sorry, I need a wp-config-sample.php file to work from. Please re-upload this file from your WordPress installation.');
$configFile = file('wp-config-sample.php');
// We'll fail here if the values are no good.
require_once('wp-includes/wp-db.php');
printheader();
print "Creating Database Config File: ";
$handle = fopen('wp-config.php', 'w');
foreach ($configFile as $line_num => $line) {
switch (trim( substr($line,0,16) )) {
case "define('DB_NAME'":
fwrite($handle, str_replace("wordpress", $dbname, $line));
break;
case "define('DB_USER'":
fwrite($handle, str_replace("'username'", "'$uname'", $line));
break;
case "define('DB_PASSW":
fwrite($handle, str_replace("'password'", "'$passwrd'", $line));
break;
case "define('DB_HOST'":
fwrite($handle, str_replace("localhost", $dbhost, $line));
break;
case "define('VHOST',":
fwrite($handle, str_replace("VHOSTSETTING", $vhost, $line));
break;
case '$table_prefix =':
fwrite($handle, str_replace('wp_', $prefix, $line));
break;
case '$base = \'BASE\';':
fwrite($handle, str_replace('BASE', $base, $line));
break;
default:
fwrite($handle, $line);
break;
}
}
fclose($handle);
chmod('wp-config.php', 0666);
print "DONE
";
}
function printuserdetailsform( $weblog_title = 'My new Blog', $username = '', $email = '' ) {
$hostname = str_replace( "www.", "", $_SERVER[ 'HTTP_HOST' ] );
print "
You will be sent an email with your password and login links and details.";
}
function step3() {
global $wpdb, $current_site;
$base = stripslashes( dirname( $_SERVER["SCRIPT_NAME"] ) );
if( $base != "/") {
$base .= "/";
}
$domain = $wpdb->escape( $_POST[ 'basedomain' ] );
if( substr( $domain, 0, 4 ) == 'www.' )
$domain = substr( $domain, 4 );
$email = $wpdb->escape( $_POST[ 'email' ] );
$weblog_title = $wpdb->escape( $_POST[ 'weblog_title' ] );
// set up site tables
$wpdb->query( "INSERT INTO ".$wpdb->sitemeta." (meta_id, site_id, meta_key, meta_value) VALUES (NULL, 1, 'admin_email', '".$email."')" );
$wpdb->query( "INSERT INTO ".$wpdb->sitemeta." (meta_id, site_id, meta_key, meta_value) VALUES (NULL, 1, 'admin_user_id', '1')" );
$wpdb->query( "INSERT INTO ".$wpdb->site." ( id, domain, path ) VALUES ( NULL, '$domain', '$base' )" );
$wpdb->query( "INSERT INTO " . $wpdb->sitecategories . " VALUES (1, 'Uncategorized', 'uncategorized', '')" );
$wpdb->query( "INSERT INTO " . $wpdb->sitecategories . " VALUES (2, 'Blogroll', 'blogroll', '')" );
$wpdb->query( "INSERT INTO ".$wpdb->sitemeta." (meta_id, site_id, meta_key, meta_value) VALUES (NULL, 1, 'upload_filetypes', 'jpg jpeg png gif mp3 mov avi wmv midi mid pdf' )" );
$wpdb->query( "INSERT INTO ".$wpdb->sitemeta." (meta_id, site_id, meta_key, meta_value) VALUES (NULL, 1, 'blog_upload_space', '10' )" );
$wpdb->query( "INSERT INTO ".$wpdb->sitemeta." (meta_id, site_id, meta_key, meta_value) VALUES (NULL, 1, 'fileupload_maxk', '1500' )" );
$wpdb->query( "INSERT INTO ".$wpdb->sitemeta." (meta_id, site_id, meta_key, meta_value) VALUES (NULL, 1, 'site_admins', '" . serialize( array( 'admin' ) ) . "' )" );
$wpdb->query( "INSERT INTO ".$wpdb->sitemeta." (meta_id, site_id, meta_key, meta_value) VALUES (NULL, 1, 'illegal_names', '" . serialize( array( "www", "web", "root", "admin", "main", "invite", "administrator" ) ) . "' )" );
$wpdb->query( "INSERT INTO ".$wpdb->sitemeta." (meta_id, site_id, meta_key, meta_value) VALUES (NULL, 1, 'welcome_email', 'Dear User,
Your new SITE_NAME blog has been successfully set up at:
BLOG_URL
You can log in to the administrator account with the following information:
Username: USERNAME
Password: PASSWORD
Login Here: BLOG_URLwp-login.php
We hope you enjoy your new weblog.
Thanks!
--The Team @ SITE_NAME')" );
$wpdb->query( "INSERT INTO ".$wpdb->sitemeta." (meta_id, site_id, meta_key, meta_value) VALUES (NULL, 1, 'first_post', 'Welcome to SITE_NAME. This is your first post. Edit or delete it, then start blogging!' )" );
$pass = substr( md5( rand() ), 5, 12 );
$user_id = wpmu_create_user( 'admin', $pass, $email);
$current_site->domain = $domain;
$current_site->path = $base;
$current_site->site_name = ucfirst( $domain );
wpmu_create_blog( $domain, $base, $weblog_title, $user_id, array() );
update_blog_option( 1, 'template', 'home');
update_blog_option( 1, 'stylesheet', 'home');
update_blog_option( 1, 'permalink_structure', '/blog/%year%/%monthnum%/%day%/%postname%/');
update_blog_option( 1, 'rewrite_rules', '');
$msg = "Your new WPMU site has been created at\nhttp://{$domain}{$base}\n\nLogin details:\nUsername: admin\nPassword: $pass\nLogin: http://{$domain}{$base}wp-login.php\n";
wp_mail( $email, "Your new WPMU site is ready!", $msg, "From: wordpress@" . $_SERVER[ 'HTTP_HOST' ] );
print "Congrats! Your WPMU site has been set up and you have been sent details of your login and password in an email.
";
}
switch( $_POST[ 'action' ] ) {
case "step2":
// get blog username
// create wp-config.php
step2();
// Install Blog!
include_once('./wp-config.php');
include_once('./wp-admin/upgrade-functions.php');
make_db_current_silent();
populate_options();
do_htaccess( 'htaccess.dist', '.htaccess', $base, '');
printheader();
step3();
break;
case "step3":
// call createBlog();
// create .htaccess
// print login info and links.
require_once('./wp-config.php');
require_once('./wp-admin/upgrade-functions.php');
make_db_current_silent();
populate_options();
do_htaccess( 'htaccess.dist', '.htaccess', $base, '');
printheader();
step3();
break;
default:
// check that directories are writeable.
// create wpmu-settings.php
// get db auth info.
printheader();
if( step1() ) {
printstep1form();
}
break;
}
?>