<?php
/*
MGB 0.6.x - OpenSource PHP and MySql Guestbook
Copyright (C) 2004 - 2011 Juergen Grueneisl - http://www.m-gb.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
// ================== //
// install.php - 0.6 //
// ================== //
//
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
// Show all errors but no warnings
error_reporting(E_ALL & ~E_NOTICE);
require ("includes/functions.inc.php");
if (file_exists("../includes/config.inc.php"))
{
include ("../includes/config.inc.php");
if (isset($mgb_installation_complete) AND (cleanstr($mgb_installation_complete) == TRUE))
{
echo "It seems that MGB has already been installed. Quitting. If not, try deleting ''config.inc.php'' in root/includes directory.";
die();
}
}
// start session
session_name("sid");
ini_set('url_rewriter.tags', '');
session_start();
if(SID != NULL) { $sid = "?".SID; } else { $sid = NULL; }
// load template
require ("includes/load_templates.inc.php");
require ("includes/config.inc.php");
// load main template
$page_body = $content_install_body;
$page_header = $content_install_header;
// set this to 1 if you want to ignore warnings
$ignore_warnings = 0;
// get mysql client info
$str = mysql_get_client_info();
if (preg_match_all("([0-9.]+)", $str, $matches)) $zahlen = $matches[0];
for($i = 0; $i < count($zahlen); $i++)
{
$version.= $zahlen[$i];
}
$mysql_version = substr($version,0,6);
if(isset($_POST['install_language']))
{
$_SESSION['install_language'] = $_POST['install_language'];
}
if(isset($_SESSION['install_language']))
{
require ("../language/".$_SESSION['install_language']."/lang_install.php");
require ("../language/".$_SESSION['install_language']."/settings.php");
if(!isset($_POST['step']))
{
$page_body = template("TEMPLATE_STEPS", $content_install_eula, $page_body);
$page_body = template("LANG_EULA_EXPL", $lang['eula_expl'], $page_body);
$page_body = template("LANG_EULA_AGREE", $lang['eula_agree'], $page_body);
$page_body = template("LANG_EULA_DISAGREE", $lang['eula_disagree'], $page_body);
$page_body = template("LANG_NEXT_STEP", $lang['next_step'], $page_body);
}
if(isset($_POST['step']) AND $_POST['step'] == 1)
{
if(isset($_POST['eula_agreement']) AND $_POST['eula_agreement'] == 1)
{
switch(version_compare('4.4.0', phpversion())) {
case -1: $img_php = "<img src=\"template/images/ok.png\" alt=\"OK\">";
break;
case 0: $img_php = "<img src=\"template/images/ok.png\" alt=\"OK\">";
break;
case 1: $img_php = "<img src=\"template/images/nok.png\" alt=\"NOT OK\">";
$error_php = 1;
break;
}
switch(version_compare('3.23', $mysql_version)) {
case -1: $img_mysql = "<img src=\"template/images/ok.png\" alt=\"OK\">";
break;
case 0: $img_mysql = "<img src=\"template/images/ok.png\" alt=\"OK\">";
break;
case 1: $img_mysql = "<img src=\"template/images/nok.png\" alt=\"NOT OK\">";
$error_mysql = 1;
break;
}
if(function_exists('imagegd2') OR function_exists('imagegd'))
{
$gd_exists_lang = $lang['yes'];
$img_gd = "<img src=\"template/images/ok.png\" alt=\"OK\">";
}
else
{
$gd_exists_lang = $lang['no'];
$img_gd = "<img src=\"template/images/warning.png\" alt=\"WARNING\">";
$error_gd = 1;
}
if(!file_exists("../includes/config.inc.php"))
{
$file = fopen("../includes/config.inc.php", "w");
fclose($file);
}
if(is_writable("../includes/config.inc.php"))
{
$cfg_writable_lang = $lang['yes'];
$img_cfg_writable = "<img src=\"template/images/ok.png\" alt=\"OK\">";
}
else
{
$cfg_writable_lang = $lang['no'];
$img_cfg_writable = "<img src=\"template/images/nok.png\" alt=\"NOT OK\">";
$error_writable = 1;
}
if(ini_get('register_globals') == 1)
{
$reg_globals_lang = $lang['active'];
$img_reg_globals = "<img src=\"template/images/warning.png\" alt=\"WARNING\">";
$error_reg_globals = 1;
}
else
{
$reg_globals_lang = $lang['inactive'];
$img_reg_globals = "<img src=\"template/images/ok.png\" alt=\"OK\">";
}
$page_body = template("TEMPLATE_STEPS", $content_install_step1, $page_body);
$page_body = template("TEMPLATE_WARNINGS", $content_install_warnings, $page_body);
if(!isset($errorcode)) { $errorcode = NULL; }
if(isset($error_gd)) { $page_body = template("ERROR_3", "<span class=\"install_error_low\">- ".$lang['error_3']."</span><br>", $page_body); $show_next_step = 1; $errorcode++; } else { $page_body = template("ERROR_3", "", $page_body); }
if(isset($error_reg_globals)) { $page_body = template("ERROR_5", "<span class=\"install_error_low\">- ".$lang['error_5']."</span><br>", $page_body); $show_next_step = 1; $errorcode++; } else { $page_body = template("ERROR_5", "", $page_body); }
if(isset($error_php)) { $page_body = template("ERROR_1", "<span class=\"install_error_critical\">- ".$lang['error_1']."</span><br>", $page_body); $show_next_step = 0; $errorcode++; } else { $page_body = template("ERROR_1", "", $page_body); }
if(isset($error_mysql)) { $page_body = template("ERROR_2", "<span class=\"install_error_critical\">- ".$lang['error_2']."</span><br>", $page_body); $show_next_step = 0; $errorcode++; } else { $page_body = template("ERROR_2", "", $page_body); }
if(isset($error_writable)) { $page_body = template("ERROR_4", "<span class=\"install_error_critical\">- ".$lang['error_4']."</span><br>", $page_body); $show_next_step = 0; $errorcode++; } else { $page_body = template("ERROR_4", "", $page_body); }
if(!isset($errorcode)) { $page_body = template("NO_ERROR", "<span class=\"install_no_error\">- ".$lang['no_error']."</span><br>", $page_body); $show_next_step = 1; } else { $page_body = template("NO_ERROR", "", $page_body); }
$page_body = template("ERROR", "", $page_body);
$page_body = template("LANG_THANKS", $lang['thanks'], $page_body);
$page_body = template("LANG_EXPL_STEP1", $lang['expl_step1'], $page_body);
$page_body = template("LANG_SERVER", /* $lang['srvcfg_server'] */ " ", $page_body);
$page_body = template("LANG_PHP", $lang['srvcfg_phpversion'], $page_body);
$page_body = template("LANG_MYSQL", $lang['srvcfg_mysqlversion'], $page_body);
$page_body = template("LANG_GD", $lang['srvcfg_gd'], $page_body);
$page_body = template("LANG_CFG_WRITABLE", $lang['srvcfg_writable'], $page_body);
$page_body = template("LANG_REG_GLOBALS", $lang['srvcfg_reg_globals'], $page_body);
$page_body = template("SRVCFG_SERVER", /* $_SERVER['SERVER_SOFTWARE'] */ " ", $page_body);
$page_body = template("SRVCFG_PHP", phpversion(), $page_body);
$page_body = template("SRVCFG_MYSQL", $mysql_version, $page_body);
$page_body = template("SRVCFG_GD", $gd_exists_lang, $page_body);
$page_body = template("SRVCFG_CFG_WRITABLE", $cfg_writable_lang, $page_body);
$page_body = template("SRVCFG_REG_GLOBALS", $reg_globals_lang, $page_body);
$page_body = template("IMG_PHP", $img_php, $page_body);
$page_body = template("IMG_MYSQL", $img_mysql, $page_body);
$page_body = template("IMG_GD", $img_gd, $page_body);
$page_body = template("IMG_CFG_WRITABLE", $img_cfg_writable, $page_body);
$page_body = template("IMG_REG_GLOBALS", $img_reg_globals, $page_body);
if(isset($ignore_warnings) AND $ignore_warnings == 1) { $show_next_step = 1; }
if(isset($show_next_step) AND $show_next_step == 1)
{
$next_step = "<form action=\"install.php".$sid."\" method=\"post\">\n";
$next_step .= "<input type=\"hidden\" name=\"step\" value=\"2\">\n";
$next_step .= "<input type=\"submit\" class=\"install_button\" name=\"next\" value=\"{LANG_NEXT_STEP}\">\n";
$next_step .= "</form>";
$page_body = template("NEXT_STEP", $next_step, $page_body);
}
else
{
$page_body = template("NEXT_STEP", "", $page_body);
}
}
else
{
// EULA was not accpted, destroy session
session_unset();
session_destroy();
$_SESSION = array();
}
}
if(isset($_POST['step']) AND $_POST['step'] == 2)
{
$page_body = template("TEMPLATE_STEPS", $content_install_step2, $page_body);
$page_body = template("LANG_EXPL_STEP2", $lang['expl_step2'], $page_body);
$page_body = template("LANG_DB_TITLE", $lang['db_title'], $page_body);
$page_body = template("LANG_DB_HOSTNAME", $lang['db_hostname'], $page_body);
$page_body = template("LANG_DB_DBNAME", $lang['db_dbname'], $page_body);
$page_body = template("LANG_DB_USERNAME", $lang['db_username'], $page_body);
$page_body = template("LANG_DB_PASSWORD", $lang['db_password'], $page_body);
$page_body = template("LANG_DB_PREFIX", $lang['db_prefix'], $page_body);
$page_body = template("LANG_ADMIN_TITLE", $lang['admin_title'], $page_body);
$page_body = template("LANG_ADMIN_NAME", $lang['admin_name'], $page_body);
$page_body = template("LANG_ADMIN_USERNAME", $lang['admin_username'], $page_body);
$page_body = template("LANG_ADMIN_PASSWORD", $lang['admin_password'], $page_body);
$page_body = template("LANG_ADMIN_EMAIL", $lang['admin_email'], $page_body);
$page_body = template("LANG_ADMIN_GBEMAIL", $lang['admin_gbemail'], $page_body);
if(!isset($_POST['sent']))
{
$page_body = template("POST_DB_HOSTNAME", $_SERVER["SERVER_NAME"], $page_body);
$page_body = template("POST_DB_DBNAME", "", $page_body);
$page_body = template("POST_DB_USERNAME", "", $page_body);
$page_body = template("POST_DB_PASSWORD", "", $page_body);
$page_body = template("POST_DB_PREFIX", "mgb_", $page_body);
$page_body = template("POST_ADMIN_NAME", $lang['post_admin_name'], $page_body);
$page_body = template("POST_ADMIN_USERNAME", $lang['post_admin_username'], $page_body);
$page_body = template("POST_ADMIN_PASSWORD", "", $page_body);
$page_body = template("POST_ADMIN_EMAIL", "", $page_body);
$page_body = template("POST_ADMIN_GBEMAIL", "noreply@".$_SERVER["SERVER_NAME"], $page_body);
$page_body = template("TEMPLATE_WARNINGS", "", $page_body);
$page_body = template("VALUE_STEP", 2, $page_body);
$page_body = template("VALUE_SENT", 1, $page_body);
}
elseif(isset($_POST['sent']) AND ($_POST['sent'] == 1))
{
$_POST['db_hostname'] = cleanstr($_POST['db_hostname']);
$_POST['db_dbname'] = cleanstr($_POST['db_dbname']);
$_POST['db_username'] = cleanstr($_POST['db_username']);
$_POST['db_password'] = cleanstr($_POST['db_password']);
$_POST['db_prefix'] = cleanstr($_POST['db_prefix']);
$_POST['admin_name'] = cleanstr($_POST['admin_name']);
$_POST['admin_username'] = cleanstr($_POST['admin_username']);
$_POST['admin_password'] = cleanstr($_POST['admin_password']);
$_POST['admin_email'] = cleanstr($_POST['admin_email']);
$_POST['admin_gbemail'] = cleanstr($_POST['admin_gbemail']);
$page_body = template("POST_DB_HOSTNAME", $_POST['db_hostname'], $page_body);
$page_body = template("POST_DB_DBNAME", $_POST['db_dbname'], $page_body);
$page_body = template("POST_DB_USERNAME", $_POST['db_username'], $page_body);
$page_body = template("POST_DB_PASSWORD", $_POST['db_password'], $page_body);
$page_body = template("POST_DB_PREFIX", $_POST['db_prefix'], $page_body);
$page_body = template("POST_ADMIN_NAME", $_POST['admin_name'], $page_body);
$page_body = template("POST_ADMIN_USERNAME", $_POST['admin_username'], $page_body);
$page_body = template("POST_ADMIN_PASSWORD", $_POST['admin_password'], $page_body);
$page_body = template("POST_ADMIN_EMAIL", $_POST['admin_email'], $page_body);
$page_body = template("POST_ADMIN_GBEMAIL", $_POST['admin_gbemail'], $page_body);
if(!empty($_POST['db_hostname']) AND !empty($_POST['db_dbname']) AND !empty($_POST['db_username']) AND !empty($_POST['db_prefix']) AND !empty($_POST['admin_name']) AND !empty($_POST['admin_username']) AND !empty($_POST['admin_password']) AND !empty($_POST['admin_email']) AND !empty($_POST['admin_gbemail']))
{
// check connection to database
$link = @mysql_connect($_POST['db_hostname'], $_POST['db_username'], $_POST['db_password']);
$link = @mysql_select_db($_POST['db_dbname'], $link);
if(isset($link) AND ($link == TRUE))
{
$sql = "SELECT * FROM ".$_POST['db_prefix']."settings";
$link = @mysql_connect($_POST['db_hostname'], $_POST['db_username'], $_POST['db_password']) or die ("(install.php) Error, line 281: ".mysql_error());
@mysql_select_db($_POST['db_dbname'], $link) or die ("(install.php) Error, line 282: ".mysql_error());
if(@mysql_query($sql, $link) == FALSE)
{
if(check_mail($_POST['admin_email']) AND check_mail($_POST['admin_gbemail']))
{
if(check_prefix($_POST['db_prefix']))
{
$page_body = template("TEMPLATE_WARNINGS", $content_install_warnings, $page_body);
$page_body = template("ERROR", "", $page_body);
$page_body = template("NO_ERROR", "<span class=\"install_no_error\">- ".$lang['no_error']."</span><br>", $page_body);
$page_body = template("VALUE_STEP", 3, $page_body);
$page_body = template("VALUE_SENT", 2, $page_body);
$_SESSION['db_hostname'] = $_POST['db_hostname'];
$_SESSION['db_dbname'] = $_POST['db_dbname'];
$_SESSION['db_username'] = $_POST['db_username'];
$_SESSION['db_password'] = $_POST['db_password'];
$_SESSION['db_prefix'] = $_POST['db_prefix'];
$_SESSION['admin_name'] = $_POST['admin_name'];
$_SESSION['admin_username'] = $_POST['admin_username'];
$_SESSION['admin_password'] = $_POST['admin_password'];
$_SESSION['admin_email'] = $_POST['admin_email'];
$_SESSION['admin_gbemail'] = $_POST['admin_gbemail'];
}
else
{
$page_body = template("TEMPLATE_WARNINGS", $content_install_warnings, $page_body);
$page_body = template("ERROR", "<span class=\"install_error_critical\">- ".$lang['error_5_step2']."</span><br>", $page_body);
$page_body = template("NO_ERROR", "", $page_body);
$page_body = template("VALUE_STEP", 2, $page_body);
$page_body = template("VALUE_SENT", 1, $page_body);
}
}
else
{
$page_body = template("TEMPLATE_WARNINGS", $content_install_warnings, $page_body);
$page_body = template("ERROR", "<span class=\"install_error_critical\">- ".$lang['error_2_step2']."</span><br>", $page_body);
$page_body = template("NO_ERROR", "", $page_body);
$page_body = template("VALUE_STEP", 2, $page_body);
$page_body = template("VALUE_SENT", 1, $page_body);
}
}
else
{
$page_body = template("TEMPLATE_WARNINGS", $content_install_warnings, $page_body);
$page_body = template("ERROR", "<span class=\"install_error_critical\">- ".$lang['error_4_step2']."</span><br>", $page_body);
$page_body = template("NO_ERROR", "", $page_body);
$page_body = template("VALUE_STEP", 2, $page_body);
$page_body = template("VALUE_SENT", 1, $page_body);
}
}
else
{
$page_body = template("TEMPLATE_WARNINGS", $content_install_warnings, $page_body);
$page_body = template("ERROR", "<span class=\"install_error_critical\">- ".$lang['error_3_step2']."</span><br>", $page_body);
$page_body = template("NO_ERROR", "", $page_body);
$page_body = template("VALUE_STEP", 2, $page_body);
$page_body = template("VALUE_SENT", 1, $page_body);
}
}
else
{
$page_body = template("TEMPLATE_WARNINGS", $content_install_warnings, $page_body);
$page_body = template("ERROR", "<span class=\"install_error_critical\">- ".$lang['error_1_step2']."</span><br>", $page_body);
$page_body = template("NO_ERROR", "", $page_body);
$page_body = template("VALUE_STEP", 2, $page_body);
$page_body = template("VALUE_SENT", 1, $page_body);
}
$page_body = template("ERROR_1", "", $page_body);
$page_body = template("ERROR_2", "", $page_body);
$page_body = template("ERROR_3", "", $page_body);
$page_body = template("ERROR_4", "", $page_body);
$page_body = template("ERROR_5", "", $page_body);
}
}
elseif(isset($_POST['step']) AND ($_POST['step'] == 3))
{
require ("mysql.php");
if($success == $to)
{
$config_file = "<?"."php\n\n";
$config_file .= "\t"."// THIS FILE WAS AUTOMATICALLY GENERATED BY MGB\n";
$config_file .= "\t"."// DO NOT MODIFY IT!\n\n";
$config_file .= "\t"."// Database settings\n";
$config_file .= "\t"."\$db = array();\n\n";
$config_file .= "\t"."\$db['hostname'] = '".$_SESSION['db_hostname']."';\n";
$config_file .= "\t"."\$db['dbname'] = '".$_SESSION['db_dbname']."';\n";
$config_file .= "\t"."\$db['username'] = '".$_SESSION['db_username']."';\n";
$config_file .= "\t"."\$db['password'] = '".$_SESSION['db_password']."';\n";
$config_file .= "\t"."\$db['prefix'] = '".$_SESSION['db_prefix']."';\n\n";
$config_file .= "\t"."\$mgb_installation_complete = TRUE;\n";
$config_file .= "?>";
if(write_config("../includes/config.inc.php", $config_file) === TRUE)
{
$success++;
}
else
{
echo "<span class='install_error_critical'>ERROR: Config could not be written!</span><br><br>";
}
}
$to = $to + 1;
if($success == $to)
{
$page_body = template("TEMPLATE_STEPS", $content_install_step3, $page_body);
$page_body = template("LANG_EXPL_STEP3", $lang['expl_step3'], $page_body);
$page_body = template("LANG_TO_ADMINISTRATION", $lang['to_administration'], $page_body);
$page_body = template("LANG_IMPORT", $lang['import'], $page_body);
$page_body = template("LANG_TO_GUESTBOOK", $lang['to_guestbook'], $page_body);
// destroy session
session_unset();
session_destroy();
$_SESSION = array();
}
else
{
$page_body = template("TEMPLATE_STEPS", $content_install_step3_fail, $page_body);
$page_body = template("LANG_EXPL_STEP3_FAIL", $lang['expl_step3_fail'], $page_body);
$page_body = template("LANG_TO_INSTALL", $lang['to_install'], $page_body);
// destroy session
session_unset();
session_destroy();
$_SESSION = array();
}
}
}
if(!isset($_SESSION['install_language']))
{
// choose language for installation
$path = "../language/";
foreach (glob($path."*") as $filename)
{
if ($filename != "." && $filename != "..")
{
if(is_dir($filename))
{
if(!isset($install_option_language)) { $install_option_language = ""; }
include ($filename."/settings.php");
$install_option_language .= "<option ";
if(basename($filename) == "lang_german_utf8")
{
$install_option_language .= "selected ";
}
$install_option_language .= "value=\"".$filename."\">".$language."</option>";
}
}
}
$language_short = "en";
$lang['h_title'] = "Welcome to the installation of MGB OpenSource Guestbook ".MGB_VERSION;
$charset = "utf-8";
$lang['title'] = "Installation of MGB OpenSource Guestbook ".MGB_VERSION;
$lang['next_step'] = "» Next step »";
$page_body = template("TEMPLATE_STEPS", $content_install_choose_language, $page_body);
$page_body = template("INSTALL_OPTION_LANGUAGE", $install_option_language, $page_body);
}
$page_header = template("H_LANGUAGE_SHORT", $language_short, $page_header);
$page_header = template("H_INSTALL_TITLE", $lang['h_title'], $page_header);
$page_header = template("H_CHARSET", $charset, $page_header);
$page_body = template("TEMPLATE_HEADER", $page_header, $page_body);
$page_body = template("TITLE", $lang['title'], $page_body);
$page_body = template("INSTALL_FORM_ACTION", "install.php".$sid, $page_body);
$page_body = template("LANG_NEXT_STEP", $lang['next_step'], $page_body);
$page_body = template("TEMPLATE_COPYRIGHT", $content_install_copyright, $page_body);
$page_body = template("TEMPLATE_FOOTER", $content_install_footer, $page_body);
$page_body = template("COPYRIGHT_DATE", date("Y"), $page_body);
$page_body = template("MGB_VERSION", MGB_VERSION, $page_body);
echo $page_body;
?>