<?php
# Morgan
$sqls = array
(
'SET NAMES utf8',
'CREATE TABLE `mf_config` ( `name` varchar(100) NOT NULL, `value` text NOT NULL, PRIMARY KEY (`name`)) ENGINE=MyISAM DEFAULT CHARSET=cp1251',
'INSERT INTO `mf_config` (`name`, `value`) VALUES(\'path\', \'{$path}\'),(\'salt\', \'some salt '.PHP_VERSION.' '.count($_SERVER).' '.rand(1,100).'\'),(\'salt_int\', \''.rand(1, 20).'\'),(\'onpage_topics\', \'15\'),(\'onpage_posts\', \'20\'),(\'time_antispam_topics\', \'10\'),(\'time_antispam_posts\', \'3\'),(\'maxlen_post\', \'50000\'),(\'time_edit_post\', \'600\'),(\'time_shift\', \'0\'),(\'index_title\', \'Трололо\'),(\'users_active\', \'1\'),(\'mod_reply_to\', \'1\'),(\'time_antispam_private\', \'15\'),(\'open_reg\', \'1\'),(\'maxlen_short_post\', \'40\'),(\'time_silence\', \'0\'),(\'domain\', \'\'),(\'date_start_forum\', \''.strtotime('Today').'\')', 'CREATE TABLE `mf_forums` ( `id` int(11) NOT NULL auto_increment, `name` varchar(50) NOT NULL, `description` varchar(250) NOT NULL, `position` int(11) NOT NULL, `level` enum(\'0\',\'1\',\'2\',\'3\') NOT NULL, `level_topics` enum(\'0\',\'1\',\'2\',\'3\') NOT NULL, `count_topics` int(11) NOT NULL, `count_posts` int(11) NOT NULL, `counter_posts` tinyint(1) NOT NULL, `counter_topics` tinyint(1) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_posts` ( `id` int(11) NOT NULL auto_increment, `tid` int(11) NOT NULL, `fid` int(11) NOT NULL, `user_id` int(11) NOT NULL, `date` int(11) NOT NULL, `ip` bigint(20) NOT NULL, `ua` varchar(250) NOT NULL, `edit_count` tinyint(4) NOT NULL, `edit_date` int(11) NOT NULL, `edit_user_id` int(11) NOT NULL, `answer_to` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `author_id` (`user_id`), KEY `ip` (`ip`), KEY `date` (`date`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_posts_answers` ( `pid` int(11) NOT NULL, `user_id` int(11) NOT NULL, `answer_pid` int(11) NOT NULL, `answer_user` int(11) NOT NULL, `tid` int(11) NOT NULL, `date` int(11) NOT NULL, PRIMARY KEY (`pid`,`answer_pid`), KEY `pid` (`pid`)) ENGINE=MyISAM DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_posts_text` ( `pid` int(11) NOT NULL, `text` longtext NOT NULL, PRIMARY KEY (`pid`)) ENGINE=MyISAM DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_private_contacts` ( `user_id` int(11) NOT NULL, `contact_user_id` int(11) NOT NULL, PRIMARY KEY (`user_id`,`contact_user_id`)) ENGINE=MyISAM DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_private_messages` ( `id` int(11) NOT NULL auto_increment, `user_id` int(11) NOT NULL, `to_user_id` int(11) NOT NULL, `new` enum(\'0\',\'1\') NOT NULL, `date` int(11) NOT NULL, `text` text NOT NULL, `ip` bigint(20) NOT NULL, `ua` varchar(250) NOT NULL, PRIMARY KEY (`id`), KEY `user_id` (`user_id`), KEY `to_user_id` (`to_user_id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_rules` ( `id` int(11) NOT NULL auto_increment, `cid` int(11) NOT NULL, `title` varchar(70) NOT NULL, `text` text NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_rules_cats` ( `id` int(11) NOT NULL auto_increment, `name` varchar(50) NOT NULL, `position` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_topics` ( `id` int(11) NOT NULL auto_increment, `fid` int(11) NOT NULL, `name` varchar(100) NOT NULL default \'\', `user_id` int(11) NOT NULL, `date` int(11) NOT NULL, `last_user_id` int(11) NOT NULL, `last_date` int(11) NOT NULL, `first_post` int(11) NOT NULL, `first_post_on_pages` enum(\'0\',\'1\') NOT NULL COMMENT \'0\', `not_edit_author` enum(\'0\',\'1\') NOT NULL COMMENT \'0\', `answer_to` int(11) NOT NULL, `count_posts` int(11) NOT NULL, `open` int(11) NOT NULL, `top` enum(\'0\',\'1\') NOT NULL, `level` enum(\'0\',\'1\',\'2\',\'3\') NOT NULL, `level_posts` enum(\'0\',\'1\',\'2\',\'3\') character set utf8 NOT NULL, `count_all_views` int(11) NOT NULL, `count_views` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `author_id` (`user_id`), KEY `fid` (`fid`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_topics_bookmarks` ( `tid` int(11) NOT NULL, `user_id` int(11) NOT NULL, `date` int(11) NOT NULL, PRIMARY KEY (`tid`,`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_topics_logs` ( `tid` int(11) NOT NULL, `date` int(11) NOT NULL, `user_id` int(11) NOT NULL, `text` text NOT NULL, `ip` bigint(20) NOT NULL, `ua` varchar(250) NOT NULL, KEY `tid` (`tid`)) ENGINE=MyISAM DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_topics_views` ( `tid` int(11) NOT NULL, `user_id` int(11) NOT NULL, `date` int(11) NOT NULL, PRIMARY KEY (`tid`,`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_users` ( `id` int(11) NOT NULL auto_increment, `login` varchar(40) NOT NULL, `nick` varchar(40) NOT NULL, `password` varchar(32) NOT NULL, `active` enum(\'0\',\'1\') NOT NULL default \'0\', `level` enum(\'1\',\'2\',\'3\') NOT NULL default \'1\', `date_reg` int(11) NOT NULL, `date_last_visit` int(11) NOT NULL, `set_onpage_topics` tinyint(4) NOT NULL, `set_onpage_posts` tinyint(4) NOT NULL, `set_fast_post` enum(\'0\',\'1\') NOT NULL, `set_time_shift` tinyint(2) NOT NULL, `ip` bigint(20) NOT NULL, `ua` varchar(250) NOT NULL, `page` varchar(250) NOT NULL, `info_name` varchar(50) NOT NULL, `info_city` varchar(70) NOT NULL, `info_sex` enum(\'0\',\'1\') NOT NULL, `info_icq` int(9) NULL, `punish_ban` enum(\'0\',\'1\') NOT NULL, `punish_pid` int(11) NOT NULL, `punish_to_date` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `login` (`login`), UNIQUE KEY `nick` (`nick`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251',
'CREATE TABLE `mf_users_punishes` ( `id` int(11) NOT NULL auto_increment, `user_id` int(11) NOT NULL, `punished_user_id` int(11) NOT NULL, `rule` int(11) NOT NULL, `date` int(11) NOT NULL, `to_date` int(11) NOT NULL, `comment` tinytext NOT NULL, `pid` int(11) NOT NULL, `ban` enum(\'0\',\'1\') NOT NULL, `close_private` enum(\'0\',\'1\') NOT NULL, `ip` bigint(20) NOT NULL, `ua` varchar(250) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251',
);
$allcfg_ini_pattern = '[db]
host={$server}
user={$user_name}
password={$user_password}
database={$db}
prefix=mf_
[db_localhost]
host={$server}
user={$user_name}
password={$user_password}
database={$db}
prefix=mf_
[other]
root={$root}';
if(file_exists('sys/cfg/allcfg.ini') && filesize('sys/cfg/allcfg.ini') > 0)die('Скрипт уже установлен!');
echo '<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"><head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> <link rel="stylesheet" href="style/style.css" type="text/css" /> <title>Установка</title> <!-- Created by Morgan --></head><body>';
function xchmod($file){ return decoct(fileperms($file)) % 1000; }
$step = isset($_GET['step']) && (int)$_GET['step'] > 0 ? (int)$_GET['step'] : 1;
switch($step)
{
default:
echo '<div class="head">Проверка всех файлов</div><br />';
$files = array
(
'sys/tpl/',
'sys/tpl/admin.page.tpl',
'sys/tpl/captcha.block.tpl',
'sys/tpl/confirm.block.tpl',
'sys/tpl/err.block.tpl',
'sys/tpl/footer.tpl',
'sys/tpl/forum.page.tpl',
'sys/tpl/header.tpl',
'sys/tpl/index.page.tpl',
'sys/tpl/login.page.tpl',
'sys/tpl/msg.block.tpl',
'sys/tpl/post.page.tpl',
'sys/tpl/topic.page.tpl',
'sys/tpl/umenu.page.tpl',
'sys/tpl/user.block.tpl',
'sys/tpl/user.page.tpl',
'sys/tpl_compile/',
'sys/cfg/allcfg.ini',
'sys/cfg/sitemap.xml',
'install.php'
);
$error = false;
for($c = count($files), $i = 0;$i < $c;$i ++)
{
if(file_exists($files[$i]))
{
if(is_writable($files[$i]))
{
echo 'Запись разрешена : <font color="green">'.$files[$i].'</font><br />';
}
else
{
$error = true;
echo 'Запись запрещена : <font color="red">'.$files[$i].'</font><br />';
echo 'Поставьте на данный файл права доступа (chmod) 777, в данный момент права доступа '.xchmod($files[$i]).'<br />';
}
}
else
{
$error = true;
echo 'Файл '.$files[$i].' <font color="red">не существует</font><br />';
}
}
if($error)echo '<font color="red">Возникли ошибки. Продолжение установки невозможно.</font><br />';
else echo '<a href="install.php?step=2">Далее</a>»<br />';
break;
##########################################################################################################################
case 2:
echo '<div class="head">Проверка совместимости ПО</div><br />';
$error = false;
if(version_compare(PHP_VERSION, '5.1.0', '>='))
{
echo 'PHP : <font color="green">'.PHP_VERSION.'</font><br />';
}
else
{
$error = true;
echo 'PHP : <font color="red">'.PHP_VERSION.'</font> (а требуется 5.2.1)<br />';
}
if(version_compare(GD_VERSION, '2.0.1', '>='))
{
echo 'GDlib : <font color="green">'.GD_VERSION.'</font><br />';
}
else
{
$error = true;
echo 'GDlib : <font color="red">'.GD_VERSION.'</font> (а требуется 2.0.1)<br />';
}
if(extension_loaded('mysql'))
{
echo 'MySQL : <font color="green">Установлено</font><br />';
}
else
{
$error = true;
echo 'MySQL : <font color="red">Не установлено</font><br />';
}
if(extension_loaded('mbstring'))
{
echo 'MbString : <font color="green">Установлено</font><br />';
}
elseif(extension_loaded('iconv'))
{
echo 'Iconv : <font color="green">Установлено</font><br />';
}
else
{
$error = true;
echo 'MbString || Iconv : <font color="red">Не установлено</font><br />';
}
$apache_modules = apache_get_modules();
if(in_array('mod_rewrite', $apache_modules))
{
echo 'Mod Rewrite : <font color="green">Установлен</font><br />';
}
else
{
$error = true;
echo 'Mod Rewrite : <font color="red">Не установлен</font><br />';
}
if(function_exists('gzdeflate'))
{
echo 'Zlib : <font color="green">Установлен</font><br />';
}
else
{
$error = true;
echo 'Zlib : <font color="red">Не установлен</font><br />';
}
if($error)echo '<font color="red">Возникли ошибки. Продолжение установки невозможно.</font><br />';
else echo '<a href="install.php?step=3">Далее</a>»<br />';
break;
##########################################################################################################################
case 3:
echo '<div class="head">Настройка</div><br />';
$path = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME']));
if(substr($path, -1) != '/')$path .= '/';
echo '<form action="install.php?step=4" method="post">';
echo 'Сервер : <br />';
echo '<input type="text" name="server" value="localhost"/><br />';
echo 'Имя пользователя : <br />';
echo '<input type="text" name="user_name" value="root"/><br />';
echo 'Пароль пользователя : <br />';
echo '<input type="password" name="user_password"/><br />';
echo 'База данных : <br />';
echo '<input type="text" name="db"/><br />';
echo '<label><input type="checkbox" name="not_import_tables" value="1"/>Не импортировать таблицы (если таблицы у вас уже залиты)</label><br />';
echo 'Папка, куда устанавливается скрипт : <br />';
echo '<input type="text" name="path" value="'.$path.'"/><br />';
echo '<input type="submit" value="Далее"/>';
echo '</form>';
break;
#########################################################################################################################
case 4:
if(!isset($_POST['server']) || !isset($_POST['user_name']) || !isset($_POST['user_password']) || !isset($_POST['db']) || !isset($_POST['path']))
{
header('Location: install.php?step=3');
exit;
}
echo '<div class="head">Завершение установки</div><br />';
$server = trim($_POST['server']);
$user_name = trim($_POST['user_name']);
$user_password = trim($_POST['user_password']);
$db = trim($_POST['db']);
$path = $_POST['path'];
$root = $_SERVER['DOCUMENT_ROOT'].'/';
if(!file_exists($_SERVER['DOCUMENT_ROOT'].'/robots.txt') || file_get_contents($_SERVER['DOCUMENT_ROOT'].'/robots.txt') != file_get_contents('robots.txt'))
{
$root .= (substr($path, 0, 1) == '/' ? substr($path, 1) : $path);
}
if(($connect = mysql_connect($server, $user_name, $user_password)))
{
if(mysql_select_db($db, $connect))
{
$error = false;
if(!isset($_POST['not_import_tables']))
{
for($c = count($sqls), $i = 0;$i < $c;$i ++)
{
if(mysql_query(str_replace('{$path}', $path, $sqls[$i])) === false)$error = true;
}
}
if($error)echo '<font color="red">Возникла ошибка во время импорта базы данных.</font><br />';
else
{
if(file_put_contents('sys/cfg/allcfg.ini', str_replace(array('{$server}', '{$user_name}', '{$user_password}', '{$db}', '{$root}'), array($server, $user_name, $user_password, $db, $root), $allcfg_ini_pattern)))
{
echo '<font color="green"><b>Скрипт успешно установлен!</b></font><br />';
echo 'База данных импортирована, настройки записаны.<br />';
echo 'Теперь вы можете <a href="index.php">зайти</a> на форум и <a href="login.php?mode=login">зарегистрироваться</a>.<br />';
echo 'Первый зарегистрированный пользователь автоматически становится администратором.<br />';
if(@unlink('install.php'))echo 'Во избежании неудобств, установочный файл удален.<br />';
else echo 'Также удалите файл install.php<br />';
echo 'Если не удалось удалить файл, сделайте это самостоятельно.<br />';
echo '<br />';
echo 'Удачного пользования :)<br />';
}
else
{
echo '<font color="red">Не удается записать файл sys/cfg/allcfg.ini</font><br />';
}
}
}
else
{
echo '<font color="red">Невозможно выбрать базу данных.</font><br />';
}
}
else
{
echo '<font color="red">Невозможно подключиться к серверу. Проверьте имя пользователя и пароль.</font><br />';
}
break;
}
echo '<div class="foot">©Morgan</div></body></html>';
ob_end_flush();
exit;
# Morgan
?>