<?php 
/******************************************************************************/
//                                                                            //
//                             InstantCMS v1.9                                //
//                        http://www.instantcms.ru/                           //
//                                                                            //
//                   written by InstantCMS Team, 2007-2011                    //
//                produced by InstantSoft, (www.instantsoft.ru)               //
//                                                                            //
//                        LICENSED BY GNU/GPL v2                              //
//                                                                            //
/******************************************************************************/

	define('VALID_CMS', 1);

    define('PATH', $_SERVER['DOCUMENT_ROOT']);
    define('HOST', 'http://' . $_SERVER['HTTP_HOST']);

    include('../core/cms.php');

    $inCore     = cmsCore::getInstance(true);
    
    $inCore->loadClass('config');

    $inConf     = cmsConfig::getInstance();

    //Минимальная версия PHP
    $php_req = array();
    $php_req['major']       = '5';
    $php_req['minor']       = '2';
    $php_req['release']     = '0';

    $php_req_ver = $php_req['major'] * 10000 + $php_req['minor'] * 100 + $php_req['release'];

    //Список необходимых расширений PHP
    $ext_req = array();
    $ext_req['mbstring']    = 'mbstring';
    $ext_req['iconv']       = 'iconv';
    $ext_req['GD']          = 'gd';
    $ext_req['SimpleXML']   = 'simplexml';

	if (isset($_POST['install'])){
	
		$msg = '';
	
		if(!empty($_REQUEST['sitename'])) { $sitename = $_REQUEST['sitename']; } else { $sitename = 'Мой сайт'; }
		if(!empty($_REQUEST['db_server'])) { $db_server = $_REQUEST['db_server']; } else { $msg .= 'Необходимо указать сервер БД!<br/>'; }
		if(!empty($_REQUEST['db_base'])) { $db_base = $_REQUEST['db_base']; } else { $msg .= 'Необходимо указать название БД!<br/>'; }
		if(!empty($_REQUEST['db_user'])) { $db_user = $_REQUEST['db_user']; } else { $msg .= 'Необходимо указать пользователя БД!<br/>'; }				
		if(!empty($_REQUEST['db_password'])) { $db_password = $_REQUEST['db_password']; } else { $db_password = ''; }
		if(!empty($_REQUEST['db_prefix'])) { $db_prefix = $_REQUEST['db_prefix']; } else { $msg .= 'Необходимо указать префикс БД!<br/>'; }				
		if(!empty($_REQUEST['admin_login'])) { $admin_login = $_REQUEST['admin_login']; } else { $msg .= 'Необходимо указать логин администратора!<br/>'; }
		if(!empty($_REQUEST['admin_password'])) { $admin_password = $_REQUEST['admin_password']; } else { $msg .= 'Необходимо указать пароль администратора!<br/>'; }

		if(!$msg){
		
			//INSTALL SYSTEM
			$_CFG = array(); 
			$_CFG['sitename']   = $sitename;
			$_CFG['db_host']    = $db_server;
			$_CFG['db_base']    = $db_base;
			$_CFG['db_user']    = $db_user;
			$_CFG['db_pass']    = $db_password;
			$_CFG['db_prefix']  = $db_prefix;
			$_CFG['template']   = '_default_';
			$_CFG['tooltips']   = '1';
			$_CFG['index_pw']   = '0';
			$_CFG['show_pw']    = '1';
			$_CFG['short_pw']   = '0';
			$_CFG['splash']     = '0';
			$_CFG['stats']      = '0';
			$_CFG['slight']     = '1';
			$_CFG['siteoff']    = '0';
			$_CFG['offtext']    = 'Производится обновление сайта';
			$_CFG['keywords']   = 'InstantCMS, система управления сайтом, бесплатная CMS, движок сайта, CMS, движок социальной сети';
			$_CFG['metadesc']   = 'InstantCMS - бесплатная система управления сайтом с социальными функциями';
			$_CFG['fastcfg']    = '1';
            $_CFG['debug']      = '0';
            $_CFG['lang']       = 'ru';
            $_CFG['wmark']      = 'watermark.png';
            $_CFG['back_btn']   = '0';
            $_CFG['timezone']   = 'Europe/Moscow';
            $_CFG['timediff']   = '0';
			$_CFG['allow_ip']   = '';

            $inConf->saveToFile($_CFG);
			
			$GLOBALS['db'] = @mysql_connect($_CFG['db_host'], $_CFG['db_user'], $_CFG['db_pass']);
			
			if (mysql_error()) { 
				$msg .= 'Не удалось установить соединение c MySQL.<br/>
						 Проверьте адрес сервера MySQL и правильность пользователя и пароля БД.<br/>
						 За уточнением этих параметров вы можете обратиться к своему хостеру.'; }
			else {
				@mysql_select_db($_CFG['db_base'], $GLOBALS['db']);
				if (mysql_error()) { 
					$msg .= 'Не удалось открыть БД MySQL.<br/>
							 База данных "'.$_CFG['db_base'].'" не найдена на указанном сервере.<br/>
						 	 За уточнением этих параметров вы можете обратиться к своему хостеру.'; 
				}
			}
			
			if(!$msg){
									
                $sql_file = ((int)$_REQUEST['demodata']==1 ?'sqldumpdemo.sql' : 'sqldumpempty.sql');
				
                include(PATH.'/includes/database.inc.php');
                include(PATH.'/includes/dbimport.inc.php');

                mysql_query("SET NAMES cp1251");

                dbRunSQL(PATH.'/install/'.$sql_file, $db_prefix);

                $sql = "UPDATE {$db_prefix}_users
                        SET password = md5('{$admin_password}'),
                            login = '{$admin_login}'
                        WHERE id = 1";
            
                mysql_query($sql);

                $installed = (mysql_error() ? 0 : 1);

                $sql = "UPDATE {$db_prefix}_users
                        SET password = md5('{$admin_password}')
                        WHERE id > 1";

                mysql_query($sql);

			}
					
		}
	
	}

// =================================================================================================== //

function getPHPVersion(){
    $version['text'] = phpversion();
    $version['int']  = $version['text'][0] * 10000 + $version['text'][2] * 100 + $version['text'][4];
    return $version;
}

function installCheckFolders(){
	$folders = array();
	$folders[] = '/images';
	$folders[] = '/upload';
	$folders[] = '/includes';
	$folders[] = '/backups';
    $folders[] = '/cache';
	
	echo '<table align="center">';
		echo '<tr>';
			echo '<th width="260">Папка</th>';
			echo '<th style="text-align:center" width="170">Доступна для записи</th>';
		echo '</tr>';

	foreach($folders as $key=>$folder){	
		$right = true;
		if(!@is_writable(PATH.$folder)){
			if (!@chmod(PATH.$folder, 0777)){
				$right = false;;
			}
		}
		echo '<tr>';
			echo '<td class="folder">'.$folder.'</td>';
			echo '<td style="text-align:center">'.($right ? '<span style="color:green">Да</span>' : '<span style="color:red">Нет</span>').'</td>';
		echo '</tr>';
	}
	
	echo '</table>';
}

// =================================================================================================== //

function installCheckExtensions(){

    global $ext_req;
    global $php_req;
    global $php_req_ver;

	echo '<table align="center">';
		echo '<tr>';
			echo '<th width="300">Расширение PHP</th>';
			echo '<th style="text-align:center" width="70">Установлено</th>';
		echo '</tr>';
        
    $all_right = true;

	foreach($ext_req as $name=>$ext){
		$right = true;
		if(!extension_loaded($ext)){
            $right = false;
            $all_right = false;
		}
		echo '<tr>';
			echo '<td class="extension"><a href="http://ru.php.net/manual/ru/book.'.$ext.'.php" title="Посмотреть описание на сайте PHP">'.$name.'</td>';
			echo '<td style="text-align:center">'.($right ? '<span style="color:green">Да</span>' : '<span style="color:red">Нет</span>').'</td>';
		echo '</tr>';
	}

	echo '</table>';

    if (!$all_right){
        echo '<p>Для установки отсутствующих расширений обратитесь к вашему хостеру.</p>';
        echo '<p><a href="http://www.instantcms.ru/forum/0/thread1345-1.html">Как установить mbstring на Денвер</a> читайте на нашем форуме.</p>';
    }

    $php_ver = getPHPVersion();

    $right = true;
    $php53 = false;
    
    if ($php_ver['int'] < $php_req_ver) { $right=false; }

    echo '<p><strong>Версия PHP:</strong> '.$php_ver['text'].' &mdash '.($right ? '<span style="color:green">Оk</span>' : '<span style="color:red">требуется '.$php_req['major'].'.'.$php_req['minor'].'.'.$php_req['release'].' или выше</span>').'</p>';

    if (!$right){
        echo '<p>Для обновления PHP обратитесь к своему хостеру.</p>';
    }
    
}

// =================================================================================================== //
?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>InstantCMS - Установка</title>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
	<script src='/includes/jquery/jquery.js' type='text/javascript'></script>
	<script src='/install/js/jquery.wizard.js' type='text/javascript'></script>
	<script src='/install/js/install.js' type='text/javascript'></script>
	<link type='text/css' href='/install/css/styles.css' rel='stylesheet' media='screen' />
</head>

<body>

	<table id="wrapper" align="center">
	<tr><td>

		<h1 id="header">
			Установка InstantCMS <?php echo CORE_VERSION; ?>
		</h1>
		
		<?php if(!isset($msg)){ ?>
		
		<form class="wizard" action="#" method="post" >
			<div class="wizard-nav"  align="center">			
				<a href="#start">Начало</a>
				<a href="#php">Проверка PHP</a>
				<a href="#folders">Проверка прав</a>
				<a href="#install">Установка</a>
			</div>
			<!-- ================================================================ -->
					
			<div id="start" class="wizardpage">
				<h2>Добро пожаловать</h2>
				<img src="/install/images/start.gif" border="0" />
				<p>
					Cкрипт установки проверит сервер на соответствие техническим требованиям и совершит все 
					необходимые действия для начала работы с InstantCMS.
				</p>
                <p>Устанавливать InstantCMS можно только в корневую папку сайта.</p>
				<p>
					Перед началом установки создайте новую базу данных MySQL на вашем хостинге.
				</p>
				<p>Как установить систему на локальный компьютер с ОС Windows&trade; для тестирования, читайте в <a href="http://www.instantcms.ru/wiki/doku.php/%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B4%D0%B5%D0%BD%D0%B2%D0%B5%D1%80" target="_blank">инструкции</a> на официальном сайте.</p>

                <p>InstantCMS распространяется по лицензии GNU/GPL версии 2. Вы должны согласиться с условиями этой лицензии для установки системы.</p>

                <table cellpadding="0" cellspacing="0" border="0">
                    <tr>
                        <td width="20"><input type="checkbox" id="license_agree" onClick="checkAgree()"/></td>
                        <td>
                            <label for="license_agree">Я согласен с условиями</label>
                            <a target="_blank" href="/license.rus.win.txt">лицензии GNU/GPL</a>
                            (<a target="_blank" href="http://www.gnu.org/licenses/gpl-2.0.html">оригинал на английском</a>)</p></td>
                    </tr>
                </table>

			</div>

			<!-- ================================================================ -->

			<div id="php" class="wizardpage">

                <h2>Проверка расширений PHP</h2>
                <img src="/install/images/extensions.gif" border="0" />

                <p>
					Для корректной работы InstantCMS необходимо чтобы PHP на вашем сервере имел установленные расширения, перечисленные ниже.
				</p>

                <?php installCheckExtensions(); ?>

			</div>

			<!-- ================================================================ -->
			
			<div id="folders" class="wizardpage">
				<h2>Проверка прав на папки</h2>
				<img src="/install/images/folders.gif" border="0" />

                <p>
					Для корректной работы InstantCMS указанные ниже папки должны быть доступны для записи.
					Сменить права на папки можно с помощью FTP-клиента, например Total Commander или FAR.
				</p>

				<?php installCheckFolders(); ?>

				<p>
					Если вы не знаете или сомневаетесь какие права нужно установить, чтобы сделать папку доступной для записи, обратитесь
                    в техническую поддержку вашего хостинга.
				</p>

				<p>
					Установку можно произвести и не выставляя права, но полноценное функционирование системы при этом не гарантируется.
				</p>

			</div>

			<!-- ================================================================ -->
			
		  <div id="install" class="wizardpage">
                <h2>Установка</h2>
                <p>Заполните форму и нажмите "Установить" для завершения процесса.</p>

                <table cellpadding="0" cellspacing="0" border="0" width="100%">
                    <tr>
                        <td width="140" valign="top">
                            <img src="/install/images/install.gif" border="0" />
                        </td>
                        <td valign="top">
                            <table width="" border="0" cellpadding="4" cellspacing="0" style="margin-bottom:10px">
                              <tr>
                                <td width="220">Название сайта:</td>
                                <td width="" align="center"><input name="sitename" type="text" class="txt" value="Моя социальная сеть"></td>
                              </tr>
                              <tr>
                                <td>Логин администратора сайта:</td>
                                <td align="center"><input name="admin_login" type="text" class="txt" value="admin"></td>
                              </tr>
                              <tr>
                                <td>Пароль администратора сайта:</td>
                                <td align="center"><input name="admin_password" type="password" class="txt"></td>
                              </tr>
                            </table>
                            <table width="" border="0" cellpadding="4" cellspacing="0" style="margin-bottom:0px">
                              <tr>
                                <td width="220">Сервер MySQL: </td>
                                <td align="center"><input name="db_server" type="text" class="txt" value="localhost"></td>
                              </tr>
                              <tr>
                                <td>База данных: </td>
                                <td align="center"><input name="db_base" type="text" class="txt"></td>
                              </tr>
                              <tr>
                                <td>Пользователь БД: </td>
                                <td align="center"><input name="db_user" type="text" class="txt" value="root"></td>
                              </tr>
                              <tr>
                                <td>Пароль пользователя БД: </td>
                                <td align="center"><input name="db_password" type="password" class="txt"></td>
                              </tr>
                              <tr>
                                <td>Префикс таблиц в базе данных: </td>
                                <td align="center"><input name="db_prefix" type="text" class="txt" value="cms"></td>
                              </tr>
                              <tr>
                                <td>Демо-данные:</td>
                                <td align="center" valign="top">
                                    <label><input name="demodata" type="radio" value="1" checked /> Да</label>
                                    <label><input name="demodata" type="radio" value="0" /> Нет</label>
                                </td>
                              </tr>
                            </table>
                        </td>
                    </tr>
                </table>

				<p style="color:gray">
                    При установке с демо-данными всем пользователям будет установлен одинаковый пароль, совпадающий с паролем администратора.
                    Логин каждого пользователя можно узнать из адреса его профиля или из панели управления.
                </p>

                <p>Установка может занять от секунд до нескольких минут, в зависимости от скорости вашего сервера.</p>
				
				</div>
		</form>
		
		<?php }
					
			if (isset($msg) && @$msg != ''){ 
				echo '<div style="margin-left:52px;_margin-left:0px">';
				echo '<h2>Обнаружена ошибка!</h2>';
				echo '<p style="color:red">'.$msg.'</p>';
				echo '<p><a href="index.php">Повторить ввод данных</a></p>';
				echo '</div>';
			}
			
			if (isset($installed)){
				if($installed){
					echo '<div style="margin-left:52px;_margin-left:0px">';
					echo '<h2>Установка завершена!</h2>';
					echo '<div>';
					echo '<p>Система установлена и готова к работе.</p>';
					echo '<div style="background:url(/install/images/cron.png) no-repeat;padding-left:24px;margin-top:30px;margin-bottom:30px;">
                            <div style="margin-bottom:6px;"><strong>Создайте задание для CRON</strong></div>
                            <div>
                                Добавьте файл <strong>/cron.php</strong> в расписание заданий CRON в панели вашего хостинга.<br/>
                                Интервал выполнения &mdash; 24 часа. Это позволит системе выполнять периодические сервисные задачи. 
                                Обычно команда, которую нужно добавить в CRON, выглядит так:
                                <pre class="cron">  php -f /полный/путь/до/сайта/cron.php > /dev/null</pre>
                            </div>
                            <div>
                                В случае затруднений обратитесь в техническую поддержку хостинга.
                            </div>
                          </div>';
					echo '<div style="background:url(/install/images/warning.png) no-repeat;padding-left:24px;margin-top:30px;margin-bottom:30px;">
                            <div style="margin-bottom:6px;"><strong>Внимание!</strong></div>
                            До перехода на сайт необходимо удалить каталоги "install" и "migrate"<br/>
                            на сервере вместе со всеми находящимися в них файлами!
                          </div>';
					echo '<p style="font-size:18px"><a href="/">Перейти на сайт</a> | <a href="/admin">Перейти в панель управления</a></p>';
					echo '<p>
                            <a id="tutorial" href="http://www.instantcms.ru/articles/quickstart.html">Учебник для начинающих</a>
                            <a id="video" href="http://www.instantcms.ru/video-lessons.html">Видео-уроки</a>
                          </p>';
					echo '</div>';
					echo '</div>';
				}
			}
		?>
	
		<div id="footer">
			<a href="http://www.instantcms.ru/" target="_blank"><strong>InstantCMS</strong></a> &copy; 2007-<?php echo date('Y'); ?>
		</div>
		
	</div>
	</td></tr></table>
</body>
</html>
