setStepLabel("_step_progress_extracting");
}
public function step2_process()
{
$this->extract("main");
$this->extract( $this->input["field_multisite"] === "yes" ? "data_mu" : "data" );
}
//==========================================================================
// STEP III: CONFIGURING INSTALL
//==========================================================================
public function step3_init()
{
$this->setStepLabel("_step_progress_processing");
}
public function step3_process()
{
$this->mv('wordpress/*');
$this->rm('wordpress');
$this->mkdir(array('wp-content/uploads','wp-content/languages', "wp-content/uploads/et_temp"));//'wp-content/blogs.dir',
// to avoid safe_mode restrictions:
//@note if anyone is still using PHP <5.4 (when safe_mode is junked) in 2016 I will not be surprised.
if (version_compare($this->env["has_php"], "5.4", "<"))
{
$r = array();
for ( $i = 2013; $i < 2017; ++$i)
{
$r[] = "wp-content/uploads/$i";
for ( $j = 1; $j < 13; ++$j)
{
$r[] = "wp-content/uploads/$i/".sprintf("%02d",$j);
}
}
$this->mkdir($r);
}
$this->chmod("wp-content", 0666, 0777, true);
$this->chmod("wp-content/index.php", 0644);
// $this->write("wp-content/uploads/.htaccess","\ndeny from all\n\n\nallow from all\n");
$urlinfo = parse_url($this->url);
// write new .htaccess for WPMU
if ( $this->input["field_multisite"] === "yes" )
{
$this->write(".htaccess",'
RewriteEngine On
RewriteBase '.$urlinfo["path"].'/
RewriteRule ^index\\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\\.php)$ $2 [L]
RewriteRule . index.php [L]
');
}
else
{
$urlinfo = parse_url($this->url);
$this->write(".htaccess",'
# BEGIN WordPress
RewriteEngine On
RewriteBase '.$urlinfo["path"].'/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . '.$urlinfo["path"].'/index.php [L]
# END WordPress');
}
$this->cp('wp-config-sample.php','wp-config.php');
//$charSet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789<>[]()+-=`|#:;~?!@#$%^&*.,';
$r = array(
"#'localhost'#" => var_export($this->db_host,true),
"#'username_here'#" => var_export($this->db_user,true),
"#'database_name_here'#" => var_export($this->db_name,true),
"#'password_here'#" => var_export($this->db_pass,true),
"#'wp_'#" => var_export($this->db_prefix,true),
"#define\('AUTH_KEY',.+'put your unique phrase here'\);#s" //matches whole block
=>
"define('AUTH_KEY', ".var_export(i_lib::randstr(64),true).");
define('SECURE_AUTH_KEY', ".var_export(i_lib::randstr(64),true).");
define('LOGGED_IN_KEY', ".var_export(i_lib::randstr(64),true).");
define('NONCE_KEY', ".var_export(i_lib::randstr(64),true).");
define('AUTH_SALT', ".var_export(i_lib::randstr(64),true).");
define('SECURE_AUTH_SALT', ".var_export(i_lib::randstr(64),true).");
define('LOGGED_IN_SALT', ".var_export(i_lib::randstr(64),true).");
define('NONCE_SALT', ".var_export(i_lib::randstr(64),true).");
/**
* Other customizations.
*/
"
.( $this->env["has_php_suexec"] === false && $this->env["has_php_safe_mode"] !== false ? "" : "define('FS_METHOD','direct');".( $this->env["has_php_suexec"] !== false ? "define('FS_CHMOD_DIR',0755);define('FS_CHMOD_FILE',0644);" : "define('FS_CHMOD_DIR',0777);define('FS_CHMOD_FILE',0666);" )."\n" )
."define('WP_TEMP_DIR',dirname(__FILE__).'/wp-content/uploads');
/**
* Turn off automatic updates since these are managed upstream.
*/
define('AUTOMATIC_UPDATER_DISABLED', true);
"
.( $this->input["field_multisite"] === "yes" ? "
/**
* Multi-site
*
*/
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
\$base = ".var_export($urlinfo["path"]."/",true).";
define('DOMAIN_CURRENT_SITE', ".var_export($urlinfo["host"],true).");
define('PATH_CURRENT_SITE', ".var_export($urlinfo["path"]."/",true).");
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('WP_ALLOW_MULTISITE', true);
" : "" )
.( isset($this->input["livedemo"]) ? "
define( 'DISALLOW_FILE_MODS', true );
" : "" )
);
$this->sr("wp-config.php", $r);
if ( $this->input["field_multisite"] === "yes" )
{
$r = array(
"#ynri_#" => $this->db_prefix,
"#http://www.testing.installatron.com/djfkl#" => $this->url,
"#'www.testing.installatron.com'#" => "'".$urlinfo["host"]."'",
"#'/djfkl/'#" => "'".$urlinfo["path"]."/'",
);
}
else
{
$r = array(
"#zzct_#" => $this->db_prefix,
"#http://www.testing.installatron.com/wordpress\d*#" => $this->url
);
}
//needs to be looser, b/c WP uses it in vlaues: $this->sr("install.sql", "#`zzct_#", "`$this->db_prefix");
$this->db_import("install.sql", null, $r);
$this->rm("install.sql");
//@see wp-admin/includes/upgrade.php for schema changes
$sql = "";
$sql .= "UPDATE `{$this->db_prefix}posts` SET post_date=NOW(), post_date_gmt=NOW(), post_modified=NOW(), post_modified_gmt=NOW();\n";
$sql .= "UPDATE `{$this->db_prefix}users` SET user_pass='".md5($this->input["field_passwd"])."', user_login='".$this->db_escape($this->input["field_login"])."', user_email='".$this->db_escape($this->input["field_email"])."', user_registered=NOW() WHERE ID='1';\n";
if ( $this->input["field_multisite"] === "yes" )
{
$this->db_query("UPDATE `{$this->db_prefix}sitemeta` SET `meta_value`=? WHERE `meta_key`='site_admins'",array(serialize(array($this->input["field_login"]))));
$this->db_query("UPDATE `{$this->db_prefix}sitemeta` SET `meta_value`=? WHERE `meta_key`='admin_email'",array($this->input["field_email"]));
}
$sql .= "UPDATE `{$this->db_prefix}options` SET `option_value`='".$this->db_escape("$this->path/wp-content/uploads")."' WHERE `option_name`='upload_path';\n";
$sql .= "UPDATE `{$this->db_prefix}options` SET `option_value`='".$this->db_escape($this->input["field_email"])."' WHERE `option_name`='admin_email';\n";
$sql .= "UPDATE `{$this->db_prefix}usermeta` SET `meta_value`='0' WHERE `meta_key`='default_password_nag' AND `user_id`='1';\n";
$sql .= "UPDATE `{$this->db_prefix}options` SET `option_value`='1' WHERE `option_name`='blog_public';\n";
// use twentyeleven theme
$sql .= "UPDATE `{$this->db_prefix}options` SET `option_value`='twentyfifteen' WHERE `option_name`='stylesheet' OR `option_name`='template';\n";
// use permalinks instead of query string
if ( !isset($this->env["has_apache"]) || $this->env["has_apache"] !== false || $this->env["has_nginx"] !== false )
{
$sql .= "UPDATE `{$this->db_prefix}options` SET `option_value`='".( $this->ds === "/" ? "/%category%/%postname%/" : "" )."' WHERE `option_name`='permalink_structure';\n";
}
$sql .= "INSERT INTO `{$this->db_prefix}options` (`option_name`, `option_value`) VALUES
('ftp_credentials', '".$this->db_escape(serialize(array( "hostname" => "localhost", "username" => $this->input["field_ftpuser"], "connection_type" => "ftp" )))."');\n";
//3.0 database version--set in SQL
//$this->db_query("UPDATE {$this->db_prefix}options SET option_value='15260' WHERE option_name='db_version'");
$this->write("install2.sql",$sql);
$this->db_import("install2.sql");
$this->rm("install2.sql");
$this->chmod(array(".htaccess","wp-config.php"),0666);
// to fix the upgrade screen after the first install:
$r = $this->fetch('wp-admin/upgrade.php?step=1', null, null, false);
//$this->write(".htinstall.log",$r);
// multisite upgrade patch
if ( $this->input["field_multisite"] === "yes" )
{
$this->cp("wp-admin/network/upgrade.php", "wp-admin/network/upgrade.php.bak");
$this->sr("wp-admin/network/upgrade.php",array(
"#require_once\( './admin.php' \);#" => "require( '../../wp-load.php' );set_time_limit(0);",
"#get_current_screen\(\)->add.+'';#sim" => "",
"#LIMIT ..n., 5#" => ""
));
$this->fetch("wp-admin/network/upgrade.php?action=upgrade", null, null, false);
sleep(5);
$this->mv("wp-admin/network/upgrade.php.bak", "wp-admin/network/upgrade.php");
}
#$this->write("wp-content/.htaccess","
#deny from all
#");
$this->write("wp-includes/.htaccess","
deny from all
allow from all
allow from all
");
//$this->sr("wp-admin/menu.php", "!(".preg_quote('$submenu[ \'index.php\' ][5] = array( __(\'My Sites\'), \'read\', \'my-sites.php\' );',"!").")!", "$1\n\$submenu[ 'index.php' ][6] = array( __('Manage Sites'), 'read', 'network/index.php' );");
$this->rm("readme.html");
#$this->addError('test');
}
}
?>