<?php
header("Content-Type: text/html; charset=UTF-8");

if (isset ($_REQUEST[session_name()]) && !isset ($_SESSION))
{
	@ session_start();
}

define('DEFAULT_LNG', 'ru');

$LNG = array();
$LNG['ru'] = 'Русский';
$LNG['en'] = 'English';

if (isset($_REQUEST['step0']) && isset($_REQUEST['language']))
{
	// Язык существует
	if (isset($LNG[$_REQUEST['language']]))
	{
		if (!isset($_SESSION))
		{
			@session_start();
		}
		$_SESSION['LNG_INSTALL'] = $_REQUEST['language'];
	}
}

$default_lng_file_name = dirname(__FILE__) . "/lng/" .DEFAULT_LNG . "/" . DEFAULT_LNG. ".php";

if (isset($_SESSION['LNG_INSTALL']))
{
	$lng_file_name = dirname(__FILE__) . "/lng/{$_SESSION['LNG_INSTALL']}/{$_SESSION['LNG_INSTALL']}.php";
	$lng_name = $_SESSION['LNG_INSTALL'];
}
else
{
	$lng_file_name = $default_lng_file_name;
	$lng_name = DEFAULT_LNG;
}

if (!file_exists($lng_file_name))
{
	$lng_file_name = $default_lng_file_name;
}

require_once($lng_file_name);

// Определение констант минимальных требований к системе
define('PHP_version', '5.0.0');
define('MySQL_version', '4.1.0');
define('ZendOptimizer_version', '3.0');
define('GD_version', '2.0');
define('Data_limit', '2');
define('TIME_limit', '30');
define('DISC_space', '30');
define('RAM_space', '10M');
define('SAFE_MODE', $GLOBALS['MSG_install']['constant_off']);
define('REGISTER_GLOBALS', $GLOBALS['MSG_install']['constant_off']);
define('MAGIC_QUOTES_GPC', $GLOBALS['MSG_install']['constant_off']);
define('DUMP_file_41', 'dump_41.sql');
define('LICENCE_file', 'licence.txt');
define('CONFIG_db', realpath('../') . '/hostcmsfiles/config_db.php');
define('MbString', $GLOBALS['MSG_install']['constant_on']);
define('XSLT', $GLOBALS['MSG_install']['supported']);

// SITE_FOLDER, т.к. CMS_FOLDER объявляется в main_classes.php
define('SITE_FOLDER', realpath(dirname(__FILE__) . '/../') . '/');
define('INSTALL_FOLDER', dirname(__FILE__) . '/');

require_once(SITE_FOLDER.'modules/Kernel/Mbstring.fns.php');
require_once(SITE_FOLDER.'modules/Kernel/File.class.php');

require_once(SITE_FOLDER.'modules/Kernel/Security.fns.php');
require_once(SITE_FOLDER.'modules/Kernel/Message.fns.php');
require_once(SITE_FOLDER.'modules/Kernel/tar.class.php');
require_once(SITE_FOLDER.'modules/Kernel/Kernel.class.php');
require_once(SITE_FOLDER.'modules/Kernel/XMLparser.class.php');

/* Права на доступ к файлам */
define('FILE_MODE', 644);
/* Права на доступ к директориям */
define('DIR_MODE', 755);

define('CHMOD_FILE', 0644);
define('CHMOD', 0755);

@ini_set('display_errors', 1);
@error_reporting(E_ALL);
@set_magic_quotes_runtime(0);

/**
 * Метод удаления директории вместе с вложенными файлами и директориями.
 *
 * @param string $dir
 * @return boolean
 */
function removeDirectory($dir)
{
	if (is_dir($dir) && !is_link($dir))
	{
		if ($dh = @opendir($dir))
		{
			// читаем каталог
			while (($file = @readdir($dh)) !== false)
			{
				if ($file != '.' && $file!='..')
				{
					// Очищаем кэш
					clearstatcache();

					if (is_file($dir . '/' . $file))
					{
						@unlink($dir . '/' . $file);
					}

					if (is_dir($dir . '/' . $file))
					{
						// . '/' не нужно, т.к. директория передается без последнего слэша
						removeDirectory($dir . '/' . $file /*. '/'*/, true);
					}
				}
			}
			@closedir($dh);

			// Очищаем кэш
			clearstatcache();

			// удаляем каталог и возвращаем рузельтат
			if (is_dir($dir))
			{
				return @rmdir($dir);
			}
		}
	}

	return false;
}

/**
 * Преобразовываем размер из строковой записи, например 10M в размер в байтах
 *
 * @param string $size
 * @return int число байт
 */
function convert_value_to_bytes($size)
{
	$size = trim($size);

	if (strlen($size) > 0)
	{
		$cLastAlpha = strtolower(substr($size, -1));

		$size = intval($size);

		switch($cLastAlpha)
		{
			case 't':
				$size *= 1024;
			case 'g':
				$size *= 1024;
			case 'm':
				$size *= 1024;
			case 'k':
				$size *= 1024;
		}
	}

	return $size;
}

/**
 * Удаление всех таблиц текущего соединения
 *
 * @return boolean
 */
function Show_DropTables()
{
	// Выводим список таблиц базы данных, не являющихся временными
	$res = @mysql_query("SHOW TABLES");

	if (mysql_num_rows($res))
	{
		// Удаляем все таблицы из списка
		while ($rs = mysql_fetch_row($res))
		{
			mysql_query("DROP TABLE `{$rs[0]}`");
		}

		// Очищаем память связанную с переменной $res
		mysql_free_result($res);

		unset($rs);
		return true;
	}
	else
	{
		return false;
	}
}

/**
 * Выполняем все запросы из DUMPа. Перед началом выполнения запросов дампа необходимо удалить из него заголовок
 *
 * @param string $file путь к файлу
 * @return boolean
 */
function Exec_Dump($file)
{
	$query = file_get_contents($file);

	if (!empty($query))
	{
		// Удаляем все \r
		$query = str_replace("\r", '', $query);

		// Разделяем строку по переводу строк
		$query_array = explode("\n", $query);

		// Обнуляем переменную для подсчета количества запросов
		$count_query = 0;

		$i = 0;

		while ($i < count($query_array))
		{
			$i;
			// Читаем строку из массива
			$query = trim($query_array[$i]);

			if (mb_strlen($query))
			{
				// Собираем запрос разделённый на несколько строк
				while (mb_substr($query, mb_strlen($query) - 1, 1) <> ";"
				&& mb_substr($query, 0, 1) <> "#"
				&& mb_substr($query, 0, 2) <> "--"
				&& $i + 1 < count($query_array))
				{
					// переходим к следующему элементу массива
					$i++;

					$query .= "\n" . $query_array[$i];
				}

				// Убираем пробелы в начале и в конце строки
				$query = trim($query);

				// Если не комментарии
				if (mb_substr($query, 0, 1) <> "#"
				&& mb_substr($query, 0, 2) <> "--"
				&& $query != '')
				{
					if (mysql_query($query))
					{
						$count_query++;
					}
				}
			}

			$i++; // переходим к следующему элементу массива
		}
	}

	return true;
}

/**
 * Версия GD
 *
 * @return string
 */
function GetGDVersion()
{
	ob_start();

	phpinfo(8);
	$phpinfo = ob_get_clean();
	$phpinfo = stristr($phpinfo, "gd version");
	$phpinfo = stristr($phpinfo, "version");
	$end = mb_strpos($phpinfo, "</tr>");

	if ($end) $phpinfo = mb_substr($phpinfo, 0, $end);
	$phpinfo = strip_tags($phpinfo);

	if (ereg(".*([0-9]+)\.([0-9]+)\.([0-9]+).*", $phpinfo, $r))
	{
		$phpinfo = $r[1] . "." . $r[2] . "." . $r[3];
	}
	elseif (ereg(".*([0-9]+)\.([0-9]+).*", $phpinfo, $r))
	{
		$phpinfo = $r[1] . "." . $r[2];
	}
	else
	{
		$phpinfo = 0;
	}

	return $phpinfo;
}

/**
 * Соединение с базой данных
 *
 * @param string $db_host
 * @param string $db_user_name
 * @param string $db_password
 * @return int
 */
function db_connect($db_host, $db_user_name, $db_password)
{
	$db_host = trim($db_host);
	$db_user_name = trim($db_user_name);
	//$db_password = trim($db_password);

	// Соединение с БД
	$DB = @mysql_connect($db_host, $db_user_name, $db_password);
	$result = true;
	if (!$DB)
	{
		return false;
	}
	else
	{
		mysql_query("SET NAMES 'utf8'");
		mysql_query("SET SESSION character_set_results = 'utf8'");
		mysql_query("SET collation_connection = 'utf8_general_ci'");
		mysql_query("SET character_set_results = 'utf8'");
		mysql_query("SET character_set_client = 'utf8'");

		return $DB;
	}
}

/**
 * Выбор базы данных
 *
 * @param string $db
 * @param string $db_name
 * @return boolean
 */
function select_base($db, $db_name)
{
	$db_name = trim($db_name);

	// Выбираем БД
	if (!@mysql_select_db($db_name, $db))
	{
		return false;
	}
	else return true;
}

// Создаём новую базу данных
function create_base($db_name)
{
	// Выбираем БД
	if (!@mysql_query('CREATE DATABASE IF NOT EXISTS ' . $db_name))
	{
		return false;
	}
	else
	{
		return true;
	}
}

// Принимаем параметры базы данных и формируем из них текст для записи в файл
function check_base_param()
{
	if (isset($_POST['host']) && isset($_POST['user']) && isset($_POST['password']) && isset($_POST['database']))
	{
		return
		"<?php "
		. chr(13). chr(10) . "define('DB_USER_NAME','" . trim($_POST['user']) . "');"
		. chr(13). chr(10) . "define('DB_PASSWORD','" . $_POST['password'] . "');"
		. chr(13). chr(10) . "define('DB_HOST','" . trim($_POST['host']) . "');"
		. chr(13). chr(10) . "define('DB_NAME','" . trim($_POST['database']) . "'); "
		. chr(13). chr(10) . "?>";
	}
	else
	{
		return false;
	}
}

// Сохраняем текст в файл
function SaveToFile($filename, $text)
{
	if ($fd = @fopen($filename, "w+"))
	{
		$result = @fwrite ($fd, $text) && @fclose ($fd);
		@chmod($filename, octdec(FILE_MODE));
		return $result;
	}
	else
	{
		return false;
	}
}

/**
 * Устанавливает рекурсивно права на директории и файлы
 *
 * @param string $path
 * @param string $filemode
 * @param string $dirmode
 */
function set_chmod($path, $filemode, $dirmode)
{
	// Если файл
	if (!is_dir($path))
	{
		return @chmod($path, $filemode);
	}

	// Если не symlink
	if (!is_link($path))
	{
		/* Получаем дескриптор каталога */
		$dh = @opendir($path);

		if ($dh)
		{
			/* Читаем каталог */
			while ($file = readdir($dh))
			{
				if ($file != '.' && $file != '..')
				{
					$fullpath = $path.'/'.$file;

					/* Если это файл */
					if (!is_dir($fullpath))
					{
						@chmod($fullpath, $filemode);
					}
					else
					{
						@chmod($fullpath, $dirmode);

						/* Вызываем рекурсивно */
						set_chmod($fullpath, $filemode, $dirmode);
					}
				}
			}

			closedir($dh);
		}
	}

	/* Права на саму директорию */
	return @chmod($path, $dirmode);
}

function head_title($title)
{
	?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title><?php echo $title?></title>
<meta http-equiv="Content-Language" content="ru">
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"></meta>
<link rel="stylesheet" type="text/css" href="style.css">

<!-- jQuery -->
<script type="text/javascript" src="/hostcmsfiles/jquery/jquery.js"></script>

<!-- LightBox -->
<script type="text/javascript" src="/hostcmsfiles/jquery/lightbox/js/jquery.lightbox.js"></script>
<link rel="stylesheet" type="text/css" href="/hostcmsfiles/jquery/lightbox/css/jquery.lightbox.css" media="screen" />

<script type="text/javascript">
$(function() {
	$('#gallery a:has(img)').lightBox();
});
</script>


</head>
<body>

<!-- Шапка сайта -->
<div id="header"><!-- Левый блок шапки админки -->
<div class="left_box">

<div class="logo"><a href="/install/"><img src="images/logo.gif"
	alt="(^) HostCMS" title="HostCMS" /></a></div>

</div>
</div>

<!-- Контент -->
<div id="body"><!-- Левый блок -->
<div class="left_box" id="body_left_box"
	style="margin-right: 0px; border-right: 0px;">

<div style="padding-right: 30px">

<h1><?php echo $title?></h1><?php
}

function showbullet($level, $text)
{
	$level = intval($level);

	switch ($level)
	{
		case 2:
			{
				$img = 'bullet_red.gif';
				break;
			}
		case 1:
			{
				$img = 'bullet_orange.gif';
				break;
			}
		case 0:
			{
				$img = 'bullet_green.gif';
				break;
			}
		default:
			{
				$img = 'bullet_black.gif';
				break;
			}
	}
	?>
<div style="background: url('images/<?php echo $img?>') no-repeat 0px 50%; padding-left: 15px"><?php echo $text?></div>
	<?php
}

function bottom_title()
{
	?></div>
</div>

<!-- Правый блок -->
<div class="right_box"></div>

</div>

<div id="footer">
<div>Copyright &copy; 2005&mdash;2010 <span>ООО &laquo;Хостмэйк&raquo;</span></div>
</div>

</body>
</html>
<?php
}

if (isset($_POST['start']) && !isset($_POST['step0']))
{
	removeDirectory(INSTALL_FOLDER);

	// Редирект на главную страницу
	header('Location: ../');
	exit();
}

if (isset($_POST['step1']) || (isset($_POST['step2']) && !isset($_POST['license_agree'])))
{
	head_title($GLOBALS['MSG_install']['step_2']);

	if (isset($_POST['step2']) && !isset($_POST['license_agree']))
	{
		?>
<div id="error_message"><?php echo $GLOBALS['MSG_install']['license_agreement_error']?></div>
		<?php
	}
	?>
<form method="POST" action="index.php">
<div
	style="height: 350px; width: 100%; overflow: auto; border: 1px solid #E1E1E1; padding: 5px">
	<?php echo nl2br(@file_get_contents(LICENCE_file))?></div>

<p><input type="checkbox" class="input_not_border" name="license_agree"
	value="on" id="license_agree_id"> <label for="license_agree_id"><?php echo $GLOBALS['MSG_install']['license_agreement']?></label></p>

<div style="float: right"><input name="step2" value="<?php echo $GLOBALS['MSG_install']['next']?>"
	type="submit" class="next" /></div>
</form>
	<?php
	bottom_title();
	exit();
}

if ((isset($_POST['step2']) && isset($_POST['license_agree']) && ($_POST['license_agree'] = 'on')))
{
	head_title($GLOBALS['MSG_install']['step_3']);

	?>
<form method="POST" action="index.php">
<table border="0" cellspacing="2" cellpadding="2" class="admin_table">
	<tr class="admin_table_title">
		<td width="350"><strong><?php echo $GLOBALS['MSG_install']['table_field_param']?></strong></td>
		<td width="140"><strong><?php echo $GLOBALS['MSG_install']['table_field_need']?></strong></td>
		<td width="140"><strong><?php echo $GLOBALS['MSG_install']['table_field_thereis']?></strong></td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_php_version']?></td>
		<td><?php echo PHP_version?></td>
		<td><?php
		$php = phpversion()
		? phpversion()
		: $GLOBALS['MSG_install']['undefined'];
		?> <?php showbullet(version_compare(phpversion(), PHP_version, ">=") ? 0 : 2, $php)?>
		</td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_zend_optimizer_version']?></td>
		<td><?php echo ZendOptimizer_version?></td>
		<td><?php

		$z_o = $GLOBALS['MSG_install']['not_installed'];

		if (function_exists('zend_optimizer_version'))
		{
			$z_o = zend_optimizer_version();
		}
		elseif (function_exists('get_loaded_extensions'))
		{
			$loaded_extensions = get_loaded_extensions();

			if (isset($loaded_extensions['Zend Optimizer+'])
			|| in_array('Zend Optimizer+', $loaded_extensions))
			{
				$z_o = 'Zend Optimizer+';
			}
		}

		?> <?php showbullet((version_compare($z_o, ZendOptimizer_version, ">=")
			&& (version_compare(phpversion(), '5.2.9', "<=") || mb_substr(PHP_OS, 0, 3) == 'WIN')
		|| version_compare($z_o, '3.3.4', ">=") && version_compare(phpversion(), '5.2.10', ">=")
		|| $z_o == 'Zend Optimizer+') ? 0 : 2, $z_o)?>
		</td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_gd_version']?></td>
		<td><?php echo GD_version?></td>
		<td><?php
		$gd = GetGDVersion()
		? GetGDVersion()
		: $GLOBALS['MSG_install']['undefined'];
		?> <?php showbullet(version_compare(GetGDVersion(), GD_version, ">=") ? 0 : 2, $gd)?>
		</td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_mbstring']?></td>
		<td><?php echo MbString?></td>
		<td><?php
		$mb = function_exists('mb_internal_encoding')
			? $GLOBALS['MSG_install']['constant_on']
			: $GLOBALS['MSG_install']['constant_off'];
		?> <?php showbullet(function_exists('mb_internal_encoding') ? 0 : 2, $mb)?>
		</td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_maximum_upload_data_size']?></td>
		<td><?php echo Data_limit?>М</td>
		<td><?php
		$d_l = ini_get('post_max_size')
		? ini_get('post_max_size')
		: $GLOBALS['MSG_install']['undefined'];
		?> <?php showbullet(($d_l != $GLOBALS['MSG_install']['undefined'] && version_compare($d_l, Data_limit, ">=")) ? 0 : 2, $d_l)?>
		</td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_maximum_execution_time']?></td>
		<td><?php echo TIME_limit?> сек.</td>
		<td><?php
		$t_l = ini_get('max_execution_time')
		? ini_get('max_execution_time')
		: $GLOBALS['MSG_install']['undefined'];
		?> <?php showbullet(($t_l != $GLOBALS['MSG_install']['undefined'] && $t_l >= TIME_limit) ? 0 : 2,
			($t_l != $GLOBALS['MSG_install']['undefined'])
				? $t_l . " " . $GLOBALS['MSG_install']['seconds']
				: $t_l)?>
		</td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_session_store_path']?></td>
		<td colspan="2"><?php showbullet(0, session_save_path())?></td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_disc_space']?></td>
		<td><?php echo DISC_space . $GLOBALS['MSG_install']['megabytes']?></td>
		<td><?php
		$d_s = disk_free_space($_SERVER['DOCUMENT_ROOT'])
		? round(disk_free_space($_SERVER['DOCUMENT_ROOT']) / 1024 / 1024, 2)
		: $GLOBALS['MSG_install']['undefined'];
		?> <?php showbullet(($d_s != $GLOBALS['MSG_install']['undefined'] && $d_s >= DISC_space)
		? 0 : 2,
		($d_s != $GLOBALS['MSG_install']['undefined'])
		? $d_s.$GLOBALS['MSG_install']['megabytes'] : $d_s)?>
		</td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_ram_space']?></td>
		<td><?php echo RAM_space?></td>
		<td><?php
		$r_s = ini_get('memory_limit')
		? ini_get('memory_limit')
		: $GLOBALS['MSG_install']['undefined'];
		?> <?php showbullet(($r_s != $GLOBALS['MSG_install']['undefined']
			&& convert_value_to_bytes($r_s) >= convert_value_to_bytes(RAM_space))
		? 0
		: (($r_s != $GLOBALS['MSG_install']['undefined']) ? 2 : 1), $r_s)?>
		</td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_safe_mode']?></td>
		<td><?php echo SAFE_MODE?></td>
		<td><?php
		$s_m = (ini_get('safe_mode') == 1)
		? $GLOBALS['MSG_install']['constant_on']
		: $GLOBALS['MSG_install']['constant_off'];
		?> <?php showbullet(($s_m == SAFE_MODE) ? 0 : 1, $s_m)?></td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_register_globals']?></td>
		<td><?php echo REGISTER_GLOBALS?></td>
		<td><?php
		$r_g = (ini_get('register_globals') == 1)
		? $GLOBALS['MSG_install']['constant_on']
		: $GLOBALS['MSG_install']['constant_off'];
		?> <?php showbullet(($r_g == REGISTER_GLOBALS)
			? 0
			: 1, $r_g)?></td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_magic_quotes_gpc']?></td>
		<td><?php echo MAGIC_QUOTES_GPC?></td>
		<td><?php
		$m_q = (ini_get('magic_quotes_gpc') == 1)
		? $GLOBALS['MSG_install']['constant_on']
		: $GLOBALS['MSG_install']['constant_off'];
		?> <?php showbullet(($m_q == MAGIC_QUOTES_GPC)
		? 0
		: 1, $m_q)?></td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['table_field_xslt_support']?></td>
		<td><?php echo XSLT?></td>
		<td><?php
		$xslt = (function_exists('xslt_create')
		|| function_exists('domxml_xslt_stylesheet')
		|| (class_exists('DomDocument') && class_exists('XsltProcessor')))
			? XSLT
			: $GLOBALS['MSG_install']['unsupported'];
		?> <?php showbullet(($xslt == XSLT) ? 0 : 2, $xslt)?></td>
	</tr>
</table>

<?php echo $GLOBALS['MSG_install']['caution']?>

<p><?php showbullet(0, $GLOBALS['MSG_install']['parameter_corresponds'])?> <?php showbullet(1, $GLOBALS['MSG_install']['parameter_not_corresponds_but_it_is_safe'])?>
	<?php showbullet(2, $GLOBALS['MSG_install']['parameter_not_corresponds'])?></p>

<div style="float: right"><input name="step3" value="<?php echo $GLOBALS['MSG_install']['next']?>"
	type="submit" class="next" /></div>
</form>
		<?php
		bottom_title();
		exit();
}
if (isset($_POST['step3']) || isset($_POST['step5']))
{
	head_title($GLOBALS['MSG_install']['step_4']);
	?>
<form method="POST" action="index.php" enctype="multipart/form-data">
<table border="0" cellspacing="2" cellpadding="2" class="admin_table">
	<tr class="admin_table_title">
		<td colspan="2"><?php echo $GLOBALS['MSG_install']['access_parameter']?></td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['file_access']?></td>
		<td><input type="text" name="file_mode" size="3"
			value="<?php echo FILE_MODE?>"> <small><?php echo sprintf($GLOBALS['MSG_install']['example'], FILE_MODE)?></small>
		</td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['directory_access']?></td>
		<td><input type="text" name="dir_mode" size="3"
			value="<?php echo DIR_MODE?>"> <small><?php echo sprintf($GLOBALS['MSG_install']['example'], DIR_MODE)?></small>
		</td>
	</tr>
	<tr class="admin_table_title">
		<td colspan="2"><?php echo $GLOBALS['MSG_install']['database_params']?></td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['mysql_server']?></td>
		<td><input type="text" name="host" size="30" value=""> <br />
		<small><?php echo sprintf($GLOBALS['MSG_install']['example'], 'localhost')?></small></td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['database_login']?></td>
		<td><input type="text" name="user" size="30" value=""></td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['database_pass']?></td>
		<td><input type="password" name="password" size="30" value=""></td>
	</tr>
	<tr class="row_table">
		<td align="left" valign="top"><?php echo $GLOBALS['MSG_install']['database_mysql']?></td>
		<td valign="top"><input type="text" name="database" size="30" value="">
		</td>
	</tr>
	<tr class="row_table">
		<td align="left" valign="top"><label for="create_base_id"><?php echo $GLOBALS['MSG_install']['create_database']?></label></td>
		<td valign="top"><input id="create_base_id" type="checkbox"
			class="input_not_border" name="create_database" value="on"> <label
			for="create_base_id"><?php echo $GLOBALS['MSG_install']['create_database_flag']?></label></td>
	</tr>
	<tr class="row_table">
		<td align="left" valign="top"><label for="clear_database_id"><?php echo $GLOBALS['MSG_install']['clear_database']?></label></td>
		<td valign="top"><input id="clear_database_id" type="checkbox"
			class="input_not_border" name="clear_database" value="on"> <label
			for="clear_database_id"><?php echo $GLOBALS['MSG_install']['yes']?></label>
		<div id="error_message"><?php echo $GLOBALS['MSG_install']['clear_database_caution']?></div>
		</td>
	</tr>
</table>

<div style="float: right"><input name="step4" value="<?php echo $GLOBALS['MSG_install']['next']?>" type="submit" class="next" /></div>

</form>
	<?php
	bottom_title();
	exit();
}
if (isset($_POST['step4']))
{
	head_title($GLOBALS['MSG_install']['step_5']);

	/* Если передано значение прав доступа к файлам */
	if (isset($_REQUEST['file_mode']))
	{
		$file_mode = octdec($_REQUEST['file_mode']);
	}
	else
	{
		$file_mode = octdec(FILE_MODE);
	}

	/* Если передано значение прав доступа к директориям */
	if (isset($_REQUEST['dir_mode']))
	{
		$dir_mode = octdec($_REQUEST['dir_mode']);
	}
	else
	{
		$dir_mode = octdec(DIR_MODE);
	}

	/* Устанавливаем права */
	set_chmod('../', $file_mode, $dir_mode);

	$flag = (($text = check_base_param()) && SaveToFile(CONFIG_db, $text)) ? true : false;

	?>
<form method="POST" action="index.php">
<table border="0" cellspacing="2" cellpadding="2" class="admin_table">
	<tr class="admin_table_title">
		<td width="220"><?php echo $GLOBALS['MSG_install']['action']?></td>
		<td><?php echo $GLOBALS['MSG_install']['result']?></td>
		<td><?php echo $GLOBALS['MSG_install']['comment']?></td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['store_database_params']?></td>
		<td><?php showbullet($flag ? 0 : 2, $flag ? $GLOBALS['MSG_install']['success'] : $GLOBALS['MSG_install']['error'])?></td>
		<td><?php echo ($flag) ? '' : $GLOBALS['MSG_install']['not_enough_rights_error']?>
		</td>
	</tr>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['database_connection']?></td>
		<td><?php
		$connect_db = db_connect($_POST['host'], $_POST['user'], $_POST['password']);
		$flag = $flag && $connect_db;
		?> <?php showbullet($connect_db ? 0 : 2, $connect_db
		? $GLOBALS['MSG_install']['success']
		: sprintf($GLOBALS['MSG_install']['sql_error'], mysql_errno(), mysql_error()))?>

		<td><?php echo ($connect_db)
		? ''
		: $GLOBALS['MSG_install']['database_connection_check_params']?>
		</td>
	</tr>
	<?php
	if (isset($_POST['create_database']) && ($_POST['create_database'] == 'on'))
	{
	?>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['database_creation']?></td>
		<td><?php
		$create_db = create_base(trim($_POST['database']));
		$flag = $flag && $create_db;
		?> <?php showbullet($create_db
		? 0 : 2, $create_db
		? $GLOBALS['MSG_install']['success']
		: sprintf($GLOBALS['MSG_install']['sql_error'], mysql_errno(), mysql_error()))?>

		<td><?php echo ($create_db) ? '' : $GLOBALS['MSG_install']['attention_message']?>
		</td>
	</tr>
	<?php
	}
	?>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['database_selection']?></td>
		<td><?php
		$select_db = select_base($connect_db, $_POST['database']);
		$flag = $flag && $select_db;
		?> <?php showbullet($select_db ? 0 : 2,
		$select_db
			? $GLOBALS['MSG_install']['success']
			: sprintf($GLOBALS['MSG_install']['sql_error'], mysql_errno(), mysql_error()))?>
		</td>
		<td><?php echo ($select_db)
			? ''
			: $GLOBALS['MSG_install']['database_selection_access_denied']?>
		</td>
	</tr>
	<?php
	// Если нужна очистка базы
	if (isset($_POST['clear_database']))
	{
		?>
		<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['database_clearing']?></td>
		<td><?php
		// Очищаем
		$e_b = Show_DropTables();
		?> <?php showbullet($e_b ? 0 : 2, $e_b
			? $GLOBALS['MSG_install']['success']
			: $GLOBALS['MSG_install']['error'])?>
		</td>
		<td></td>
		</tr>
		<?php
	}
	?>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['sql_dump_loading']?></td>
		<td><?php
		$dumpfile = DUMP_file_41;

		if ($select_db)
		{
			$e_b = Exec_Dump($dumpfile, $connect_db);
			$flag = $flag && $e_b;
			?> <?php showbullet($e_b ? 0 : 2, $e_b
				? $GLOBALS['MSG_install']['success']
				: sprintf($GLOBALS['MSG_install']['sql_dump_loading_error'], mysql_get_client_info()))?>
		<?php
		}
		?>
		</td>
		<td></td>
	</tr>
	<?php /*?>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['domen_installing']?></td>
		<td><?php

		$domain = str_replace('www.', '', $_SERVER['HTTP_HOST']);

		if ($select_db)
		{
			$e_b = @mysql_query("UPDATE `site_alias_table` SET `alias_name` = '*.".mysql_escape_string($domain)."'");
			showbullet($e_b ? 0 : 2,
			$e_b
				? $GLOBALS['MSG_install']['success']
				: sprintf($GLOBALS['MSG_install']['sql_error'], mysql_errno(), mysql_error()));
		}
		?>
		</td>
		<td></td>
	</tr>
	<?php */ ?>
	<tr class="row_table">
		<td><?php echo $GLOBALS['MSG_install']['lng_installing']?></td>
		<td><?php
		if ($select_db)
		{
			$e_b = @mysql_query("UPDATE `constants_table`
			SET `constants_value` = '".mysql_escape_string($lng_name)."'
			WHERE `constants_name` = 'DEFAULT_LNG'");
			showbullet($e_b ? 0 : 2,
			$e_b
				? $GLOBALS['MSG_install']['success']
				: sprintf($GLOBALS['MSG_install']['sql_error'], mysql_errno(), mysql_error()));
		}
		?>
		</td>
		<td></td>
	</tr>

</table>
	<?php
	if ($flag)
	{
		?><div style="float: right"><input name="step6" value="<?php echo $GLOBALS['MSG_install']['next']?>" type="submit" class="next" /></div><?php
	}
	else
	{
		?><div><input name="step5" value="<?php echo $GLOBALS['MSG_install']['back']?>" type="submit" class="prev" /></div><?php
	}
	?>
</form>
	<?php
	bottom_title();
	exit();
}

if (isset($_POST['step6']) || isset($_POST['step7'])
 || isset($_POST['step8']) || isset($_POST['step9']))
{
	// Подключаем файл main_classes.php
	require_once (SITE_FOLDER . 'main_classes.php');

	$kernel = & singleton('kernel');

	/* Загрузка всех активных модулей */
	$kernel->LoadModules(true);

	$SiteTemplate = & singleton ('SiteTemplate');
	// $SiteTemplate->SetTemplatesUrlServer('http://www.hostcms.ru');
	$SiteTemplate->SetTemplatePath(INSTALL_FOLDER);
	$SiteTemplate->SetChmodFile(octdec(FILE_MODE));

	// Массив по данным templates.xml
	$aXmlTemplatesTmp = $SiteTemplate->GetTemplateXml();

	if (!$aXmlTemplatesTmp)
	{
		show_error_message(sprintf($GLOBALS['MSG_install']['write_error'], $SiteTemplate->GetTemplateFilePath()));
	}

	// Путь к домену
	$sTemplatesUrlServer = $SiteTemplate->GetTemplatesUrlServer();
}

// Выбор макета
if (isset($_POST['step6']))
{
	head_title($GLOBALS['MSG_install']['step_6']);

	?><form method="POST" action="index.php">
		<div id="gallery">
			<?php
			if (isset($aXmlTemplatesTmp) && is_array($aXmlTemplatesTmp) && count($aXmlTemplatesTmp) > 0)
			{
				// цикл по дереву group
				foreach ($aXmlTemplatesTmp['groups'][0]['value']['group'] as $iKeyGroup => $aValueGroup)
				{
					// если в группе есть шаблоны
					if (isset($aValueGroup['value']['templates'][0]['value']['template']))
					{
						// цикл по дереву template
						foreach ($aValueGroup['value']['templates'][0]['value']['template'] as $iKeyTemplate => $aValueTemplate)
						{
							$small_width = $aValueTemplate['value']['template_preview']['0']['arg']['width'];
							$small_height = 200 + 40;
							// вывод информации о шаблоне
							?>
							<div class="site_template_block">
							<div class="bord_img" style="width: <?php echo $small_width?>px; height:<?php echo $small_height?>px;">
								<div class="tl"></div>
								<div class="t"></div>
								<div class="tr"></div>
								<div class="r"></div>
								<div class="br"></div>
								<div class="b"></div>
								<div class="bl"></div>
								<div class="l"></div>

								<a href="<?php echo $sTemplatesUrlServer.$aValueTemplate['value']['template_full_preview']['0']['value']?>" target="_blank">
								<img src="<?php echo $sTemplatesUrlServer.$aValueTemplate['value']['template_preview']['0']['value']?>" width="<?php echo $small_width?>" />
								</a>

								<div class="bottom">
									<input style="float: left" type="radio" <?php if($iKeyTemplate == 0 && $iKeyGroup == 0) {echo 'checked="checked"';} ?> name="template_id" id="template_<?php echo $aValueTemplate['arg']['id']?>" value="<?php echo $aValueTemplate['arg']['id']?>" />

									<label for="template_<?php echo $aValueTemplate['arg']['id']?>" style="margin-left: 5px; float: left">
										<b><?php echo $aValueTemplate['value']['template_name']['0']['value']?></b>
										<br />
										<span><?php echo $aValueGroup['value']['group_name'][0]['value']?></span>
									</label>
								</div>
							</div>
							</div>
							<?php
						}
					}
				}
			}
		?>
		</div>

		<div style="clear: both"></div>

		<div style="float: right">
			<input name="step7" value="<?php echo $GLOBALS['MSG_install']['next']?>" type="submit" class="next" />
		</div>
	</form>
	<?php

	bottom_title();
	exit();
}

if (isset($_POST['step7']))
{
	$iTemplateId = to_int($_POST['template_id']);

	if (isset($aXmlTemplatesTmp))
	{
		// Доступны группы
		if (isset($aXmlTemplatesTmp['groups'][0]['value']['group']))
		{
			// цикл по дереву group
			foreach ($aXmlTemplatesTmp['groups'][0]['value']['group'] as $aValueGroup)
			{
				if (isset($aValueGroup['value']['templates'][0]))
				{
					// цикл по дереву template
					foreach ($aValueGroup['value']['templates'][0]['value']['template'] as $aValueTemplate)
					{
						// у выбранного шаблона есть цветовые схемы
						if ($aValueTemplate['arg']['id'] == $iTemplateId && isset($aValueTemplate['value']['template_types'][0]['value']['template_type']))
						{
							head_title($GLOBALS['MSG_install']['step_7']);
							?><form method="POST" action="index.php">
							<div id="gallery">
								<?php
								// цикл по цветовым схемам
								foreach ($aValueTemplate['value']['template_types'][0]['value']['template_type'] as $iKeyTemplateType => $aValueTemplateType)
								{
									$small_width = $aValueTemplateType['value']['template_type_full_preview']['0']['arg']['width'];
									$small_height = 200 + 40;

									?><div class="bord_img" style="width: <?php echo $small_width?>px; height:<?php echo $small_height?>px;">
									<div class="tl"></div>
									<div class="t"></div>
									<div class="tr"></div>
									<div class="r"></div>
									<div class="br"></div>
									<div class="b"></div>
									<div class="bl"></div>
									<div class="l"></div>

									<a href="<?php echo $sTemplatesUrlServer.$aValueTemplateType['value']['template_type_full_preview']['0']['value'] ?>">
									<img src="<?php echo $sTemplatesUrlServer.$aValueTemplateType['value']['template_type_preview']['0']['value'] ?>"
									width="<?php echo $small_width?>" />
									</a>

									<div style="position: absolute; width: 100%; bottom: 5px;">
										<input style="float: left;" type="radio" <?php echo ($iKeyTemplateType == 0) ? 'checked="checked"' : ''?> name="template_id" id="template_<?php echo $aValueTemplate['arg']['id']?>" value="<?php echo $aValueTemplate['arg']['id']?>" />

										<label for="template_<?php echo $aValueTemplate['arg']['id']?>" style="margin-left: 5px; float: left">
											<b><?php echo $aValueTemplateType['value']['template_type_name']['0']['value']?></b>
										</label>
										</div>
									</div>
									<?php
								}
								?>
								<input type="hidden" name="template_id" value="<?php echo $iTemplateId ?>" />

								<div style="clear: both"></div>

								<div style="float: right">
									<input name="step8" value="<?php echo $GLOBALS['MSG_install']['next']?>" type="submit" class="next" />
								</div>
							</div>
							</form><?php

							bottom_title();
							exit();
						}
					}
				}
			}
		}
		else
		{
			show_error_message($GLOBALS['MSG_install']['templates_dont_exist']);
		}
	}
}

if (isset($_POST['step8']) || isset($_POST['step7']))
{
	$iTemplateId = to_int($_POST['template_id']);
	$iTemplateTypeId = to_int($_POST['template_type_id']);

	$kernel = & singleton('kernel');

	head_title($GLOBALS['MSG_install']['step_8']);

	?><form method="POST" action="index.php" enctype="multipart/form-data"><?php
		if (isset($aXmlTemplatesTmp))
		{
			// цикл по дереву group
			foreach ($aXmlTemplatesTmp['groups'][0]['value']['group'] as $iKeyGroup => $aValueGroup)
			{
				// если в группе есть шаблоны
				if (isset($aValueGroup['value']['templates'][0]['value']['template']))
				{
					// цикл по дереву template
					foreach ($aValueGroup['value']['templates'][0]['value']['template'] as $iKeyTemplate => $aValueTemplate)
					{
						if ($iTemplateId == $aValueTemplate['arg']['id'])
						{
							// ссылка на макет файла
							$sTemplateFile = $aValueTemplate['value']['template_file'][0]['value'];

							$sFileContents = $kernel->GetUrl($sTemplatesUrlServer.$sTemplateFile);

							// название архива макета
							$aTemplateFileUrl = explode('/', $sTemplatesUrlServer.$sTemplateFile);
							$sTemplateFileName = end($aTemplateFileUrl);

							// путь к локальному архиву макета
							$sTemplateFileUrl = $SiteTemplate->GetTemplatePath() . $sTemplateFileName;

							// запись в файл данных макета
							if (SaveToFile($sTemplateFileUrl, $sFileContents))
							{
								// распаковка архива макета
								$oArchiveTar = new Archive_Tar($sTemplateFileUrl);
								$oArchiveTar->extractModify($SiteTemplate->GetTemplatePath(), $SiteTemplate->GetTemplatePath());
							}
							else
							{
								show_error_message(sprintf($GLOBALS['MSG_install']['write_error'], $sTemplateFileUrl));
							}

							// Массив из файла template.xml
							$aTemplateContentXml = $SiteTemplate->GetTemplateContentXml();

							if($aTemplateContentXml)
							{
								if (isset($aTemplateContentXml['children'][0]['children'])
								&& count($aTemplateContentXml['children'][0]['children']) > 0)
								{
									?><p><?php echo $GLOBALS['MSG_install']['template_data_information']?></p>
									<table border="0" cellspacing="2" cellpadding="2" class="admin_table">
									<tr class="admin_table_title">
										<td><?php echo $GLOBALS['MSG_install']['table_field_param']?></td>
										<td><?php echo $GLOBALS['MSG_install']['table_field_value']?></td>
									</tr>
									<?php
									// цикл по дереву 'template'
									foreach ($aTemplateContentXml['children'][0]['children'] as $aTemplateValue)
									{
										switch ($aTemplateValue['name'])
										{
											case 'fields':

												$aFields = $SiteTemplate->GetFields($aTemplateValue['children']);

												// цикл по дереву 'fields'
												foreach ($aFields as $aFieldsValue)
												{
													$sFieldName = htmlspecialchars($aFieldsValue['Name']);
													$sFieldValue = htmlspecialchars($aFieldsValue['Value']);
													$sFieldMacros = htmlspecialchars($aFieldsValue['Macros']);
													$sFieldExtension = htmlspecialchars($aFieldsValue['Extension']);
													$sFieldMaxWidth = intval($aFieldsValue['MaxWidth']);
													$sFieldMaxHeight = intval($aFieldsValue['MaxHeight']);
													$sFieldListValue = $aFieldsValue['ListValue'];

													$iFieldType = intval($aFieldsValue['Type']);

													// Название поля
													?><tr class="row_table">
														<td><?php echo $sFieldName?></td>
														<td><?php

													switch ($iFieldType)
													{
														case 0: // текст
															?>
															<input type="text" size="50" name="<?php echo $sFieldMacros?>" value="<?php echo $sFieldValue?>" />
															<?php
															break;
														case 1: // список
															?>
															<select name="<?php echo $sFieldMacros?>">
															<?php
															if (count($sFieldListValue) > 0)
															{
																foreach ($sFieldListValue as $option_key => $option_value)
																{
																?>
																<option value="<?php echo $option_key?>"><?php echo $option_value?></option>
																<?php
																}
															}
															?>
															</select>
															<?php
															break;
														case 2: // файл
															?>
															<input type="file" size="50" name="<?php echo $sFieldMacros?>" value="<?php echo $sFieldValue?>" />
															<?php
															if (trim($sFieldExtension) != '')
															{
																// Разрешенные расширения файла
																?><br /><?php echo sprintf($GLOBALS['MSG_install']['allowed_extension'], $sFieldExtension)?><?php
															}

															if ($sFieldMaxWidth > 0 && $sFieldMaxHeight > 0)
															{
																// Максимальный размер файла
																?><br /><?php echo sprintf($GLOBALS['MSG_install']['max_file_size'], $sFieldMaxWidth, $sFieldMaxHeight)?><?php
															}

															break;
														case 3: // большое текстовое поле
															?>
															<textarea name="<?php echo $sFieldMacros?>" rows="5" cols="47"><?php echo $sFieldValue?></textarea>
															<?php
															break;
													}
													?></td>
													</tr>
													<?php
												}
												break;
										}
									}
									?></table><?php
								}
								else
								{
									?><p><?php echo $GLOBALS['MSG_install']['empty_settings']?></p><?php
								}
							}
							else
							{
								show_error_message(sprintf($GLOBALS['MSG_install']['file_not_found'], 'template.xml'));
							}

							break;
						}
					}
				}

				if (isset($sTemplateFile))
				{
					break;
				}
			}
		}
		?>
		<input type="hidden" name="template_id" value="<?php echo $iTemplateId ?>" />
		<input type="hidden" name="template_type_id" value="<?php echo $iTemplateTypeId ?>" />
		<div style="float: right">
			<input name="step9" value="<?php echo $GLOBALS['MSG_install']['next']?>" type="submit" class="next" />
		</div>
	</form>
	<?php

	bottom_title();
	exit();
}

function MacroReplace($str, $aReplace)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MacroReplace($str, $aReplace);
}

function LoadFile($filename, $aReplace = array())
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->LoadFile($filename, $aReplace);
}

/**
 * Заменяет макросы в уже существующем файле
 *
 *  @param $filename путь к файлу
 *  @param $aReplace массив замен
 */
function ReplaceFile($filename, $aReplace = array())
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->ReplaceFile($filename, $aReplace);
}

/**
 * Копирование изображений для ИЭ
 *
 * @param $is_item_id - идентификатор нового созданого ИЭ
 * @param $copy_is_id - идентификатор копирумой ИС
 * @param $copy_item_id - идентификатор копируемого ИЭ
 */
function MoveInfItemImage($is_item_id, $copy_is_id, $copy_item_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveInfItemImage($is_item_id, $copy_is_id, $copy_item_id);
}

/**
 * Копирование изображений для доп. свойств ИЭ
 *
 * @param $is_item_id - Идентификатор нового ИЭ
 * @param $is_item_property_id - Идентификатор нового доп. свойства типа "Файл"
 * @param $copy_is_id - Идентификатор копирумой ИС
 * @param $copy_is_item_id - Идентификатор копируемого ИЭ
 * @param $copy_is_item_property_value_id - Идентификатор значения доп. свойства типа "Файл" копируемого ИЭ
 */
function MoveInfItemPropertyImage($is_item_id, $is_item_property_id, $copy_is_id, $copy_is_item_id, $copy_is_item_property_value_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveInfItemPropertyImage($is_item_id, $is_item_property_id, $copy_is_id, $copy_is_item_id, $copy_is_item_property_value_id);
}

/**
 * Копирование изображений для ИГ
 *
 * @param $is_group_id - идентификатор новой созданной ИГ
 * @param $copy_is_id - идентификатор копирумой ИС
 * @param $copy_group_id - идентификатор копируемой ИГ
 */
function MoveInfGroupImage($is_group_id, $copy_is_id, $copy_group_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveInfGroupImage($is_group_id, $copy_is_id, $copy_group_id);
}

/**
 * Копирование значения доп. свойства типа "Файл" узла структуры
 *
 * @param $structure_id - Идентификатор нового созданого узла структуры
 * @param $structure_property_image_id - Идентификатор нового созданного доп. свойства
 * @param $copy_site_id - Идентификатор сайта, которому принадлежит копируемая структура
 * @param $copy_structure_id - Идентификатор копируемого узла структуры
 * @param $copy_structure_property_value_id - Идентификатор значения доп. свойства, значение которого копируется
 */
function MoveStructureItemPropertyImage($structure_id, $structure_property_image_id, $copy_site_id, $copy_structure_id, $copy_structure_property_value_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveStructureItemPropertyImage($structure_id, $structure_property_image_id, $copy_site_id, $copy_structure_id, $copy_structure_property_value_id);
}

/**
 * Копирование изображений для группы товаров
 *
 * @param $shop_group_id - идентификатор новой созданной группы магазина
 * @param $copy_shop_id - идентификатор копирумого магазина
 * @param $copy_group_id - идентификатор копируемой группы товаров
 */
function MoveShopGroupImage($shop_group_id, $copy_shop_id, $copy_group_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveShopGroupImage($shop_group_id, $copy_shop_id, $copy_group_id);
}

/**
 * Копирование изображений для товара
 *
 * @param $shop_item_id - Идентификатор нового созданого товара
 * @param $copy_shop_id - Идентификатор копирумого магазина
 * @param $copy_shop_item_id - Идентификатор копируемого товара
 */
function MoveShopItemImage($shop_item_id, $copy_shop_id, $copy_shop_item_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveShopItemImage($shop_item_id, $copy_shop_id, $copy_shop_item_id);
}

/**
 * Копирование изображений для доп. свойств товара
 *
 * @param $shop_item_id - Идентификатор нового созданого товара
 * @param $copy_shop_id - Идентификатор копирумого магазина
 * @param $copy_shop_item_id - Идентификатор копируемого товара
 * @param $copy_shop_item_property_id - Идентификатор доп. свойства типа "Файл" копируемого товара
 */
function MoveShopItemPropertyImage($shop_item_id, $shop_item_property_id, $copy_shop_id, $copy_shop_item_id, $copy_shop_item_property_id)
{
	$SiteTemplate = & singleton ('SiteTemplate');
	return $SiteTemplate->MoveShopItemPropertyImage($shop_item_id, $shop_item_property_id, $copy_shop_id, $copy_shop_item_id, $copy_shop_item_property_id);
}

if (isset($_POST['step9']))
{
	$iTemplateId = to_int($_POST['template_id']);
	$iTemplateTypeId = to_int($_POST['template_type_id']);

	head_title($GLOBALS['MSG_install']['step_9']);

	// Копируем файлы из ./template/ в папку системы
	$File = new File();

	if (is_dir($SiteTemplate->GetTemplatePath() . 'template'))
	{
		if ($File->CopyDir($SiteTemplate->GetTemplatePath() . 'template', SITE_FOLDER))
		{
			show_message($GLOBALS['MSG_install']['template_files_copy_success']);
		}
		else
		{
			show_error_message($GLOBALS['MSG_install']['template_files_copy_error']);
		}
	}

	if (is_file($SiteTemplate->GetTemplatePath() . 'template.php'))
	{
		// Замены в макете
		$aReplace = array();

		// Массив из файла template.xml
		$aTemplateContentXml = $SiteTemplate->GetTemplateContentXml();

		if($aTemplateContentXml
		&& isset($aTemplateContentXml['children'][0]['children'])
		&& count($aTemplateContentXml['children'][0]['children']) > 0)
		{
			// цикл по дереву 'template'
			foreach ($aTemplateContentXml['children'][0]['children'] as $aTemplateValue)
			{
				switch ($aTemplateValue['name'])
				{
					case 'fields':
						$aFields = $SiteTemplate->GetFields($aTemplateValue['children']);

						// цикл по дереву 'fields'
						foreach ($aFields as $aFieldsValue)
						{
							$sFieldName = $aFieldsValue['Name'];
							$sFieldMacros = $aFieldsValue['Macros'];
							$iFieldType = $aFieldsValue['Type'];

							// Файл
							if ($iFieldType == 2)
							{
								if (isset($_FILES[$sFieldMacros]['tmp_name'])
								&& is_file($_FILES[$sFieldMacros]['tmp_name'])
								&& $_FILES[$sFieldMacros]['size'] > 0)
								{
									$sFieldPath = $aFieldsValue['Path'];
									$sFieldExtension = $aFieldsValue['Extension'];

									$sExt = mb_strtolower($kernel->GetExtension($_FILES[$sFieldMacros]['name']));
									$aAllowedExt = explode(',', $sFieldExtension);

									if (strlen(trim($sFieldExtension)) == 0
									|| in_array($sExt, $aAllowedExt))
									{
										if (!move_uploaded_file(to_str($_FILES[$sFieldMacros]['tmp_name']), CMS_FOLDER . $sFieldPath))
										{
											show_error_message(sprintf($GLOBALS['MSG_install']['file_copy_error'], $sFieldPath));
										}
									}
									else
									{
										show_error_message(sprintf($GLOBALS['MSG_install']['file_disabled_extension'], $sFieldName));
									}
								}
							}
							// Остальные типы полей
							else
							{
								$aReplace["%{$sFieldMacros}%"] = $_REQUEST[$sFieldMacros];
							}
						}
					break;

					default:
						break;
				}
			}
		}

		include($SiteTemplate->GetTemplatePath() . 'template.php');
		show_message($GLOBALS['MSG_install']['template_install_success']);
	}
	else
	{
		show_error_message($GLOBALS['MSG_install']['file_not_found'], 'template.php');
	}

	// Установка домена
	$domain = "*." . str_replace('www.', '', $_SERVER['HTTP_HOST']);

	$DataBase = & singleton('DataBase');

	// Удаляем такие же домены, если уже есть
	$DataBase->query("DELETE FROM `site_alias_table` WHERE `alias_name` = '*.hostcms5'");

	// Удаляем такие же домены, если уже есть
	$DataBase->query("DELETE FROM `site_alias_table` WHERE `alias_name` = '".mysql_escape_string($domain)."'");

	// Выбираем последний сайт
	$site_res = $DataBase->select("SELECT * FROM `site_table` ORDER BY `site_id` DESC LIMIT 0,1");
	$site_row = mysql_fetch_assoc($site_res);

	// Есть дополнительный сайт
	if ($site_row['site_id'] != 1)
	{
		// Отключаем демонстрационный сайт
		$DataBase->query("UPDATE `site_table`
		SET `site_is_active` = '0',
		`site_order` = '999'
		WHERE `site_id` = '1'");

		// Переносим группу пользователей новому сайту
		$DataBase->query("UPDATE `users_type_table`
		SET `site_id` = '{$site_row['site_id']}'
		WHERE `site_id` = '1'");
	}

	// Вставляем домен
	$e_b = $DataBase->query("INSERT INTO `site_alias_table` SET `alias_name` = '".mysql_escape_string($domain)."',
	`site_id` = '{$site_row['site_id']}',
	`alias_current` = '1'");

	if (!$e_b)
	{
		show_error_message(sprintf($GLOBALS['MSG_install']['sql_error'], mysql_errno(), mysql_error()));
	}

	echo $GLOBALS['MSG_install']['attention_complete_install'];

	?>
	<div style="float: right">
		<form method="POST" action="index.php"><input name="start"
			value="<?php echo $GLOBALS['MSG_install']['start']?>" type="submit" class="start" />
		</form>
	</div>
	<?php

	bottom_title();
	exit();
}

if (is_file(CONFIG_db) && !isset($_POST['step_lng']) && !isset($_POST['step0']))
{
	head_title($GLOBALS['MSG_install']['error_system_already_install']);

	echo $GLOBALS['MSG_install']['attention_message2'];
	?><table width="100%">
	<tr>
		<td align="left">
		<form method="POST" action="index.php"><input name="start"
			value="<?php echo $GLOBALS['MSG_install']['start']?>" type="submit" class="start" /></form>
		</td>
		<td align="right">
		<form method="POST" action="index.php"><input name="step_lng" value="<?php echo $GLOBALS['MSG_install']['next']?>" type="submit" class="next" /></form>
		</td>
	</tr>
</table><?php
	bottom_title();
	exit();
}
elseif (file_exists(SITE_FOLDER . 'install.php'))
{
	head_title($GLOBALS['MSG_install']['delete_install_file']);

	echo $GLOBALS['MSG_install']['attention_message3'];
	?><form method="POST" action="index.php">
	<div style="float: right"><input name="step0" value="<?php echo $GLOBALS['MSG_install']['next']?>"
		type="submit" class="next" /></div>
	</form><?php

	bottom_title();
}
elseif (isset($_POST['step0']))
{
	head_title($GLOBALS['MSG_install']['step_1']);

	echo $GLOBALS['MSG_install']['attention_message4'];
	?>

<form method="POST" action="index.php">
<div style="float: right"><input name="step1" value="<?php echo $GLOBALS['MSG_install']['next']?>"
	type="submit" class="next" /></div>
</form>
	<?php
	bottom_title();
}
else
{
	head_title('Выбор языка [Change language settings]');

	?>Выберите, пожалуйста, язык [Please select your language]

	<form method="POST" action="index.php">
	<p>
		<select name="language" style="font-size: 150%">
		<?php
		foreach ($LNG as $LNG_index => $LNG_name)
		{
			if ($LNG_index == DEFAULT_LNG)
			{
				$selected = " selected";
			}
			else
			{
				$selected = "";
			}
			?><option value="<?php echo htmlspecialchars($LNG_index)?>"<?php echo $selected?>><?php echo htmlspecialchars($LNG_name)?></option><?php
		}
		?>
		</select>
	</p>
	<div style="float: right">
		<input name="step0" value="Далее / Next" type="submit" class="next" /></div>
	</form>

	<?php
	bottom_title();
}
?>