Browse Source

Passphrase

Visman 8 years ago
parent
commit
3101e4c1fe

+ 0 - 2248
app/Core/Install.php

@@ -1,2248 +0,0 @@
-<?php
-
-namespace ForkBB\Core;
-
-use ForkBB\Core\Container;
-use RuntimeException;
-
-class Install
-{
-    /**
-     * @var Request
-     */
-    protected $request;
-
-    /**
-     * Контейнер
-     * @var Container
-     */
-    protected $c;
-
-    /**
-     * Конструктор
-     * @param Request $request
-     */
-    public function __construct($request, Container $container)
-    {
-        $this->request = $request;
-        $this->c = $container;
-    }
-
-    /**
-     * @throws \RuntimeException
-     * @return string
-     */
-    protected function generate_config_file($base_url, $db_type, $db_host, $db_name, $db_username, $db_password, $db_prefix, $cookie_prefix)
-    {
-        $config = file_get_contents($this->c->DIR_CONFIG . '/main.dist.php');
-        if (false === $config) {
-            throw new RuntimeException('No access to main.dist.php.');
-        }
-        $config = str_replace('_BASE_URL_', addslashes($base_url), $config);
-        $config = str_replace('_DB_TYPE_', addslashes($db_type), $config);
-        $config = str_replace('_DB_HOST_', addslashes($db_host), $config);
-        $config = str_replace('_DB_USERNAME_', addslashes($db_username), $config);
-        $config = str_replace('_DB_PASSWORD_', addslashes($db_password), $config);
-        $config = str_replace('_DB_NAME_', addslashes($db_name), $config);
-        $config = str_replace('_DB_PREFIX_', addslashes($db_prefix), $config);
-        $config = str_replace('_COOKIE_PREFIX_', addslashes($cookie_prefix), $config);
-        $config = str_replace('_SALT_FOR_HMAC_', addslashes($this->c->Secury->randomPass(21)), $config);
-
-        return $config;
-    }
-
-    /**
-     * @throws \RuntimeException
-     */
-    public function install()
-    {
-
-        /**
-         * Copyright (C) 2008-2012 FluxBB
-         * based on code by Rickard Andersson copyright (C) 2002-2008 PunBB
-         * License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
-         */
-
-        // Send the Content-type header in case the web server is setup to send something else
-        header('Content-type: text/html; charset=utf-8');
-
-        // Turn off PHP time limit
-        @set_time_limit(0);
-
-        // If we've been passed a default language, use it
-        $install_lang = $this->request->requestStr('install_lang', 'English');
-
-        // Make sure we got a valid language string
-        $install_lang = preg_replace('%[\.\\/]%', '', $install_lang);
-
-        // If such a language pack doesn't exist, or isn't up-to-date enough to translate this page, default to English
-        if (! file_exists(PUN_ROOT . 'lang/' . $install_lang . '/install.php'))
-            $install_lang = 'English';
-
-        require PUN_ROOT . 'lang/' . $install_lang . '/install.php';
-
-        // Make sure we are running at least MIN_PHP_VERSION
-        if (! function_exists('version_compare') || version_compare(PHP_VERSION, MIN_PHP_VERSION, '<')) {
-            throw new RuntimeException(sprintf($lang_install['You are running error'], 'PHP', PHP_VERSION, FORK_VERSION, MIN_PHP_VERSION));
-        }
-
-
-        if ($this->request->isPost('generate_config'))
-        {
-            header('Content-Type: text/x-delimtext; name="main.php"');
-            header('Content-disposition: attachment; filename=main.php');
-
-            $base_url = $this->request->postStr('base_url', '');
-            $db_type = $this->request->postStr('db_type', '');
-            $db_host = $this->request->postStr('db_host', '');
-            $db_name = $this->request->postStr('db_name', '');
-            $db_username = $this->request->postStr('db_username', '');
-            $db_password = $this->request->postStr('db_password', '');
-            $db_prefix = $this->request->postStr('db_prefix', '');
-            $cookie_prefix = $this->request->postStr('cookie_prefix', '');
-
-            echo $this->generate_config_file($base_url, $db_type, $db_host, $db_name, $db_username, $db_password, $db_prefix, $cookie_prefix);
-            exit; //????
-        }
-
-
-        if (! $this->request->isPost('form_sent'))
-        {
-            // Make an educated guess regarding base_url
-            $base_url  = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';    // protocol
-            $base_url .= preg_replace('%:(80|443)$%', '', $_SERVER['HTTP_HOST']);                            // host[:port]
-            $base_url .= str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME']));                            // path
-
-            if (substr($base_url, -1) == '/')
-                $base_url = substr($base_url, 0, -1);
-
-            $db_type = $db_name = $db_username = $db_prefix = $username = $email = '';
-            $db_host = 'localhost';
-            $title = $lang_install['My ForkBB Forum'];
-            $description = '<p><span>'.$lang_install['Description'].'</span></p>';
-            $default_lang = $install_lang;
-            $default_style = 'Air';
-        }
-        else
-        {
-            $db_type = trim($this->request->postStr('req_db_type'));
-            $db_host = trim($this->request->postStr('req_db_host'));
-            $db_name = trim($this->request->postStr('req_db_name'));
-            $db_username = trim($this->request->postStr('db_username'));
-            $db_password = trim($this->request->postStr('db_password'));
-            $db_prefix = trim($this->request->postStr('db_prefix'));
-            $username = trim($this->request->postStr('req_username'));
-            $email = strtolower(trim($this->request->postStr('req_email')));
-            $password1 = trim($this->request->postStr('req_password1'));
-            $password2 = trim($this->request->postStr('req_password2'));
-            $title = trim($this->request->postStr('req_title'));
-            $description = trim($this->request->postStr('desc'));
-            $base_url = trim($this->request->postStr('req_base_url'));
-            $default_lang = trim($this->request->postStr('req_default_lang'));
-            $default_style = trim($this->request->postStr('req_default_style'));
-            $alerts = array();
-
-            // Make sure base_url doesn't end with a slash
-            if (substr($base_url, -1) == '/')
-                $base_url = substr($base_url, 0, -1);
-
-            // Validate username and passwords
-            if (mb_strlen($username) < 2)
-                $alerts[] = $lang_install['Username 1'];
-            else if (mb_strlen($username) > 25) // This usually doesn't happen since the form element only accepts 25 characters
-                $alerts[] = $lang_install['Username 2'];
-            else if (! strcasecmp($username, 'Guest'))
-                $alerts[] = $lang_install['Username 3'];
-            else if (preg_match('%[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}%', $username) || preg_match('%((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))%', $username))
-                $alerts[] = $lang_install['Username 4'];
-            else if ((strpos($username, '[') !== false || strpos($username, ']') !== false) && strpos($username, '\'') !== false && strpos($username, '"') !== false)
-                $alerts[] = $lang_install['Username 5'];
-            else if (preg_match('%(?:\[/?(?:b|u|i|h|colou?r|quote|code|img|url|email|list)\]|\[(?:code|quote|list)=)%i', $username))
-                $alerts[] = $lang_install['Username 6'];
-
-            if (mb_strlen($password1) < 6)
-                $alerts[] = $lang_install['Short password'];
-            else if ($password1 != $password2)
-                $alerts[] = $lang_install['Passwords not match'];
-
-            // Validate email
-            require PUN_ROOT.'include/email.php';
-
-            if (! is_valid_email($email))
-                $alerts[] = $lang_install['Wrong email'];
-
-            if ($title == '')
-                $alerts[] = $lang_install['No board title'];
-
-            $languages = forum_list_langs();
-            if (! in_array($default_lang, $languages))
-                $alerts[] = $lang_install['Error default language'];
-
-            $styles = forum_list_styles();
-            if (! in_array($default_style, $styles))
-                $alerts[] = $lang_install['Error default style'];
-        }
-
-        // Check if the cache directory is writable
-        if (! forum_is_writable($this->c->DIR_CACHE))
-            $alerts[] = sprintf($lang_install['Alert cache'], $this->c->DIR_CACHE);
-
-        // Check if default avatar directory is writable
-        if (! forum_is_writable(PUN_ROOT . 'img/avatars/'))
-            $alerts[] = sprintf($lang_install['Alert avatar'], PUN_ROOT . 'img/avatars/');
-
-        if (! $this->request->isPost('form_sent') || ! empty($alerts))
-        {
-            // Determine available database extensions
-            $db_extensions = array();
-            $mysql_innodb = false;
-            if (function_exists('mysqli_connect'))
-            {
-                $db_extensions[] = array('mysqli', 'MySQL Improved');
-                $db_extensions[] = array('mysqli_innodb', 'MySQL Improved (InnoDB)');
-                $mysql_innodb = true;
-            }
-            if (function_exists('mysql_connect'))
-            {
-                $db_extensions[] = array('mysql', 'MySQL Standard');
-                $db_extensions[] = array('mysql_innodb', 'MySQL Standard (InnoDB)');
-                $mysql_innodb = true;
-            }
-            if (function_exists('sqlite_open'))
-                $db_extensions[] = array('sqlite', 'SQLite');
-            if (function_exists('pg_connect'))
-                $db_extensions[] = array('pgsql', 'PostgreSQL');
-
-            if (empty($db_extensions))
-                error($lang_install['No DB extensions']);
-
-            // Fetch a list of installed languages
-            $languages = forum_list_langs();
-
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="viewport" content="width=device-width, initial-scale=1" />
-<title><?php echo $lang_install['ForkBB Installation'] ?></title>
-<link rel="stylesheet" type="text/css" href="style/<?php echo $default_style ?>.css" />
-<script type="text/javascript">
-/* <![CDATA[ */
-function process_form(the_form)
-{
-    var required_fields = {
-        "req_db_type": "<?php echo $lang_install['Database type'] ?>",
-        "req_db_host": "<?php echo $lang_install['Database server hostname'] ?>",
-        "req_db_name": "<?php echo $lang_install['Database name'] ?>",
-        "req_username": "<?php echo $lang_install['Administrator username'] ?>",
-        "req_password1": "<?php echo $lang_install['Password'] ?>",
-        "req_password2": "<?php echo $lang_install['Confirm password'] ?>",
-        "req_email": "<?php echo $lang_install['Administrator email'] ?>",
-        "req_title": "<?php echo $lang_install['Board title'] ?>",
-        "req_base_url": "<?php echo $lang_install['Base URL'] ?>"
-    };
-    if (document.all || document.getElementById)
-    {
-        for (var i = 0; i < the_form.length; ++i)
-        {
-            var elem = the_form.elements[i];
-            if (elem.name && required_fields[elem.name] && !elem.value && elem.type && (/^(?:text(?:area)?|password|file)$/i.test(elem.type)))
-            {
-                alert('"' + required_fields[elem.name] + '" <?php echo $lang_install['Required field'] ?>');
-                elem.focus();
-                return false;
-            }
-        }
-    }
-    return true;
-}
-/* ]]> */
-</script>
-</head>
-<body onload="document.getElementById('install').req_db_type.focus();document.getElementById('install').start.disabled=false;" onunload="">
-
-<div id="puninstall" class="pun">
-<div class="top-box"><div><!-- Top Corners --></div></div>
-<div class="punwrap">
-
-<div id="brdheader" class="block">
-    <div class="box">
-        <div id="brdtitle" class="inbox">
-            <h1><span><?php echo $lang_install['ForkBB Installation'] ?></span></h1>
-            <div id="brddesc"><p><?php echo $lang_install['Welcome'] ?></p></div>
-        </div>
-    </div>
-</div>
-
-<div id="brdmain">
-<?php if (count($languages) > 1): ?><div class="blockform">
-    <h2><span><?php echo $lang_install['Choose install language'] ?></span></h2>
-    <div class="box">
-        <form id="install" method="post" action="">
-            <div class="inform">
-                <fieldset>
-                    <legend><?php echo $lang_install['Install language'] ?></legend>
-                    <div class="infldset">
-                        <p><?php echo $lang_install['Choose install language info'] ?></p>
-                        <label><strong><?php echo $lang_install['Install language'] ?></strong>
-                        <br /><select name="install_lang">
-<?php
-
-foreach ($languages as $temp)
-{
-    if ($temp == $install_lang)
-        echo "\t\t\t\t\t".'<option value="'.$temp.'" selected="selected">'.$temp.'</option>'."\n";
-    else
-        echo "\t\t\t\t\t".'<option value="'.$temp.'">'.$temp.'</option>'."\n";
-}
-
-?>
-                        </select>
-                        <br /></label>
-                    </div>
-                </fieldset>
-            </div>
-            <p class="buttons"><input type="submit" name="start" value="<?php echo $lang_install['Change language'] ?>" /></p>
-        </form>
-    </div>
-</div>
-<?php endif; ?>
-
-<div class="blockform">
-    <h2><span><?php echo sprintf($lang_install['Install'], FORK_VERSION . '.' . FORK_REVISION) ?></span></h2>
-    <div class="box">
-        <form id="install" method="post" action="" onsubmit="this.start.disabled=true;if(process_form(this)){return true;}else{this.start.disabled=false;return false;}">
-        <div><input type="hidden" name="form_sent" value="1" /><input type="hidden" name="install_lang" value="<?php echo pun_htmlspecialchars($install_lang) ?>" /></div>
-            <div class="inform">
-<?php if (! empty($alerts)): ?>                <div class="forminfo error-info">
-                    <h3><?php echo $lang_install['Errors'] ?></h3>
-                    <ul class="error-list">
-<?php
-
-foreach ($alerts as $cur_alert)
-    echo "\t\t\t\t\t\t".'<li><strong>'.$cur_alert.'</strong></li>'."\n";
-?>
-                    </ul>
-                </div>
-<?php endif; ?>            </div>
-            <div class="inform">
-                <div class="forminfo">
-                    <h3><?php echo $lang_install['Database setup'] ?></h3>
-                    <p><?php echo $lang_install['Info 1'] ?></p>
-                </div>
-                <fieldset>
-                <legend><?php echo $lang_install['Select database'] ?></legend>
-                    <div class="infldset">
-                        <p><?php echo $lang_install['Info 2'] ?></p>
-                        <label class="required"><strong><?php echo $lang_install['Database type'] ?> <span><?php echo $lang_install['Required'] ?></span></strong>
-                        <br /><select name="req_db_type">
-<?php
-
-foreach ($db_extensions as $temp)
-{
-    if ($temp[0] == $db_type)
-        echo "\t\t\t\t\t\t\t".'<option value="'.$temp[0].'" selected="selected">'.$temp[1].'</option>'."\n";
-    else
-        echo "\t\t\t\t\t\t\t".'<option value="'.$temp[0].'">'.$temp[1].'</option>'."\n";
-}
-
-?>
-                        </select>
-                        <br /></label>
-                    </div>
-                </fieldset>
-            </div>
-            <div class="inform">
-                <fieldset>
-                    <legend><?php echo $lang_install['Database hostname'] ?></legend>
-                    <div class="infldset">
-                        <p><?php echo $lang_install['Info 3'] ?></p>
-                        <label class="required"><strong><?php echo $lang_install['Database server hostname'] ?> <span><?php echo $lang_install['Required'] ?></span></strong><br /><input type="text" name="req_db_host" value="<?php echo pun_htmlspecialchars($db_host) ?>" size="50" /><br /></label>
-                    </div>
-                </fieldset>
-            </div>
-            <div class="inform">
-                <fieldset>
-                    <legend><?php echo $lang_install['Database enter name'] ?></legend>
-                    <div class="infldset">
-                        <p><?php echo $lang_install['Info 4'] ?></p>
-                        <label class="required"><strong><?php echo $lang_install['Database name'] ?> <span><?php echo $lang_install['Required'] ?></span></strong><br /><input id="req_db_name" type="text" name="req_db_name" value="<?php echo pun_htmlspecialchars($db_name) ?>" size="30" /><br /></label>
-                    </div>
-                </fieldset>
-            </div>
-            <div class="inform">
-                <fieldset>
-                    <legend><?php echo $lang_install['Database enter informations'] ?></legend>
-                    <div class="infldset">
-                        <p><?php echo $lang_install['Info 5'] ?></p>
-                        <label class="conl"><?php echo $lang_install['Database username'] ?><br /><input type="text" name="db_username" value="<?php echo pun_htmlspecialchars($db_username) ?>" size="30" /><br /></label>
-                        <label class="conl"><?php echo $lang_install['Database password'] ?><br /><input type="password" name="db_password" size="30" /><br /></label>
-                        <div class="clearer"></div>
-                    </div>
-                </fieldset>
-            </div>
-            <div class="inform">
-                <fieldset>
-                    <legend><?php echo $lang_install['Database enter prefix'] ?></legend>
-                    <div class="infldset">
-                        <p><?php echo $lang_install['Info 6'] ?></p>
-                        <label><?php echo $lang_install['Table prefix'] ?><br /><input id="db_prefix" type="text" name="db_prefix" value="<?php echo pun_htmlspecialchars($db_prefix) ?>" size="20" maxlength="30" /><br /></label>
-                    </div>
-                </fieldset>
-            </div>
-            <div class="inform">
-                <div class="forminfo">
-                    <h3><?php echo $lang_install['Administration setup'] ?></h3>
-                    <p><?php echo $lang_install['Info 7'] ?></p>
-                </div>
-                <fieldset>
-                    <legend><?php echo $lang_install['Administration setup'] ?></legend>
-                    <div class="infldset">
-                        <p><?php echo $lang_install['Info 8'] ?></p>
-                        <label class="required"><strong><?php echo $lang_install['Administrator username'] ?> <span><?php echo $lang_install['Required'] ?></span></strong><br /><input type="text" name="req_username" value="<?php echo pun_htmlspecialchars($username) ?>" size="25" maxlength="25" /><br /></label>
-                        <label class="conl required"><strong><?php echo $lang_install['Password'] ?> <span><?php echo $lang_install['Required'] ?></span></strong><br /><input id="req_password1" type="password" name="req_password1" size="16" /><br /></label>
-                        <label class="conl required"><strong><?php echo $lang_install['Confirm password'] ?> <span><?php echo $lang_install['Required'] ?></span></strong><br /><input type="password" name="req_password2" size="16" /><br /></label>
-                        <div class="clearer"></div>
-                        <label class="required"><strong><?php echo $lang_install['Administrator email'] ?> <span><?php echo $lang_install['Required'] ?></span></strong><br /><input id="req_email" type="text" name="req_email" value="<?php echo pun_htmlspecialchars($email) ?>" size="50" maxlength="80" /><br /></label>
-                    </div>
-                </fieldset>
-            </div>
-            <div class="inform">
-                <div class="forminfo">
-                    <h3><?php echo $lang_install['Board setup'] ?></h3>
-                    <p><?php echo $lang_install['Info 11'] ?></p>
-                </div>
-                <fieldset>
-                    <legend><?php echo $lang_install['General information'] ?></legend>
-                    <div class="infldset">
-                        <label class="required"><strong><?php echo $lang_install['Board title'] ?> <span><?php echo $lang_install['Required'] ?></span></strong><br /><input id="req_title" type="text" name="req_title" value="<?php echo pun_htmlspecialchars($title) ?>" size="50" maxlength="255" /><br /></label>
-                        <label><?php echo $lang_install['Board description'] ?><br /><input id="desc" type="text" name="desc" value="<?php echo pun_htmlspecialchars($description) ?>" size="50" maxlength="255" /><br /></label>
-                        <label class="required"><strong><?php echo $lang_install['Base URL'] ?> <span><?php echo $lang_install['Required'] ?></span></strong><br /><input id="req_base_url" type="text" name="req_base_url" value="<?php echo pun_htmlspecialchars($base_url) ?>" size="50" maxlength="100" /><br /></label>
-                    </div>
-                </fieldset>
-            </div>
-            <div class="inform">
-                <fieldset>
-                    <legend><?php echo $lang_install['Appearance'] ?></legend>
-                    <div class="infldset">
-                        <p><?php echo $lang_install['Info 15'] ?></p>
-                        <label class="required"><strong><?php echo $lang_install['Default language'] ?> <span><?php echo $lang_install['Required'] ?></span></strong><br /><select id="req_default_lang" name="req_default_lang">
-<?php
-
-$languages = forum_list_langs();
-foreach ($languages as $temp)
-{
-    if ($temp == $default_lang)
-        echo "\t\t\t\t\t\t\t\t\t\t\t".'<option value="'.$temp.'" selected="selected">'.$temp.'</option>'."\n";
-    else
-        echo "\t\t\t\t\t\t\t\t\t\t\t".'<option value="'.$temp.'">'.$temp.'</option>'."\n";
-}
-
-?>
-                        </select><br /></label>
-                        <label class="required"><strong><?php echo $lang_install['Default style'] ?> <span><?php echo $lang_install['Required'] ?></span></strong><br /><select id="req_default_style" name="req_default_style">
-<?php
-
-$styles = forum_list_styles();
-foreach ($styles as $temp)
-{
-    if ($temp == $default_style)
-        echo "\t\t\t\t\t\t\t\t\t".'<option value="'.$temp.'" selected="selected">'.str_replace('_', ' ', $temp).'</option>'."\n";
-    else
-        echo "\t\t\t\t\t\t\t\t\t".'<option value="'.$temp.'">'.str_replace('_', ' ', $temp).'</option>'."\n";
-}
-
-?>
-                        </select><br /></label>
-                    </div>
-                </fieldset>
-            </div>
-            <p class="buttons"><input type="submit" name="start" value="<?php echo $lang_install['Start install'] ?>" /></p>
-        </form>
-    </div>
-</div>
-</div>
-
-</div>
-<div class="end-box"><div><!-- Bottom Corners --></div></div>
-</div>
-
-</body>
-</html>
-<?php
-
-        }
-        else
-        {
-            // Validate prefix
-            if (strlen($db_prefix) > 0 && (! preg_match('%^[a-z][a-z0-9_]*$%i', $db_prefix) || strlen($db_prefix) > 40))
-                error(sprintf($lang_install['Table prefix error'], $db->prefix));
-
-            $this->c->DB_TYPE = $db_type;
-            $this->c->DB_HOST = $db_host;
-            $this->c->DB_USERNAME = $db_username;
-            $this->c->DB_PASSWORD = $db_password;
-            $this->c->DB_NAME = $db_name;
-            $this->c->DB_PREFIX = $db_prefix;
-
-            $db = $this->c->DB;
-
-            // Do some DB type specific checks
-            switch ($db_type)
-            {
-                case 'mysql':
-                case 'mysqli':
-                case 'mysql_innodb':
-                case 'mysqli_innodb':
-                    $mysql_info = $db->get_version();
-                    if (version_compare($mysql_info['version'], MIN_MYSQL_VERSION, '<'))
-                        error(sprintf($lang_install['You are running error'], 'MySQL', $mysql_info['version'], FORK_VERSION, MIN_MYSQL_VERSION));
-                    break;
-
-                case 'pgsql':
-                    $pgsql_info = $db->get_version();
-                    if (version_compare($pgsql_info['version'], MIN_PGSQL_VERSION, '<'))
-                        error(sprintf($lang_install['You are running error'], 'PostgreSQL', $pgsql_info['version'], FORK_VERSION, MIN_PGSQL_VERSION));
-                    break;
-
-                case 'sqlite':
-                    if (strtolower($db_prefix) == 'sqlite_')
-                        error($lang_install['Prefix reserved']);
-                    break;
-            }
-
-
-            // Make sure ForkBB isn't already installed
-            $result = $db->query('SELECT 1 FROM '.$db_prefix.'users WHERE id=1');
-            if ($db->num_rows($result))
-                error(sprintf($lang_install['Existing table error'], $db_prefix, $db_name));
-
-            // Check if InnoDB is available
-            if ($db_type == 'mysql_innodb' || $db_type == 'mysqli_innodb')
-            {
-                $result = $db->query('SELECT SUPPORT FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE=\'InnoDB\'');
-                $result = $db->result($result);
-                if (! in_array($result, array('YES', 'DEFAULT')))
-                    error($lang_install['InnoDB off']);
-            }
-
-
-            // Start a transaction
-            $db->start_transaction();
-
-
-            // Create all tables
-            $schema = array(
-                'FIELDS'        => array(
-                    'id'            => array(
-                        'datatype'        => 'SERIAL',
-                        'allow_null'    => false
-                    ),
-                    'username'        => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => true
-                    ),
-                    'ip'            => array(
-                        'datatype'        => 'VARCHAR(255)',
-                        'allow_null'    => true
-                    ),
-                    'email'            => array(
-                        'datatype'        => 'VARCHAR(80)',
-                        'allow_null'    => true
-                    ),
-                    'message'        => array(
-                        'datatype'        => 'VARCHAR(255)',
-                        'allow_null'    => true
-                    ),
-                    'expire'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'ban_creator'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    )
-                ),
-                'PRIMARY KEY'    => array('id'),
-                'INDEXES'        => array(
-                    'username_idx'    => array('username')
-                )
-            );
-
-            if ($db_type == 'mysql' || $db_type == 'mysqli' || $db_type == 'mysql_innodb' || $db_type == 'mysqli_innodb')
-                $schema['INDEXES']['username_idx'] = array('username(25)');
-
-            $db->create_table('bans', $schema) or error('Unable to create bans table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'id'            => array(
-                        'datatype'        => 'SERIAL',
-                        'allow_null'    => false
-                    ),
-                    'cat_name'        => array(
-                        'datatype'        => 'VARCHAR(80)',
-                        'allow_null'    => false,
-                        'default'        => '\'New Category\''
-                    ),
-                    'disp_position'    => array(
-                        'datatype'        => 'INT(10)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    )
-                ),
-                'PRIMARY KEY'    => array('id')
-            );
-
-            $db->create_table('categories', $schema) or error('Unable to create categories table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'id'            => array(
-                        'datatype'        => 'SERIAL',
-                        'allow_null'    => false
-                    ),
-                    'search_for'    => array(
-                        'datatype'        => 'VARCHAR(60)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'replace_with'    => array(
-                        'datatype'        => 'VARCHAR(60)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    )
-                ),
-                'PRIMARY KEY'    => array('id')
-            );
-
-            $db->create_table('censoring', $schema) or error('Unable to create censoring table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'conf_name'        => array(
-                        'datatype'        => 'VARCHAR(255)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'conf_value'    => array(
-                        'datatype'        => 'TEXT',
-                        'allow_null'    => true
-                    )
-                ),
-                'PRIMARY KEY'    => array('conf_name')
-            );
-
-            $db->create_table('config', $schema) or error('Unable to create config table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'group_id'        => array(
-                        'datatype'        => 'INT(10)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'forum_id'        => array(
-                        'datatype'        => 'INT(10)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'read_forum'    => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'post_replies'    => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'post_topics'    => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    )
-                ),
-                'PRIMARY KEY'    => array('group_id', 'forum_id')
-            );
-
-            $db->create_table('forum_perms', $schema) or error('Unable to create forum_perms table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'id'            => array(
-                        'datatype'        => 'SERIAL',
-                        'allow_null'    => false
-                    ),
-                    'forum_name'    => array(
-                        'datatype'        => 'VARCHAR(80)',
-                        'allow_null'    => false,
-                        'default'        => '\'New forum\''
-                    ),
-                    'forum_desc'    => array(
-                        'datatype'        => 'TEXT',
-                        'allow_null'    => true
-                    ),
-                    'redirect_url'    => array(
-                        'datatype'        => 'VARCHAR(100)',
-                        'allow_null'    => true
-                    ),
-                    'moderators'    => array(
-                        'datatype'        => 'TEXT',
-                        'allow_null'    => true
-                    ),
-                    'num_topics'    => array(
-                        'datatype'        => 'MEDIUMINT(8) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'num_posts'        => array(
-                        'datatype'        => 'MEDIUMINT(8) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'last_post'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'last_post_id'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'last_poster'    => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => true
-                    ),
-                    'last_topic'    => array( // last topic on index - Visman
-                        'datatype'        => 'VARCHAR(255)',
-                        'allow_null'    => true
-                    ),
-                    'sort_by'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'disp_position'    => array(
-                        'datatype'        => 'INT(10)',
-                        'allow_null'    => false,
-                        'default'        =>    '0'
-                    ),
-                    'cat_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        =>    '0'
-                    ),
-                    'no_sum_mess'        => array( // no sum - Visman
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'parent_forum_id' => array( // subforums - Visman
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        =>    '0'
-                    )
-                ),
-                'PRIMARY KEY'    => array('id')
-            );
-
-            $db->create_table('forums', $schema) or error('Unable to create forums table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'g_id'                        => array(
-                        'datatype'        => 'SERIAL',
-                        'allow_null'    => false
-                    ),
-                    'g_title'                    => array(
-                        'datatype'        => 'VARCHAR(50)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'g_user_title'                => array(
-                        'datatype'        => 'VARCHAR(50)',
-                        'allow_null'    => true
-                    ),
-                    'g_promote_min_posts'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'g_promote_next_group'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'g_moderator'                => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'g_mod_edit_users'            => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'g_mod_rename_users'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'g_mod_change_passwords'    => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'g_mod_ban_users'            => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'g_mod_promote_users'            => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'g_read_board'                => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_view_users'                => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_post_replies'            => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_post_topics'                => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_edit_posts'                => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_delete_posts'            => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_delete_topics'            => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_post_links'                => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_set_title'                => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_search'                    => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_search_users'            => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_send_email'                => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_post_flood'                => array(
-                        'datatype'        => 'SMALLINT(6)',
-                        'allow_null'    => false,
-                        'default'        => '30'
-                    ),
-                    'g_search_flood'            => array(
-                        'datatype'        => 'SMALLINT(6)',
-                        'allow_null'    => false,
-                        'default'        => '30'
-                    ),
-                    'g_email_flood'                => array(
-                        'datatype'        => 'SMALLINT(6)',
-                        'allow_null'    => false,
-                        'default'        => '60'
-                    ),
-                    'g_report_flood'            => array(
-                        'datatype'        => 'SMALLINT(6)',
-                        'allow_null'    => false,
-                        'default'        => '60'
-                    ),
-                    'g_deledit_interval' => array( // мод ограничения времени - Visman
-                        'datatype'        => 'INT(10)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'g_pm' => array( // New PMS - Visman
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'g_pm_limit'                => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '100'
-                    )
-                ),
-                'PRIMARY KEY'    => array('g_id')
-            );
-
-            $db->create_table('groups', $schema) or error('Unable to create groups table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'user_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'ident'            => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'logged'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'idle'            => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'last_post'            => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'last_search'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'witt_data'            => array(              //????
-                        'datatype'        => 'VARCHAR(255)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'o_position' => [
-                        'datatype'   => 'VARCHAR(100)',
-                        'allow_null' => false,
-                        'default'    => '\'\''
-                    ],
-                    'o_name' => [
-                        'datatype'   => 'VARCHAR(200)',
-                        'allow_null' => false,
-                        'default'    => '\'\''
-                    ],
-                ),
-                'UNIQUE KEYS'    => array(
-                    'user_id_ident_idx'    => array('user_id', 'ident')
-                ),
-                'INDEXES'        => array(
-                    'ident_idx'      => array('ident'),
-                    'logged_idx'     => array('logged'),
-                    'o_position_idx' => array('o_position'),
-                )
-            );
-
-            if ($db_type == 'mysql' || $db_type == 'mysqli' || $db_type == 'mysql_innodb' || $db_type == 'mysqli_innodb')
-            {
-                $schema['UNIQUE KEYS']['user_id_ident_idx'] = array('user_id', 'ident(25)');
-                $schema['INDEXES']['ident_idx'] = array('ident(25)');
-            }
-
-            if ($db_type == 'mysql_innodb' || $db_type == 'mysqli_innodb')
-                $schema['ENGINE'] = 'InnoDB';
-
-            $db->create_table('online', $schema) or error('Unable to create online table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'id'            => array(
-                        'datatype'        => 'SERIAL',
-                        'allow_null'    => false
-                    ),
-                    'poster'        => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'poster_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'poster_ip'        => array(
-                        'datatype'        => 'VARCHAR(39)',
-                        'allow_null'    => true
-                    ),
-                    'poster_email'    => array(
-                        'datatype'        => 'VARCHAR(80)',
-                        'allow_null'    => true
-                    ),
-                    'message'        => array(
-                        'datatype'        => 'MEDIUMTEXT',
-                        'allow_null'    => true
-                    ),
-                    'hide_smilies'    => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'edit_post'    => array( // мод ограничения времени - Visman
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'posted'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'edited'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'edited_by'        => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => true
-                    ),
-                    'user_agent'        => array( // MOD user agent - Visman
-                        'datatype'        => 'VARCHAR(255)',
-                        'allow_null'    => true
-                    ),
-                    'topic_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    )
-                ),
-                'PRIMARY KEY'    => array('id'),
-                'INDEXES'        => array(
-                    'topic_id_idx'    => array('topic_id'),
-                    'multi_idx'        => array('poster_id', 'topic_id')
-                )
-            );
-
-            $db->create_table('posts', $schema) or error('Unable to create posts table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'id'            => array(
-                        'datatype'        => 'SERIAL',
-                        'allow_null'    => false
-                    ),
-                    'post_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'topic_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'forum_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'reported_by'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'created'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'message'        => array(
-                        'datatype'        => 'TEXT',
-                        'allow_null'    => true
-                    ),
-                    'zapped'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'zapped_by'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    )
-                ),
-                'PRIMARY KEY'    => array('id'),
-                'INDEXES'        => array(
-                    'zapped_idx'    => array('zapped')
-                )
-            );
-
-            $db->create_table('reports', $schema) or error('Unable to create reports table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'id'            => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'ident'            => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'search_data'    => array(
-                        'datatype'        => 'MEDIUMTEXT',
-                        'allow_null'    => true
-                    )
-                ),
-                'PRIMARY KEY'    => array('id'),
-                'INDEXES'        => array(
-                    'ident_idx'    => array('ident')
-                )
-            );
-
-            if ($db_type == 'mysql' || $db_type == 'mysqli' || $db_type == 'mysql_innodb' || $db_type == 'mysqli_innodb')
-                $schema['INDEXES']['ident_idx'] = array('ident(8)');
-
-            $db->create_table('search_cache', $schema) or error('Unable to create search_cache table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'post_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'word_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'subject_match'    => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    )
-                ),
-                'INDEXES'        => array(
-                    'word_id_idx'    => array('word_id'),
-                    'post_id_idx'    => array('post_id')
-                )
-            );
-
-            $db->create_table('search_matches', $schema) or error('Unable to create search_matches table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'id'            => array(
-                        'datatype'        => 'SERIAL',
-                        'allow_null'    => false
-                    ),
-                    'word'            => array(
-                        'datatype'        => 'VARCHAR(20)',
-                        'allow_null'    => false,
-                        'default'        => '\'\'',
-                        'collation'        => 'bin'
-                    )
-                ),
-                'PRIMARY KEY'    => array('word'),
-                'INDEXES'        => array(
-                    'id_idx'    => array('id')
-                )
-            );
-
-            if ($db_type == 'sqlite')
-            {
-                $schema['PRIMARY KEY'] = array('id');
-                $schema['UNIQUE KEYS'] = array('word_idx'    => array('word'));
-            }
-
-            $db->create_table('search_words', $schema) or error('Unable to create search_words table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'user_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'topic_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    )
-                ),
-                'PRIMARY KEY'    => array('user_id', 'topic_id')
-            );
-
-            $db->create_table('topic_subscriptions', $schema) or error('Unable to create topic subscriptions table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'user_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'forum_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    )
-                ),
-                'PRIMARY KEY'    => array('user_id', 'forum_id')
-            );
-
-            $db->create_table('forum_subscriptions', $schema) or error('Unable to create forum subscriptions table', __FILE__, __LINE__, $db->error());
-
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'id'            => array(
-                        'datatype'        => 'SERIAL',
-                        'allow_null'    => false
-                    ),
-                    'poster'        => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'subject'        => array(
-                        'datatype'        => 'VARCHAR(255)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'posted'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'first_post_id'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'last_post'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'last_post_id'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'last_poster'    => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => true
-                    ),
-                    'num_views'        => array(
-                        'datatype'        => 'MEDIUMINT(8) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'num_replies'    => array(
-                        'datatype'        => 'MEDIUMINT(8) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'closed'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'sticky'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'stick_fp'        => array( // StickFP - Visman
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'moved_to'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'forum_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'poll_type'        => array( // POLL - Visman
-                        'datatype'        => 'TINYINT(4)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'poll_time'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'poll_term'        => array(
-                        'datatype'        => 'TINYINT(4)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'poll_kol'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    )
-                ),
-                'PRIMARY KEY'    => array('id'),
-                'INDEXES'        => array(
-                    'forum_id_idx'        => array('forum_id'),
-                    'moved_to_idx'        => array('moved_to'),
-                    'last_post_idx'        => array('last_post'),
-                    'first_post_id_idx'    => array('first_post_id')
-                )
-            );
-
-            $db->create_table('topics', $schema) or error('Unable to create topics table', __FILE__, __LINE__, $db->error());
-
-            // New PMS - Visman
-            $schema = array(
-                'FIELDS'        => array(
-                    'bl_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'bl_user_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    )
-                ),
-                'INDEXES'        => array(
-                    'bl_id_idx'    => array('bl_id'),
-                    'bl_user_id_idx'    => array('bl_user_id')
-                )
-            );
-
-            $db->create_table('pms_new_block', $schema) or error('Unable to create pms_new_block table', __FILE__, __LINE__, $db->error());
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'id'            => array(
-                        'datatype'        => 'SERIAL',
-                        'allow_null'    => false
-                    ),
-                    'poster'        => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'poster_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'poster_ip'        => array(
-                        'datatype'        => 'VARCHAR(39)',
-                        'allow_null'    => true
-                    ),
-                    'message'        => array(
-                        'datatype'        => 'TEXT',
-                        'allow_null'    => true
-                    ),
-                    'hide_smilies'    => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'posted'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'edited'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'edited_by'        => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => true
-                    ),
-                    'post_new'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'topic_id'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    )
-                ),
-                'PRIMARY KEY'    => array('id'),
-                'INDEXES'        => array(
-                    'topic_id_idx'    => array('topic_id'),
-                    'multi_idx'        => array('poster_id', 'topic_id')
-                )
-            );
-
-            $db->create_table('pms_new_posts', $schema) or error('Unable to create pms_new_posts table', __FILE__, __LINE__, $db->error());
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'id'            => array(
-                        'datatype'        => 'SERIAL',
-                        'allow_null'    => false
-                    ),
-                    'topic'        => array(
-                        'datatype'        => 'VARCHAR(255)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'starter'        => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'starter_id'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'to_user'        => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'to_id'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'replies'    => array(
-                        'datatype'        => 'MEDIUMINT(8) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'last_posted'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'last_poster'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'see_st'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'see_to'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'topic_st'        => array(
-                        'datatype'        => 'TINYINT(4)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'topic_to'        => array(
-                        'datatype'        => 'TINYINT(4)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                ),
-                'PRIMARY KEY'    => array('id'),
-                'INDEXES'        => array(
-                    'multi_idx_st'        => array('starter_id', 'topic_st'),
-                    'multi_idx_to'        => array('to_id', 'topic_to')
-                )
-            );
-
-            $db->create_table('pms_new_topics', $schema) or error('Unable to create pms_new_topics table', __FILE__, __LINE__, $db->error());
-            // New PMS - Visman
-
-            $schema = array(
-                'FIELDS'        => array(
-                    'id'                => array(
-                        'datatype'        => 'SERIAL',
-                        'allow_null'    => false
-                    ),
-                    'group_id'            => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '3'
-                    ),
-                    'username'            => array(
-                        'datatype'        => 'VARCHAR(200)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'password'            => array(
-                        'datatype'        => 'VARCHAR(255)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'email'                => array(
-                        'datatype'        => 'VARCHAR(80)',
-                        'allow_null'    => false,
-                        'default'        => '\'\''
-                    ),
-                    'email_confirmed'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'title'                => array(
-                        'datatype'        => 'VARCHAR(50)',
-                        'allow_null'    => true
-                    ),
-                    'realname'            => array(
-                        'datatype'        => 'VARCHAR(40)',
-                        'allow_null'    => true
-                    ),
-                    'url'                => array(
-                        'datatype'        => 'VARCHAR(100)',
-                        'allow_null'    => true
-                    ),
-                    'jabber'            => array(
-                        'datatype'        => 'VARCHAR(80)',
-                        'allow_null'    => true
-                    ),
-                    'icq'                => array(
-                        'datatype'        => 'VARCHAR(12)',
-                        'allow_null'    => true
-                    ),
-                    'msn'                => array(
-                        'datatype'        => 'VARCHAR(80)',
-                        'allow_null'    => true
-                    ),
-                    'aim'                => array(
-                        'datatype'        => 'VARCHAR(30)',
-                        'allow_null'    => true
-                    ),
-                    'yahoo'                => array(
-                        'datatype'        => 'VARCHAR(30)',
-                        'allow_null'    => true
-                    ),
-                    'location'            => array(
-                        'datatype'        => 'VARCHAR(30)',
-                        'allow_null'    => true
-                    ),
-                    'signature'            => array(
-                        'datatype'        => 'TEXT',
-                        'allow_null'    => true
-                    ),
-                    'disp_topics'        => array(
-                        'datatype'        => 'TINYINT(3) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'disp_posts'        => array(
-                        'datatype'        => 'TINYINT(3) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'email_setting'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'notify_with_post'    => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'auto_notify'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'show_smilies'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'show_img'            => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'show_img_sig'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'show_avatars'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'show_sig'            => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'timezone'            => array(
-                        'datatype'        => 'FLOAT',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'dst'                => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'time_format'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'date_format'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'language'            => array(
-                        'datatype'        => 'VARCHAR(25)',
-                        'allow_null'    => false,
-                        'default'        => '\''.$db->escape($default_lang).'\''
-                    ),
-                    'style'                => array(
-                        'datatype'        => 'VARCHAR(25)',
-                        'allow_null'    => false,
-                        'default'        => '\''.$db->escape($default_style).'\''
-                    ),
-                    'num_posts'            => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'last_post'            => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'last_search'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'last_email_sent'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'last_report_sent'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'registered'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'registration_ip'    => array(
-                        'datatype'        => 'VARCHAR(39)',
-                        'allow_null'    => false,
-                        'default'        => '\'0.0.0.0\''
-                    ),
-                    'last_visit'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'admin_note'        => array(
-                        'datatype'        => 'VARCHAR(30)',
-                        'allow_null'    => true
-                    ),
-                    'activate_string'    => array(
-                        'datatype'        => 'VARCHAR(80)',
-                        'allow_null'    => true
-                    ),
-                    'activate_key'        => array(
-                        'datatype'        => 'VARCHAR(8)',
-                        'allow_null'    => true
-                    ),
-                    'messages_enable'        => array( // New PMS - Visman
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '1'
-                    ),
-                    'messages_email'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'messages_flag'        => array(
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'messages_new'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'messages_all'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'pmsn_last_post'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                    'warning_flag'        => array( // MOD warnings - Visman
-                        'datatype'        => 'TINYINT(1)',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'warning_all'        => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'gender'            => array( // поле для пола - Visman
-                        'datatype'        => 'TINYINT(4) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'u_mark_all_read'   => array(
-                        'datatype'      => 'INT(10) UNSIGNED',
-                        'allow_null'    => true
-                    ),
-                ),
-                'PRIMARY KEY'    => array('id'),
-                'UNIQUE KEYS'    => array(
-                    'username_idx'        => array('username')
-                ),
-                'INDEXES'        => array(
-                    'registered_idx'    => array('registered')
-                )
-            );
-
-            if ($db_type == 'mysql' || $db_type == 'mysqli' || $db_type == 'mysql_innodb' || $db_type == 'mysqli_innodb')
-                $schema['UNIQUE KEYS']['username_idx'] = array('username(25)');
-
-            $db->create_table('users', $schema) or error('Unable to create users table', __FILE__, __LINE__, $db->error());
-
-            // Create "smilies" table - Visman
-            $schema = array(
-                'FIELDS' => array(
-                    'id' => array(
-                        'datatype' => 'SERIAL',
-                        'allow_null' => false
-                    ),
-                    'image' => array(
-                        'datatype' => 'VARCHAR(40)',
-                        'allow_null' => false,
-                        'default' => '\'\''
-                    ),
-                    'text' => array(
-                        'datatype' => 'VARCHAR(20)',
-                        'allow_null' => false,
-                        'default' => '\'\''
-                    ),
-                    'disp_position' => array(
-                        'datatype' => 'TINYINT(4) UNSIGNED',
-                        'allow_null' => false,
-                        'default' => '0'
-                    )
-                ),
-                'PRIMARY KEY' => array('id')
-            );
-
-            $db->create_table('smilies', $schema) or error('Unable to create smilies table', __FILE__, __LINE__, $db->error());
-
-            $smilies = array(
-                ':)' => 'smile.png',
-                '=)' => 'smile.png',
-                ':|' => 'neutral.png',
-                '=|' => 'neutral.png',
-                ':(' => 'sad.png',
-                '=(' => 'sad.png',
-                ':D' => 'big_smile.png',
-                '=D' => 'big_smile.png',
-                ':o' => 'yikes.png',
-                ':O' => 'yikes.png',
-                ';)' => 'wink.png',
-                ':/' => 'hmm.png',
-                ':P' => 'tongue.png',
-                ':p' => 'tongue.png',
-                ':lol:' => 'lol.png',
-                ':mad:' => 'mad.png',
-                ':rolleyes:' => 'roll.png',
-                ':cool:' => 'cool.png');
-
-            $i = 0;
-            foreach ($smilies as $text => $img)
-            {
-                $db->query('INSERT INTO '.$db->prefix.'smilies (image, text, disp_position) VALUES(\''.$img.'\', \''.$db->escape($text).'\', '.$i.')') or error('Unable to add smiley', __FILE__, __LINE__, $db->error());
-                $i++;
-            }
-            // Create "smilies" table - Visman
-
-            // Create warnings table - Visman
-            $schema = array(
-                'FIELDS' => array(
-                    'id' => array(
-                        'datatype' => 'SERIAL',
-                        'allow_null' => false
-                    ),
-                    'poster' => array(
-                        'datatype' => 'VARCHAR(200)',
-                        'allow_null' => false,
-                        'default' => '\'\''
-                    ),
-                    'poster_id'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'posted'    => array(
-                        'datatype'        => 'INT(10) UNSIGNED',
-                        'allow_null'    => false,
-                        'default'        => '0'
-                    ),
-                    'message'        => array(
-                        'datatype'        => 'TEXT',
-                        'allow_null' => true
-                    )
-                ),
-                'PRIMARY KEY' => array('id')
-            );
-
-            $db->create_table('warnings', $schema) or error('Unable to create warnings table', __FILE__, __LINE__, $db->error());
-            // Create warnings table - Visman
-
-            $schema = array(
-                    'FIELDS'            => array(
-                            'tid'                => array(
-                                    'datatype'        => 'INT(10) UNSIGNED',
-                                    'allow_null'    => false,
-                                    'default'            => '0'
-                            ),
-                            'question'            => array(
-                                    'datatype'        => 'TINYINT(4)',
-                                    'allow_null'    => false,
-                                    'default'            => '0'
-                            ),
-                            'field'            => array(
-                                    'datatype'        => 'TINYINT(4)',
-                                    'allow_null'    => false,
-                                    'default'            => '0'
-                            ),
-                            'choice'            => array(
-                                    'datatype'        => 'VARCHAR(255)',
-                                    'allow_null'    => false,
-                                    'default'            => '\'\''
-                            ),
-                            'votes'                => array(
-                                    'datatype'        => 'INT(10) UNSIGNED',
-                                    'allow_null'    => false,
-                                    'default'            => '0'
-                            )
-
-                    ),
-                    'PRIMARY KEY'        => array('tid', 'question', 'field')
-            );
-            $db->create_table('poll', $schema) or error('Unable to create table poll', __FILE__, __LINE__, $db->error());
-
-            $schema = array(
-                    'FIELDS'            => array(
-                            'tid'                => array(
-                                    'datatype'        => 'INT(10) UNSIGNED',
-                                    'allow_null'    => false
-                            ),
-                            'uid'            => array(
-                                    'datatype'        => 'INT(10) UNSIGNED',
-                                    'allow_null'    => false
-                            ),
-                            'rez'            => array(
-                                    'datatype'        => 'TEXT',
-                                    'allow_null'    => true
-                            )
-                    ),
-                    'PRIMARY KEY'        => array('tid', 'uid')
-            );
-
-            $db->create_table('poll_voted', $schema) or error('Unable to create table poll_voted', __FILE__, __LINE__, $db->error());
-
-            $schema = [
-                'FIELDS'  => [
-                    'uid' => [
-                        'datatype'   => 'INT(10) UNSIGNED',
-                        'allow_null' => true,
-                    ],
-                    'fid' => [
-                        'datatype'   => 'INT(10) UNSIGNED',
-                        'allow_null' => true,
-                    ],
-                    'mf_upper' => [
-                        'datatype'   => 'INT(10) UNSIGNED',
-                        'allow_null' => true,
-                    ],
-                    'mf_lower' => [
-                        'datatype'   => 'INT(10) UNSIGNED',
-                        'allow_null' => true,
-                    ],
-                ],
-                'UNIQUE KEYS' => [
-                    'uid_fid_idx'    => ['uid', 'fid'],
-                ],
-                'INDEXES' => [
-                    'mf_upper_idx'   => ['mf_upper'],
-                    'mf_lower_idx'   => ['mf_lower'],
-                ]
-            ];
-
-            $db->create_table('mark_of_forum', $schema) or error('Unable to create mark_of_forum table', __FILE__, __LINE__, $db->error());
-
-            $schema = [
-                'FIELDS'  => [
-                    'uid' => [
-                        'datatype'   => 'INT(10) UNSIGNED',
-                        'allow_null' => true,
-                    ],
-                    'fid' => [
-                        'datatype'   => 'INT(10) UNSIGNED',
-                        'allow_null' => true,
-                    ],
-                    'tid' => [
-                        'datatype'   => 'INT(10) UNSIGNED',
-                        'allow_null' => true,
-                    ],
-                    'mt_upper' => [
-                        'datatype'   => 'INT(10) UNSIGNED',
-                        'allow_null' => true,
-                    ],
-                    'mt_lower' => [
-                        'datatype'   => 'INT(10) UNSIGNED',
-                        'allow_null' => true,
-                    ],
-                ],
-                'UNIQUE KEYS' => [
-                    'uid_fid_tid_idx' => ['uid', 'fid', 'tid'],
-                ],
-                'INDEXES' => [
-                    'mt_upper_idx'   => ['mt_upper'],
-                    'mt_lower_idx'   => ['mt_lower'],
-                ]
-            ];
-
-            $db->create_table('mark_of_topic', $schema) or error('Unable to create mark_of_topic table', __FILE__, __LINE__, $db->error());
-
-
-
-
-
-            $now = time();
-
-            // Insert the four preset groups
-            $db->query('INSERT INTO '.$db->prefix.'groups ('.($db_type != 'pgsql' ? 'g_id, ' : '').'g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_send_email, g_post_flood, g_search_flood, g_email_flood, g_report_flood) VALUES('.($db_type != 'pgsql' ? '1, ' : '').'\''.$db->escape($lang_install['Administrators']).'\', \''.$db->escape($lang_install['Administrator']).'\', 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0)') or error('Unable to add group', __FILE__, __LINE__, $db->error());
-
-            $db->query('INSERT INTO '.$db->prefix.'groups ('.($db_type != 'pgsql' ? 'g_id, ' : '').'g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_mod_promote_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_send_email, g_post_flood, g_search_flood, g_email_flood, g_report_flood) VALUES('.($db_type != 'pgsql' ? '2, ' : '').'\''.$db->escape($lang_install['Moderators']).'\', \''.$db->escape($lang_install['Moderator']).'\', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0)') or error('Unable to add group', __FILE__, __LINE__, $db->error());
-
-            $db->query('INSERT INTO '.$db->prefix.'groups ('.($db_type != 'pgsql' ? 'g_id, ' : '').'g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_send_email, g_post_flood, g_search_flood, g_email_flood, g_report_flood) VALUES('.($db_type != 'pgsql' ? '3, ' : '').'\''.$db->escape($lang_install['Guests']).'\', NULL, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 60, 30, 0, 0)') or error('Unable to add group', __FILE__, __LINE__, $db->error());
-
-            $db->query('INSERT INTO '.$db->prefix.'groups ('.($db_type != 'pgsql' ? 'g_id, ' : '').'g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_send_email, g_post_flood, g_search_flood, g_email_flood, g_report_flood) VALUES('.($db_type != 'pgsql' ? '4, ' : '').'\''.$db->escape($lang_install['Members']).'\', NULL, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 60, 30, 60, 60)') or error('Unable to add group', __FILE__, __LINE__, $db->error());
-
-            // Insert guest and first admin user
-            $db->query('INSERT INTO '.$db_prefix.'users (group_id, username, password, email) VALUES(3, \''.$db->escape($lang_install['Guest']).'\', \''.$db->escape($lang_install['Guest']).'\', \''.$db->escape($lang_install['Guest']).'\')')
-                or error('Unable to add guest user. Please check your configuration and try again', __FILE__, __LINE__, $db->error());
-
-            $db->query('INSERT INTO '.$db_prefix.'users (group_id, username, password, email, language, style, num_posts, last_post, registered, registration_ip, last_visit) VALUES(1, \''.$db->escape($username).'\', \''.$db->escape(password_hash($password1, PASSWORD_DEFAULT)).'\', \''.$db->escape($email).'\', \''.$db->escape($default_lang).'\', \''.$db->escape($default_style).'\', 1, '.$now.', '.$now.', \''.$db->escape(get_remote_address()).'\', '.$now.')')
-                or error('Unable to add administrator user. Please check your configuration and try again', __FILE__, __LINE__, $db->error());
-
-            // New PMS - Visman
-            $db->query('UPDATE '.$db->prefix.'groups SET g_pm_limit=0 WHERE g_id=1') or error('Unable to merge groups', __FILE__, __LINE__, $db->error());
-
-            // Enable/disable avatars depending on file_uploads setting in PHP configuration
-            $avatars = in_array(strtolower(@ini_get('file_uploads')), array('on', 'true', '1')) ? 1 : 0;
-
-            // Insert config data
-            $pun_config = array(
-                's_fork_version'          => FORK_VERSION,
-                'i_fork_revision'         => FORK_REVISION,
-                'o_searchindex_revision'  => FORK_SI_REVISION,
-                'o_parser_revision'       => FORK_PARSER_REVISION,
-                'o_board_title'           => $title,
-                'o_board_desc'            => $description,
-                'o_default_timezone'      => 0,
-                'o_time_format'           => 'H:i:s',
-                'o_date_format'           => 'Y-m-d',
-                'o_timeout_visit'         => 1800,
-                'o_timeout_online'        => 300,
-                'o_redirect_delay'        => 1,
-                'o_show_version'          => 0,
-                'o_show_user_info'        => 1,
-                'o_show_post_count'       => 1,
-                'o_signatures'            => 1,
-                'o_smilies'               => 1,
-                'o_smilies_sig'           => 1,
-                'o_make_links'            => 1,
-                'o_default_lang'          => $default_lang,
-                'o_default_style'         => $default_style,
-                'o_default_user_group'    => 4,
-                'o_topic_review'          => 15,
-                'o_disp_topics_default'   => 30,
-                'o_disp_posts_default'    => 25,
-                'o_indent_num_spaces'     => 4,
-                'o_quote_depth'           => 3,
-                'o_quickpost'             => 1,
-                'o_users_online'          => 1,
-                'o_censoring'             => 0,
-                'o_show_dot'              => 0,
-                'o_topic_views'           => 1,
-                'o_quickjump'             => 1,
-                'o_gzip'                  => 0,
-                'o_additional_navlinks'   => '',
-                'o_report_method'         => 0,
-                'o_regs_report'           => 0,
-                'o_default_email_setting' => 1,
-                'o_mailing_list'          => $email,
-                'o_avatars'               => $avatars,
-                'o_avatars_dir'           => 'img/avatars',
-                'o_avatars_width'         => 60,
-                'o_avatars_height'        => 60,
-                'o_avatars_size'          => 10240,
-                'o_search_all_forums'     => 1,
-                'o_admin_email'           => $email,
-                'o_webmaster_email'       => $email,
-                'o_forum_subscriptions'   => 1,
-                'o_topic_subscriptions'   => 1,
-                'o_smtp_host'             => NULL,
-                'o_smtp_user'             => NULL,
-                'o_smtp_pass'             => NULL,
-                'o_smtp_ssl'              => 0,
-                'o_regs_allow'            => 1,
-                'o_regs_verify'           => 0,
-                'o_announcement'          => 0,
-                'o_announcement_message'  => $lang_install['Announcement'],
-                'o_rules'                 => 0,
-                'o_rules_message'         => $lang_install['Rules'],
-                'o_maintenance'           => 0,
-                'o_maintenance_message'   => $lang_install['Maintenance message'],
-                'o_default_dst'           => 0,
-                'o_feed_type'             => 2,
-                'o_feed_ttl'              => 0,
-                'p_message_bbcode'        => 1,
-                'p_message_img_tag'       => 1,
-                'p_message_all_caps'      => 1,
-                'p_subject_all_caps'      => 1,
-                'p_sig_all_caps'          => 1,
-                'p_sig_bbcode'            => 1,
-                'p_sig_img_tag'           => 0,
-                'p_sig_length'            => 400,
-                'p_sig_lines'             => 4,
-                'p_allow_banned_email'    => 1,
-                'p_allow_dupe_email'      => 0,
-                'p_force_guest_email'     => 1,
-                'o_pms_enabled'           => 1,                    // New PMS - Visman
-                'o_pms_min_kolvo'         => 0,
-                'o_merge_timeout'         => 86400,        // merge post - Visman
-                'o_board_redirect'        => '',    // для редиректа - Visman
-                'o_board_redirectg'       => 0,
-                'o_poll_enabled'          => 0,    // опросы - Visman
-                'o_poll_max_ques'         => 3,
-                'o_poll_max_field'        => 20,
-                'o_poll_time'             => 60,
-                'o_poll_term'             => 3,
-                'o_poll_guest'            => 0,
-                'o_fbox_guest'            => 0,    // Fancybox - Visman
-                'o_fbox_files'            => 'viewtopic.php,search.php,pmsnew.php',
-                'o_coding_forms'          => 1,    // кодирование форм - Visman
-                'o_check_ip'              => 0,    // проверка ip администрации - Visman
-                'o_crypto_enable'         => 1,    // случайные имена полей форм - Visman
-                'o_crypto_pas'            => $this->c->Secury->randomPass(25),
-                'o_crypto_salt'           => $this->c->Secury->randomPass(13),
-                'o_enable_acaptcha'       => 1, // математическая каптча
-                'st_max_users'            => 1,    // статистика по максимуму юзеров - Visman
-                'st_max_users_time'       => time(),
-            );
-
-            foreach ($pun_config as $conf_name => $conf_value)
-            {
-                $db->query('INSERT INTO '.$db_prefix.'config (conf_name, conf_value) VALUES(\''.$conf_name.'\', '.(is_null($conf_value) ? 'NULL' : '\''.$db->escape($conf_value).'\'').')')
-                    or error('Unable to insert into table '.$db_prefix.'config. Please check your configuration and try again', __FILE__, __LINE__, $db->error());
-            }
-
-            // Insert some other default data
-            $subject = $lang_install['Test post'];
-            $message = $lang_install['Message'];
-
-            $db->query('INSERT INTO '.$db_prefix.'categories (cat_name, disp_position) VALUES(\''.$db->escape($lang_install['Test category']).'\', 1)')
-                or error('Unable to insert into table '.$db_prefix.'categories. Please check your configuration and try again', __FILE__, __LINE__, $db->error());
-
-            $db->query('INSERT INTO '.$db_prefix.'forums (forum_name, forum_desc, num_topics, num_posts, last_post, last_post_id, last_poster, last_topic, disp_position, cat_id) VALUES(\''.$db->escape($lang_install['Test forum']).'\', \''.$db->escape($lang_install['This is just a test forum']).'\', 1, 1, '.$now.', 1, \''.$db->escape($username).'\', \''.$db->escape($subject).'\', 1, 1)') // last topic on index - Visman
-                or error('Unable to insert into table '.$db_prefix.'forums. Please check your configuration and try again', __FILE__, __LINE__, $db->error());
-
-            $db->query('INSERT INTO '.$db_prefix.'topics (poster, subject, posted, first_post_id, last_post, last_post_id, last_poster, forum_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape($subject).'\', '.$now.', 1, '.$now.', 1, \''.$db->escape($username).'\', 1)')
-                or error('Unable to insert into table '.$db_prefix.'topics. Please check your configuration and try again', __FILE__, __LINE__, $db->error());
-
-            $db->query('INSERT INTO '.$db_prefix.'posts (poster, poster_id, poster_ip, message, posted, topic_id) VALUES(\''.$db->escape($username).'\', 2, \''.$db->escape(get_remote_address()).'\', \''.$db->escape($message).'\', '.$now.', 1)')
-                or error('Unable to insert into table '.$db_prefix.'posts. Please check your configuration and try again', __FILE__, __LINE__, $db->error());
-
-            // Index the test post so searching for it works
-            require PUN_ROOT . 'include/search_idx.php';
-            update_search_index('post', 1, $message, $subject);
-
-            $db->end_transaction();
-
-
-            $alerts = array();
-
-            // Check if we disabled uploading avatars because file_uploads was disabled
-            if ($avatars == '0')
-                $alerts[] = $lang_install['Alert upload'];
-
-            // Add some random bytes at the end of the cookie name to prevent collisions
-            $cookie_prefix = 'fork' . $container->get('Secury')->randomHash(7) . '_';
-
-            // Generate the main.php file data
-            $config = $this->generate_config_file($base_url, $db_type, $db_host, $db_name, $db_username, $db_password, $db_prefix, $cookie_prefix);
-
-            // Attempt to write main.php and serve it up for download if writing fails
-            $written = false;
-            if (forum_is_writable($this->c->DIR_CONFIG))
-            {
-                $fh = @fopen($this->c->DIR_CONFIG . '/main.php', 'wb');
-                if ($fh)
-                {
-                    fwrite($fh, $config);
-                    fclose($fh);
-
-                    $written = true;
-                }
-            }
-
-
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="viewport" content="width=device-width, initial-scale=1" />
-<title><?php echo $lang_install['ForkBB Installation'] ?></title>
-<link rel="stylesheet" type="text/css" href="style/<?php echo $default_style ?>.css" />
-</head>
-<body>
-
-<div id="puninstall" class="pun">
-<div class="top-box"><div><!-- Top Corners --></div></div>
-<div class="punwrap">
-
-<div id="brdheader" class="block">
-    <div class="box">
-        <div id="brdtitle" class="inbox">
-            <h1><span><?php echo $lang_install['ForkBB Installation'] ?></span></h1>
-            <div id="brddesc"><p><?php echo $lang_install['ForkBB has been installed'] ?></p></div>
-        </div>
-    </div>
-</div>
-
-<div id="brdmain">
-
-<div class="blockform">
-    <h2><span><?php echo $lang_install['Final instructions'] ?></span></h2>
-    <div class="box">
-<?php
-
-if (! $written)
-{
-
-?>
-        <form method="post" action="">
-            <div class="inform">
-                <div class="forminfo">
-                    <p><?php echo $lang_install['Info 17'] ?></p>
-                    <p><?php echo $lang_install['Info 18'] ?></p>
-                </div>
-                <input type="hidden" name="generate_config" value="1" />
-                <input type="hidden" name="base_url" value="<?php echo pun_htmlspecialchars($base_url); ?>" />
-                <input type="hidden" name="db_type" value="<?php echo pun_htmlspecialchars($db_type); ?>" />
-                <input type="hidden" name="db_host" value="<?php echo pun_htmlspecialchars($db_host); ?>" />
-                <input type="hidden" name="db_name" value="<?php echo pun_htmlspecialchars($db_name); ?>" />
-                <input type="hidden" name="db_username" value="<?php echo pun_htmlspecialchars($db_username); ?>" />
-                <input type="hidden" name="db_password" value="<?php echo pun_htmlspecialchars($db_password); ?>" />
-                <input type="hidden" name="db_prefix" value="<?php echo pun_htmlspecialchars($db_prefix); ?>" />
-                <input type="hidden" name="cookie_prefix" value="<?php echo pun_htmlspecialchars($cookie_prefix); ?>" />
-
-<?php if (! empty($alerts)): ?>                <div class="forminfo error-info">
-                    <ul class="error-list">
-<?php
-
-foreach ($alerts as $cur_alert)
-    echo "\t\t\t\t\t".'<li>'.$cur_alert.'</li>'."\n";
-
-?>
-                    </ul>
-                </div>
-<?php endif; ?>            </div>
-            <p class="buttons"><input type="submit" value="<?php echo $lang_install['Download main.php file'] ?>" /></p>
-        </form>
-
-<?php
-
-}
-else
-{
-
-?>
-        <div class="fakeform">
-            <div class="inform">
-                <div class="forminfo">
-                    <p><?php echo $lang_install['ForkBB fully installed'] ?></p>
-                </div>
-            </div>
-        </div>
-<?php
-
-}
-
-?>
-    </div>
-</div>
-
-</div>
-
-</div>
-<div class="end-box"><div><!-- Bottom Corners --></div></div>
-</div>
-
-</body>
-</html>
-<?php
-
-        }
-    }
-}

+ 2 - 2
app/Models/Actions/LoadUserFromCookie.php

@@ -60,14 +60,14 @@ class LoadUserFromCookie
             $user->style = $this->config['o_default_style'];
 
             // быстрое переключение языка - Visman
-            $language = $this->cookie->get('glang');
+/*            $language = $this->cookie->get('glang');
             if (null !== $language) {
                 $language = preg_replace('%[^a-zA-Z0-9_]%', '', $language);
                 $languages = forum_list_langs();
                 if (in_array($language, $languages)) {
                     $user->language = $language;
                 }
-            }
+            } */
         } else {
             $user->isBot = false;
             if (! $user->dispTopics) {

+ 6 - 6
app/Models/Pages/Auth.php

@@ -100,7 +100,7 @@ class Auth extends Page
             'token'    => 'token:Login',
             'redirect' => 'referer:Index',
             'username' => ['required|string', __('Username')],
-            'password' => ['required|string|login_process', __('Password')],
+            'password' => ['required|string|login_process', __('Passphrase')],
             'save'     => 'checkbox',
         ]);
 
@@ -173,8 +173,8 @@ class Auth extends Page
      */
     public function forget(array $args)
     {
-        $this->nameTpl = 'password_reset';
-        $this->onlinePos = 'password_reset';
+        $this->nameTpl = 'passphrase_reset';
+        $this->onlinePos = 'passphrase_reset';
 
         if (! isset($args['_email'])) {
             $args['_email'] = '';
@@ -183,7 +183,7 @@ class Auth extends Page
         $this->c->Lang->load('auth');
 
         $this->titles = [
-            __('Password reset'),
+            __('Passphrase reset'),
         ];
         $this->data = [
             'formAction' => $this->c->Router->link('Forget'),
@@ -283,8 +283,8 @@ class Auth extends Page
      */
     public function changePass(array $args)
     {
-        $this->nameTpl = 'change_password';
-        $this->onlinePos = 'change_password';
+        $this->nameTpl = 'change_passphrase';
+        $this->onlinePos = 'change_passphrase';
 
         if (isset($args['_ok'])) {
             unset($args['_ok']);

+ 1 - 1
app/Models/Pages/Install.php

@@ -217,7 +217,7 @@ class Install extends Page
             'dbpass' => ['string:trim', __('Database password')],
             'dbprefix' => ['string:trim|max:40|check_prefix', __('Table prefix')],
             'username' => ['required|string:trim|min:2|max:25', __('Administrator username')],
-            'password' => ['required|string|min:8|password', __('Administrator password')],
+            'password' => ['required|string|min:8|password', __('Administrator passphrase')],
             'email' => 'required|string:trim,lower|email',
             'title' => ['required|string:trim', __('Board title')],
             'descr' => ['required|string:trim', __('Board description')],

+ 1 - 1
app/Models/Pages/Register.php

@@ -43,7 +43,7 @@ class Register extends Page
             'on'       => 'integer',
             'email'    => ['required_with:on|string:trim,lower|email|check_email', __('Email')],
             'username' => ['required_with:on|string:trim|min:2|max:25|login|check_username', __('Username')],
-            'password' => ['required_with:on|string|min:8|password', __('Password')],
+            'password' => ['required_with:on|string|min:8|password', __('Passphrase')],
         ])->setMessages([
             'agree.required'    => ['cancel', 'cancel'],
             'agree.token'       => [__('Bad agree', $this->c->Router->link('Register')), 'w'],

+ 1 - 1
app/Models/Validator.php

@@ -533,7 +533,7 @@ class Validator
 
     protected function vPassword($v, $value, $type)
     {
-        return $this->vRegex($v, $value, $type, '%^(?=.*\p{N})(?=.*\p{Lu})(?=.*\p{Ll})(?=.*[^\p{N}\p{L}])%u');
+        return $this->vRegex($v, $value, $type, '%[^\x20][\x20][^\x20]%');
     }
 
     protected function vLogin($v, $value, $type)

+ 17 - 17
app/lang/English/auth.po

@@ -22,10 +22,10 @@ msgid "Account is not activated"
 msgstr "Account is not activated."
 
 msgid "Wrong user/pass"
-msgstr "Wrong username and/or password."
+msgstr "Wrong username and/or passphrase."
 
 msgid "Forgotten pass"
-msgstr "Forgotten your password?"
+msgstr "Forgotten?"
 
 msgid "Login redirect"
 msgstr "Logged in successfully. Redirecting …"
@@ -33,11 +33,11 @@ msgstr "Logged in successfully. Redirecting …"
 msgid "Logout redirect"
 msgstr "Logged out. Redirecting …"
 
-msgid "Password reset"
-msgstr "Password reset"
+msgid "Passphrase reset"
+msgstr "Passphrase reset"
 
-msgid "Password reset info"
-msgstr "An email will be sent to the specified address with instructions on how to change your password."
+msgid "Passphrase reset info"
+msgstr "An email will be sent to the specified address with instructions on how to change your passphrase."
 
 msgid "Not registered"
 msgstr "Not registered yet?"
@@ -46,34 +46,34 @@ msgid "Remember me"
 msgstr "Remember me"
 
 msgid "Forget mail"
-msgstr "An email has been sent to the specified address with instructions on how to change your password. If it does not arrive you can contact the forum administrator at <a href=\"mailto:%1$s\">%1$s</a>."
+msgstr "An email has been sent to the specified address with instructions on how to change your passphrase. If it does not arrive you can contact the forum administrator at <a href=\"mailto:%1$s\">%1$s</a>."
 
 msgid "Email flood"
-msgstr "This account has already requested a password reset in the past hour. Please wait %s minutes before trying again."
+msgstr "This account has already requested a passphrase reset in the past hour. Please wait %s minutes before trying again."
 
 msgid "Pass not match"
-msgstr "Passwords do not match."
+msgstr "Passphrases do not match."
 
 msgid "Change pass"
-msgstr "Change password"
+msgstr "Change passphrase"
 
-msgid "Change password"
-msgstr "Change password"
+msgid "Change passphrase"
+msgstr "Change passphrase"
 
 msgid "New pass"
-msgstr "New password"
+msgstr "New passphrase"
 
 msgid "Confirm new pass"
-msgstr "Confirm new password"
+msgstr "Confirm new passphrase"
 
 msgid "Pass format"
-msgstr "Password must contain the digit, uppercase and lowercase letters, symbol different from the digits and letters."
+msgstr "Passphrase must contain a few words."
 
 msgid "Pass info"
-msgstr "Passwords must be at least 8 characters long. Passwords are case sensitive."
+msgstr "Passphrase must be at least 16 characters long. Passphrase are case sensitive."
 
 msgid "Pass updated"
-msgstr "Your password has been updated. You can now login with your new password."
+msgstr "Your passphrase has been updated. You can now login with your new passphrase."
 
 msgid "Account activated"
 msgstr "Account activated."

+ 2 - 2
app/lang/English/common.po

@@ -141,8 +141,8 @@ msgstr "Go to the first new post in this topic."
 msgid "Username"
 msgstr "Username"
 
-msgid "Password"
-msgstr "Password"
+msgid "Passphrase"
+msgstr "Passphrase"
 
 msgid "Email"
 msgstr "Email"

+ 3 - 3
app/lang/English/install.po

@@ -84,11 +84,11 @@ msgstr "Administrator's username"
 msgid "Info 8"
 msgstr "The username must begin with a letter. May contain letters, numbers, spaces, dots, dashes and underscores."
 
-msgid "Administrator password"
-msgstr "Administrator's password"
+msgid "Administrator passphrase"
+msgstr "Administrator's passphrase"
 
 msgid "Info 9"
-msgstr "Password must contain the digit, uppercase and lowercase letters, symbol different from the digits and letters. Passwords must be at least 8 characters long. Passwords are case sensitive."
+msgstr "Passphrase must contain a few words. Passphrase must be at least 16 characters long. Passphrase are case sensitive."
 
 msgid "Administrator email"
 msgstr "Administrator's email"

+ 3 - 3
app/lang/English/register.po

@@ -58,13 +58,13 @@ msgid "Email info"
 msgstr "Please enter a valid email address. It will be used to activate your account."
 
 msgid "Pass format"
-msgstr "Password must contain the digit, uppercase and lowercase letters, symbol different from the digits and letters."
+msgstr "Passphrase must contain a few words."
 
 msgid "Pass info"
-msgstr "Passwords must be at least 8 characters long. Passwords are case sensitive."
+msgstr "Passphrase must be at least 16 characters long. Passphrase are case sensitive."
 
 msgid "Login format"
 msgstr "The username must begin with a letter. May contain letters, numbers, spaces, dots, dashes and underscores."
 
 msgid "Error welcom mail"
-msgstr "When sending email there was an error. Please use the password reset form for activate your account or contact the forum administrator at <a href=\"mailto:%1$s\">%1$s</a>."
+msgstr "When sending email there was an error. Please use the passphrase reset form for activate your account or contact the forum administrator at <a href=\"mailto:%1$s\">%1$s</a>."

+ 16 - 16
app/lang/Russian/auth.po

@@ -22,10 +22,10 @@ msgid "Account is not activated"
 msgstr "Аккаунт не активирован."
 
 msgid "Wrong user/pass"
-msgstr "Неверное имя и/или пароль. Имя и пароль чувствительны к регистру!"
+msgstr "Неверное имя и/или кодовая фраза. Имя и кодовая фраза чувствительны к регистру!"
 
 msgid "Forgotten pass"
-msgstr "Забыли пароль?"
+msgstr "Забыли?"
 
 msgid "Login redirect"
 msgstr "Успешный вход. Переадресация &hellip;"
@@ -33,11 +33,11 @@ msgstr "Успешный вход. Переадресация &hellip;"
 msgid "Logout redirect"
 msgstr "Выход произведён. Переадресация &hellip;"
 
-msgid "Password reset"
-msgstr "Сброс пароля"
+msgid "Passphrase reset"
+msgstr "Сброс кодовой фразы"
 
-msgid "Password reset info"
-msgstr "Инструкция по смене пароля будет выслана на указанный почтовый адрес."
+msgid "Passphrase reset info"
+msgstr "Инструкция по смене кодовой фразы будет выслана на указанный почтовый адрес."
 
 msgid "Not registered"
 msgstr "Ещё не зарегистрированы?"
@@ -46,34 +46,34 @@ msgid "Remember me"
 msgstr "Запомнить меня"
 
 msgid "Forget mail"
-msgstr "Письмо с инструкцией по изменению пароля было выслано на указанный вами почтовый адрес. Если вы не получите его, свяжитесь с администрацией форума по адресу <a href=\"mailto:%1$s\">%1$s</a>."
+msgstr "Письмо с инструкцией по изменению кодовой фразы было выслано на указанный вами почтовый адрес. Если вы не получите его, свяжитесь с администрацией форума по адресу <a href=\"mailto:%1$s\">%1$s</a>."
 
 msgid "Email flood"
-msgstr "Для этой учетной записи недавно уже запрашивали сброс пароля. Пожалуйста, подождите %s минут, прежде чем повторить попытку."
+msgstr "Для этой учетной записи недавно уже запрашивали сброс кодовой фразы. Пожалуйста, подождите %s минут, прежде чем повторить попытку."
 
 msgid "Pass not match"
-msgstr "Пароли не совпадают."
+msgstr "Кодовые фразы не совпадают."
 
 msgid "Change pass"
-msgstr "Смена пароля"
+msgstr "Смена кодовой фразы"
 
-msgid "Change password"
-msgstr "Сменить пароль"
+msgid "Change passphrase"
+msgstr "Сменить кодовую фразу"
 
 msgid "New pass"
-msgstr "Новый пароль"
+msgstr "Новая кодовая фраза"
 
 msgid "Confirm new pass"
 msgstr "Ещё раз"
 
 msgid "Pass format"
-msgstr "Пароль должен содержать цифру, строчную и прописную буквы, символ отличающийся от цифр и букв."
+msgstr "Кодовая фраза должна содержать несколько слов."
 
 msgid "Pass info"
-msgstr "Пароль должен состоять минимум из 8 символов. Пароль чувствителен к регистру вводимых букв."
+msgstr "Кодовая фраза должна состоять минимум из 16 символов. Она чувствительна к регистру вводимых букв."
 
 msgid "Pass updated"
-msgstr "Ваш пароль изменён. Вы можете войти на форум с новым паролем."
+msgstr "Ваша кодовая фраза изменена. Вы можете войти на форум с ее помощью."
 
 msgid "Account activated"
 msgstr "Аккаунт активирован."

+ 2 - 2
app/lang/Russian/common.po

@@ -141,8 +141,8 @@ msgstr "Перейти к первому новому сообщению в те
 msgid "Username"
 msgstr "Имя"
 
-msgid "Password"
-msgstr "Пароль"
+msgid "Passphrase"
+msgstr "Кодовая фраза"
 
 msgid "Email"
 msgstr "E-mail"

+ 3 - 3
app/lang/Russian/install.po

@@ -84,11 +84,11 @@ msgstr "Имя администратора"
 msgid "Info 8"
 msgstr "Имя должно начинаться с буквы. Может содержать буквы, цифры, пробел, точку, дефис и знак подчеркивания."
 
-msgid "Administrator password"
-msgstr "Пароль администратора"
+msgid "Administrator passphrase"
+msgstr "Кодовая фраза администратора"
 
 msgid "Info 9"
-msgstr "Пароль должен содержать цифру, строчную и прописную буквы, символ отличающийся от цифр и букв. Пароль должен состоять минимум из 8 символов. Пароль чувствителен к регистру вводимых букв."
+msgstr "Кодовая фраза должна содержать несколько слов. Иметь длину не менее 16 символов. Она чувствительна к регистру."
 
 msgid "Administrator email"
 msgstr "Почта администратора"

+ 3 - 3
app/lang/Russian/register.po

@@ -58,13 +58,13 @@ msgid "Email info"
 msgstr "Укажите действующий почтовый адрес. Он будет использован для активации аккаунта."
 
 msgid "Pass format"
-msgstr "Пароль должен содержать цифру, строчную и прописную буквы, символ отличающийся от цифр и букв."
+msgstr "Кодовая фраза должна содержать несколько слов."
 
 msgid "Pass info"
-msgstr "Пароль должен состоять минимум из 8 символов. Пароль чувствителен к регистру вводимых букв."
+msgstr "Иметь длину не менее 16 символов. Она чувствительна к регистру."
 
 msgid "Login format"
 msgstr "Имя пользователя должно начинаться с буквы. Может содержать буквы, цифры, пробел, точку, дефис и знак подчеркивания."
 
 msgid "Error welcom mail"
-msgstr "При отправке письма возникла ошибка. Пожалуйста, воспользуйтесь формой восстановления пароля для активации аккаунта или свяжитесь с администратором форума по адресу <a href=\"mailto:%1$s\">%1$s</a>."
+msgstr "При отправке письма возникла ошибка. Пожалуйста, воспользуйтесь формой восстановления кодовой фразы для активации аккаунта или свяжитесь с администратором форума по адресу <a href=\"mailto:%1$s\">%1$s</a>."

+ 1 - 1
app/templates/change_password.tpl → app/templates/change_passphrase.tpl

@@ -14,7 +14,7 @@
             <label class="f-child4">{!! __('Pass format') !!} {!! __('Pass info') !!}</label>
           </div>
           <div>
-            <input class="f-btn" type="submit" name="login" value="{!! __('Change password') !!}" tabindex="3">
+            <input class="f-btn" type="submit" name="login" value="{!! __('Change passphrase') !!}" tabindex="3">
           </div>
         </form>
       </div>

+ 2 - 2
app/templates/layouts/install.tpl

@@ -101,8 +101,8 @@
             <label class="f-child4">{!! __('Info 8') !!}</label>
           </div>
           <div>
-            <label class="f-child1 f-req" for="id-password">{!! __('Administrator password') !!}</label>
-            <input required class="f-ctrl" id="id-password" type="password" name="password" pattern=".{8,}">
+            <label class="f-child1 f-req" for="id-password">{!! __('Administrator passphrase') !!}</label>
+            <input required class="f-ctrl" id="id-password" type="password" name="password" pattern="^.{16,}$">
             <label class="f-child4">{!! __('Info 9') !!}</label>
           </div>
           <div>

+ 1 - 1
app/templates/login.tpl

@@ -10,7 +10,7 @@
             <input required class="f-ctrl" id="id-username" type="text" name="username" value="{{ $username }}" maxlength="25" autofocus="autofocus" spellcheck="false" tabindex="1">
           </div>
           <div>
-            <label class="f-child1 f-req" for="id-password">{!! __('Password') !!}<a class="f-forgetlink" href="{!! $forgetLink !!}" tabindex="5">{!! __('Forgotten pass') !!}</a></label>
+            <label class="f-child1 f-req" for="id-password">{!! __('Passphrase') !!}<a class="f-forgetlink" href="{!! $forgetLink !!}" tabindex="5">{!! __('Forgotten pass') !!}</a></label>
             <input required class="f-ctrl" id="id-password" type="password" name="password" tabindex="2">
           </div>
           <div>

+ 2 - 2
app/templates/password_reset.tpl → app/templates/passphrase_reset.tpl

@@ -1,13 +1,13 @@
 @extends('layouts/main')
     <section class="f-main f-login">
       <div class="f-lrdiv">
-        <h2>{!! __('Password reset') !!}</h2>
+        <h2>{!! __('Passphrase reset') !!}</h2>
         <form class="f-form" method="post" action="{!! $formAction !!}">
           <input type="hidden" name="token" value="{!! $formToken !!}">
           <div>
             <label class="f-child1 f-req" for="id-email">{!! __('Email') !!}</label>
             <input required class="f-ctrl" id="id-email" type="text" name="email" value="{{ $email }}" maxlength="80" pattern=".+@.+" autofocus="autofocus" spellcheck="false" tabindex="1">
-            <label class="f-child4">{!! __('Password reset info') !!}</label>
+            <label class="f-child4">{!! __('Passphrase reset info') !!}</label>
           </div>
           <div>
             <input class="f-btn" type="submit" name="submit" value="{!! __('Send email') !!}" tabindex="2">

+ 2 - 2
app/templates/register.tpl

@@ -17,8 +17,8 @@
             <label class="f-child4 f-fhint">{!! __('Login format') !!}</label>
           </div>
           <div>
-            <label class="f-child1 f-req" for="id-password">{!! __('Password') !!}</label>
-            <input required class="f-ctrl" id="id-password" type="password" name="password" pattern=".{8,}" tabindex="3">
+            <label class="f-child1 f-req" for="id-password">{!! __('Passphrase') !!}</label>
+            <input required class="f-ctrl" id="id-password" type="password" name="password" pattern="^.{16,}$" tabindex="3">
             <label class="f-child4 f-fhint">{!! __('Pass format') !!} {!! __('Pass info') !!}</label>
           </div>
           <div>