<?PHP

/* ====================
Seditio - Website engine
Copyright Neocrome & Seditio Team
http://www.neocrome.net
http://www.seditio.org
[BEGIN_SED]
File=install.php
Version=173
Updated=2012-may-17
Type=Core
Author=Neocrome
Description=Seditio auto-installation
[END_SED]
==================== */

if ( !defined('SED_CODE') || !defined('SED_INSTALL') ) { die('Wrong URL.'); }

/* === Select Installation lang === */

session_start();
$langinstall = sed_import('langinstall','P','TXT',10);
if (!empty($langinstall)) { $_SESSION['ilang'] = $langinstall;
} elseif (isset($_SESSION['ilang'])) { $langinstall = $_SESSION['ilang'];
} else { $langinstall = "en"; }

require ('system/install/lang/'.$langinstall.'/install.'.$langinstall.'.lang.php');

/* === === === */


require('system/install/install.setup.php');

@set_magic_quotes_runtime(0);

mb_internal_encoding('UTF-8');

unset($res, $cfg_data, $step);
$m = sed_import('m','G','ALP',8);

// ------------------------------------

$disp_header = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">';
$disp_header .= '<html xmlns="http://www.w3.org/1999/xhtml">';
$disp_header .= '<head>';
$disp_header .= '<meta http-equiv="content-type" content="text/html; charset=UTF-8" />';
$disp_header .= '<meta name="description" content="'.$L['install_title'].'" />';
$disp_header .= "<script type=\"text/javascript\">  <!--
 function toggleblock(id)
	{
	var bl = document.getElementById(id);
	if(bl.style.display == 'none')
		{ bl.style.display = ''; }
	else
		{ bl.style.display = 'none'; }
	} 
  //-->
</script>";
$disp_header .= '<style type="text/css">';
$disp_header .= '<!-- ';
$disp_header .= 'body 		{ background-color: #FFFFFF; padding:24px; text-align:center; margin:0; ';
$disp_header .= 'font-family: Segoe UI, Verdana, Arial, Helvetica; color: #101010; font-size: 13px; }';
$disp_header .= '#container	{ width:800px; margin:0 auto 0 auto; padding:8px 20px 12px 20px; text-align:left; background-color: #F0F0F0; } ';
$disp_header .= 'a 			{ text-decoration: none; color: #306797; }';
$disp_header .= 'a:hover 	{ text-decoration: none; color: #000000; background-color: #AFCCE5; }';
$disp_header .= '.no 	 	{ color: #c31d1d; }';
$disp_header .= '.yes 	 	{ color: #2d992d; }';
$disp_header .= 'table.cells 	{ width:100%; margin:0; padding:0; }';
$disp_header .= 'table.cells td	{ padding:5px; background-color:#E6E6E6; margin:0; }';
$disp_header .= '.coltop		{ text-align:center; font-size:95%;  background-color:#C9C9C9!important; color:#707070; }';
$disp_header .= '.desc 		{ font-size:90%; padding:3px; color:#646464; }';
$disp_header .= '-->';
$disp_header .= '</style>';
$disp_header .= '<title>'.$L['install_title'].'</title>';
$disp_header .= '</head>';
$disp_header .= '<body>';
$disp_header .= '<div id="container">';
$disp_footer = '</div><br /></div><br /></body><br /></html>';

// -----------------------------------------------

switch($m)
	{
	case 'config':

	$step = 3;

	// ---------------------------------------

	$res .= "<h2>".$L['install_build_config']." <strong>".$cfg['config_file']."</strong>...</h2>";

	$m = sed_import('m','G','ALP',24);
	$mysqlhost = sed_import('mysqlhost','P','TXT',128);
	$mysqluser = sed_import('mysqluser','P','TXT',128);
	$mysqlpassword = sed_import('mysqlpassword','P','TXT',128);
	$mysqldb = sed_import('mysqldb','P','TXT',128);
	$sqldb = sed_import('sqldb','P','TXT',10);
	
	$md_site_secret = md5(sed_unique(16)); // New sed171
	$cfg['site_secret'] = $md_site_secret;

	$sqldbprefix = sed_import('sqldbprefix','P','TXT',16);
	$defaultskin = sed_import('defaultskin','P','TXT',32);
	$defaultlang = sed_import('defaultlang','P','ALP',2);
	
	$textmode = sed_import('textmode','P','ALP', 6);

	require ('system/install/install.config.php');

	$cfg_isup = TRUE;

	if (!($fp = @fopen($cfg['config_file'], 'w')))
		{ $cfg_isup = FALSE; }

	if (!(@fwrite($fp, $cfg_data)))
		{ $cfg_isup = FALSE; }

	@fclose($fp);

	if ($cfg_isup)
		{
		$cfg_size = filesize($cfg['config_file']);
		$res .= "Size of the file : ".$cfg_size." bytes.<br />";
		$res .= "<span class=\"yes\">".$L['install_looks_chmod']."</span>";
		@chmod($cfg['config_file'] ,0444);

		// ---------------------------------------

		$res .= "<h2>".$L['install_setting_mysql']."</h2>";

		$res .= $L['install_creating_mysql']."<br />";
    
		require('system/database.'.$cfg['sqldb'].'.php');
		$connection_id = sed_sql_connect($mysqlhost, $mysqluser, $mysqlpassword, $mysqldb);
		$cfg['mysqldb'] = $sqldbprefix;
		sed_sql_set_charset($connection_id, 'utf8');
		require ('system/install/install.database.php');

		define('SED_ADMIN',TRUE);
		unset($query);

		$res .= $L['install_presettings']."<br />";

		require_once('system/functions.admin.php');
		foreach($cfgmap as $i => $line)
			{ $query[] = "('core','".$line[0]."','".$line[1]."','".$line[2]."',".(int)$line[3].",'".$line[4]."')"; }
		$query = implode(",", $query);

		$sql = sed_sql_query("INSERT INTO ".$sqldbprefix."config (config_owner, config_cat, config_order, config_name, config_type, config_value) VALUES ".$query);

		$res .= $L['install_adding_administrator']."<br />";

		$rusername = sed_import('admin_name','P','TXT', 24, TRUE);
		$rpassword = sed_import('admin_pass','P','TXT',16);
		$ruseremail = sed_import('admin_email','P','TXT',64, TRUE);
		$rcountry = sed_import('admin_country','P','TXT');
    
		$defgroup = 5;
		
		$mdsalt = sed_unique(16); // New sed172    
		
		$mdpass = sed_hash($rpassword, 1, $mdsalt);  // New sed172

		$mdpass_secret = md5(sed_unique(16)); // New sed171
		
		$ruserbirthdate = 0;
		$rtimezone = $cfg['defaulttimezone'];
		$validationkey = md5(microtime());

		$sql = sed_sql_query("INSERT INTO ".$sqldbprefix."users
			(user_name,
			user_password,
			user_salt,
			user_secret,
			user_passtype,
			user_maingrp,
			user_country,
			user_location,
			user_timezone,
			user_occupation,
			user_text,
			user_email,
			user_hideemail,
			user_pmnotify,
			user_skin,
			user_lang,
			user_regdate,
			user_logcount,
			user_lostpass,
			user_gender,
			user_birthdate,
			user_icq,
			user_irc,
			user_msn,
			user_website,
			user_extra1,
			user_extra2,
			user_extra3,
			user_extra4,
			user_extra5,
			user_extra6,
			user_extra7,
			user_extra8,
			user_extra9,
			user_lastip)
			VALUES
			('".sed_sql_prep($rusername)."',
			'$mdpass',
			'$mdsalt',
			'$mdpass_secret',
			1,			
			".(int)$defgroup.",
			'".sed_sql_prep($rcountry)."',
			'',
			'".sed_sql_prep($rtimezone)."',
			'',
			'',
			'".sed_sql_prep($ruseremail)."',
			1,
			0,
			'".$defaultskin."',
			'".$defaultlang."',
			".(int)time().",
			0,
			'$validationkey',
			'',
			0,
			'', '', '', '', '', '', '', '',	'', '', '', '', '', '".$usr['ip']."')");

		$userid = sed_sql_insertid();
		$sql = sed_sql_query("INSERT INTO ".$sqldbprefix."groups_users (gru_userid, gru_groupid) VALUES (".(int)$userid.", ".(int)$defgroup.")");

		unset($mysqlhost, $mysqluser, $mysqlpassword, $mysqldb);

		$res .= "<span class=\"yes\">".$L['install_done']."</span>";

    $res .= "<form name=\"install\" action=\"install.php?m=plugins\" method=\"post\">";
    $res .= "<input type=\"submit\" style=\"margin-top:32px;\" value=\"".$L['install_contine_toplugins']."\">";
    $res .= "</form>";

		}
	else
		{
		$res .= "<span class=\"no\">".$L['install_error_notwrite']."</span>";
		}

	break;

// -----------------------------------------------

	case 'plugins':
  
  $step = 4;
  
  $res .= "<h3>".$L['install_plugins']." :<h3>";
  $res .= $L['install_optional_plugins'];
  $res .= "<form name=\"install\" action=\"install.php?m=plinst\" method=\"post\">";
  $res .= "<table class=\"cells\">";
  $res .= "<tr><td colspan=\"2\" style=\"width:80%;\" class=\"coltop\">".$L['install_plugins']."</td>";
  $res .= "<td style=\"width:10%;\" class=\"coltop\">".$L['install_install']."</td>";
  $res .= "</tr>";  

  $handle=opendir("plugins");
	while ($f = readdir($handle))
		{
		if (!is_file($f) && $f!='.' && $f!='..' && $f!='code')
			{ $plugins[] = $f; }
		}
	closedir($handle);
	sort($plugins);
  
  foreach($plugins as $k => $v)
	 {
	$extplugin_info = "plugins/".$v."/".$v.".setup.php";
	$info = sed_infoget($extplugin_info, 'SED_EXTPLUGIN');
	$checked = ($info['Installer_skip']==1) ? '' : "checked=\"checked\"";
	$disabled = '';
	 
	$checked = ($v=='syntaxhighlight' && $cfg['textmode']=='bbcode') ? '' : $checked;
	$checked = ($v=='jevix' && $cfg['textmode']=='bbcode') ? '' : $checked;
	$checked = ($v=='ckeditor' && $cfg['textmode']=='bbcode') ? '' : $checked;
	
	$checked = ($v=='textboxer2' && $cfg['textmode']=='html') ? '' : $checked;
	$checked = ($v=='parserman' && $cfg['textmode']=='html') ? '' : $checked;
       
    $disabled = (!empty($checked) || $v=='ipsearch') ? '' : "disabled = \"disabled\"";
	
	$res .= "<tr><td style=\"width:6%; text-align:center;\">";
    $res .= sed_plugin_icon($v);  
    $res .= "</td><td><strong>".$info['Name']."</strong><br /><spab class=\"desc\">".$info['Description']."</span></td>";
    $res .= "<td style=\"width:6%; text-align:center;\">";
  	$res .= "<input type=\"checkbox\" class=\"checkbox\" name=\"pl[]\" value=\"".$v."\" ".$checked." ".$disabled." />";
    $res .= "</td></tr>";
    }
  
	$res .= "</table>";  
	$res .= "<input type=\"submit\" style=\"margin-top:32px;\" value=\"".$L['install_now']."\">";
	$res .= "</form>";

	break;

// -----------------------------------------------

	case 'plinst':

  $step = 5;

  $pl = sed_import('pl', 'P', 'ARR');
  $res .= "<h3>".$L['install_installing_plugins']."</h3>";
  $j = 0;
  unset($log);

  if (!$sed_groups )
	{
	$sql = sed_sql_query("SELECT * FROM $db_groups WHERE grp_disabled=0 ORDER BY grp_level DESC");

	if (sed_sql_numrows($sql)>0)
		{
		while ($row = sed_sql_fetchassoc($sql))
			{
			$sed_groups[$row['grp_id']] = array (
				'id' => $row['grp_id'],
				'alias' => $row['grp_alias'],
				'level' => $row['grp_level'],
   				'disabled' => $row['grp_disabled'],
   				'hidden' => $row['grp_hidden'],
				'state' => $row['grp_state'],
				'title' => sed_cc($row['grp_title']),
				'desc' => sed_cc($row['grp_desc']),
				'icon' => $row['grp_icon'],
				'pfs_maxfile' => $row['grp_pfs_maxfile'],
				'pfs_maxtotal' => $row['grp_pfs_maxtotal'],
				'ownerid' => $row['grp_ownerid']
					);
			}
		}
  }
  
  foreach($pl as $k => $v)
		{
		$j++;
		$extplugin_info = "plugins/".$v."/".$v.".setup.php";
	  $info = sed_infoget($extplugin_info, 'SED_EXTPLUGIN');
    $res .= "- Installing : ".$info['Name']."<br />";
    $log .= sed_plugin_install($v);
    }

  $res .= "<br />".$j." ".$L['install_installed_plugins'];
  $res .= "<a onclick=\"return toggleblock('logf')\" href=\"#\">".$L['install_display_log']."</a>).<br />";
  $res .= "<div name=\"log\" id=\"logf\" style=\"display:none;\" >";
  $res .= $log."</div>";

  sed_stat_create('installed', 1);
  
  $res .= "<form name=\"install\" action=\"install.php?m=home\" method=\"post\">";
	$res .= "<input type=\"submit\" style=\"margin-top:32px;\" value=\"".$L['install_contine_homepage']."\">";
	$res .= "</form>";
  
	break;

// -----------------------------------------------

	case 'home':

	header("Location: index.php");
	exit;

	break;

// -----------------------------------------------

	case 'error':

	$res .= "<h2>".$L['install_error']."</h2>";
	$res .= "<div class=\"no\" style=\"text-align:center; padding:32px;\">";
	$res .= $L['install_wrong_manual'];
	$res .= "</div>";

	break;

// -----------------------------------------------

	case 'param':

	$step = 2;



	$res .= "<form name=\"install\" action=\"install.php?m=config\" method=\"post\">";

	$res .= "<h3>".$L['install_database_setup']."</h3>";

	$res .= "<table>";
	$res .= "<tr><td style=\"width:172px;\">".$L['install_database_hosturl']."</td><td colspan=\"2\">";
	$res .= "<input type=\"text\" name=\"mysqlhost\" size=\"32\" value=\"localhost\" maxlength=\"128\" />";
	$res .= " (".$L['install_always_localhost'].")</td></tr>";
	$res .= "<tr><td style=\"width:172px;\">".$L['install_database_user']."</td><td colspan=\"2\">";
	$res .= "<input type=\"text\" name=\"mysqluser\" size=\"32\" value=\"root\" maxlength=\"128\" />";
	$res .= " (".$L['install_see_yourhosting'].")</td></tr>";
	$res .= "<tr><td style=\"width:172px;\">".$L['install_database_password']."</td><td colspan=\"2\"><input type=\"text\" name=\"mysqlpassword\" size=\"32\" value=\"\" maxlength=\"128\" />";
	$res .= " (".$L['install_see_yourhosting'].")</td></tr>";
	$res .= "<tr><td style=\"width:172px;\">".$L['install_database_name']."</td><td colspan=\"2\">";
	$res .= "<input type=\"text\" name=\"mysqldb\" size=\"32\" value=\"\" maxlength=\"128\" />";
	$res .= " (".$L['install_see_yourhosting'].")</td></tr>";
	
	$res .= "<tr><td style=\"width:172px;\">".$L['install_database_tableprefix']."</td><td colspan=\"2\">";
	$res .= "<input type=\"text\" name=\"sqldbprefix\" size=\"32\" value=\"sed_\" maxlength=\"16\" />";
	$res .= " (".$L['install_seditio_already'].")</td></tr>";
	
	$res .= "<tr><td style=\"width:172px;\">".$L['install_mysql_connector']."</td><td colspan=\"2\">";
	
	if ((extension_loaded('mysql')) && (extension_loaded('mysqli'))) { $param_value = "mysql,mysqli"; $cheked = 'mysqli'; }
	elseif (extension_loaded('mysqli')) { $param_value = "mysqli"; $cheked = 'mysqli'; } else { $param_value = "mysql"; $cheked = 'mysql'; }
	
	$res .= sed_selectbox($cheked, 'sqldb', $param_value, false);
	$res .= " (".$L['install_mysql_preffered'].")</td></tr>";
	
	$res .= "</table>";	
	
	$res .= "<h3>".$L['install_input_mode']."</h3>";

	$res .= "<table style=\"width:100%;\">";	

  $res .= "<tr><td><td style=\"vertical-align:top;\"><input type=\"radio\" name=\"textmode\" value=\"html\" checked=\"checked\">";
  $res .= "</td><td style=\"width:95%;\">".$L['install_html_mode'];
  $res .= "</td></tr>";

  $res .= "<tr><td><td style=\"vertical-align:top;\"><input type=\"radio\" name=\"textmode\" value=\"bbcode\" >";
  $res .= "</td><td style=\"width:95%;\">".$L['install_bbcode_mode'];
  $res .= "</td></tr>";

  $res .= "</table>";
 
	$res .= "<h3>".$L['install_skinandlang']."</h3>";
	
	$res .= "<table style=\"width:100%;\">";	

	$res .= "<tr><td style=\"width:172px; vertical-align:top;\">".$L['install_default_skin']."</td><td  style=\"vertical-align:top;\">";
	$res .= sed_radiobox_skin($cfg['default_skin'], 'defaultskin')."</td></tr>";
	$res .= "<tr><td style=\"width:96px;\">".$L['install_default_lang']."</td><td>";
	$res .= sed_selectbox_lang('', 'defaultlang')."</td></tr>";

	$res .= "</table>";

	$res .= "<h3>".$L['install_admin_account']."</h3>";	

	$res .= "<table style=\"width:100%;\">";	
	$res .= "<tr><td style=\"width:172px;\">".$L['install_account_name']."</td>";
	$res .= "<td><input type=\"text\" name=\"admin_name\" size=\"32\" value=\"\" maxlength=\"128\" /> (".$L['install_ownaccount_name'].")</td></tr>";
	$res .= "<tr><td style=\"width:172px;\">".$L['install_password']."</td>";
	$res .= "<td><input type=\"text\" name=\"admin_pass\" size=\"32\" value=\"\" maxlength=\"128\" /> (".$L['install_least8chars'].")</td></tr>";
	$res .= "<tr><td style=\"width:172px;\">".$L['install_email']."</td>";
	$res .= "<td><input type=\"text\" name=\"admin_email\" size=\"32\" value=\"\" maxlength=\"128\" /> (".$L['install_doublecheck'].")</td></tr>";
	$res .= "<tr><td style=\"width:172px;\">".$L['install_country']."</td>";
	$res .= "<td>".sed_selectbox_countries($cfg['defaultcountry'], 'admin_country')."</td></tr>";
	$res .= "<tr><td colspan=\"2\" style=\"padding-top:32px; text-align:center;\"><input type=\"submit\" value=\"".$L['install_validate']."\"></td></tr>";
	$res .= "</table>";
	
	$res .= "</form>";

	break;

// -----------------------------------------------

	case 'onestep': 

	$step = 1;

	$res .= "<h2>".$L['install_auto_installer']."</h2>";

	$res .= $L['install_create_configfile'];

	$res .= "<table style=\"width:100%; margin-top:8px;\">";
	$res .= "<tr><td style=\"width:50%px; vertical-align:top;\">";

	$res .= "<table style=\"width:100%;\">";
	foreach ($rwfolders as $i => $j)
		{
		$res .= "<tr><td style=\"width:172px;\">".$L['install_folder']." <strong>$j</strong> :</td><td style=\"padding-right:16px;\">";
		if (file_exists($j))
			{ $res .= (is_writable($j)) ? '<span class="yes">'.$L['install_writable'].'</span>' : '<span class="no">'.$L['install_not_writable'].'</span>'; }
		else
			{ $res .= '<span class="no">'.$L['install_not_found'].'</span>'; }
		$res .= "</td></tr>";
		}
	$res .= "</table width:100%; >";

	$res .= "</td><td style=\"width:50%px; vertical-align:top;\">";

	$res .= "<table style=\"width:100%;\">";
	$res .= "<tr><td style=\"width:150px;\">".$L['install_file']." <strong>datas/config.php</strong> :</td><td>";

	if (file_exists($cfg['config_file']))
		{ $res .= (is_writable($cfg['config_file'])) ? '<span class="yes">'.$L['install_found_writable'].'</span>' : '<span class="no">'.$L['install_found_notwritable'].'</span>'; }
	else
		{ $res .= (is_writable($cfg['data_root'])) ? '<span class="yes">'.$L['install_notfound_folderwritable'].'</span>' : '<span class="no">'.$L['install_notfound_foldernotwritable'].'</span>'; }
	$res .= "</td></tr>";

	$res .= "<tr><td style=\"width:150px;\">".$L['install_phpversion']."</td><td>";
	$res .= (version_compare($php_version, '4.3') < 0) ? '<span class="yes">'.PHP_VERSION.' : '.$L['install_ok'].'</span>' : '<span class="no">'.PHP_VERSION.' : '.$L['install_too_old'].'</span>';
	$res .= "</td></tr>";

	$res .= "<tr><td style=\"width:150px;\">MB String</td><td>";
	$res .= (extension_loaded('mbstring')) ? '<span class="yes">'.$L['install_available'].'</span>' : '<span class="no">'.$L['install_missing'].'</span>';
	$res .= "</td></tr>";

	$res .= "<tr><td style=\"width:150px;\">".$L['install_mysql_extension']."</td><td>";
	$res .= (extension_loaded('mysql')) ? '<span class="yes">'.$L['install_available'].'</span>' : '<span class="no">'.$L['install_missing'].'</span>';
	$res .= "</td></tr>";
	
	$res .= "<tr><td style=\"width:150px;\">".$L['install_mysqli_extension']."</td><td>";
	$res .= (extension_loaded('mysqli')) ? '<span class="yes">'.$L['install_available'].'</span>' : '<span class="no">'.$L['install_missing'].'</span>';
	$res .= "</td></tr>";

	$res .= "<tr><td colspan=\"2\" style=\"padding-top:16px; text-align:center;\">[ <a href=\"install.php\">".$L['install_refresh']."</a> ]</td></tr>";
	$res .= "</table>";

	$res .= "</td></tr>";
	$res .= "</table>";

	$res .= "<form name=\"install\" action=\"install.php?m=param\" method=\"post\">";
	$res .= "<input type=\"submit\" style=\"margin-top:32px;\" value=\"".$L['install_nextstep']."\">";
	$res .= "</form>";

	break;
	
  default:
  
  $step = 0;
  
  $res .= "<h3>".$L['install_language installation']."</h3>";
	
	$res .= "<form name=\"install\" action=\"install.php?m=onestep\" method=\"post\">";
  $res .= "<table style=\"width:100%;\">";	

	$res .= "<tr><td style=\"width:196px;\">".$L['install_select_language installation']."</td><td>";
	$res .= sed_selectbox_lang_install('', 'langinstall')."</td></tr>";

	$res .= "</table>";
	
	
	$res .= "<input type=\"submit\" style=\"margin-top:32px;\" value=\"".$L['install_nextstep']."\">";
	$res .= "</form>";
  
  break;
  
  }

$disp_shared = "<table style=\"width:100%; border-bottom:#CCCCCC dashed 1px;\">";
$disp_shared .= "<tr><td style=\"width:50%;\"><img src=\"system/install/seditio.png\" alt=\"\" /></td>";
$disp_shared .= "<td style=\"width:50%; vertical-align:middle;\">";
foreach ($steps as $i => $j)
	{
	$disp_shared .= ($step == $i) ? "<strong>" : '';
	$disp_shared .= "Step $i : $j";
	$disp_shared .= ($step == $i) ? " &lt;--</strong>" : '';
	$disp_shared .= "<br />";
	}
$disp_shared .= "</td></tr></table>";

echo ($disp_header);
echo ($disp_shared);
echo ($res);
echo ($disp_footer);

?>