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

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

@@ -100,7 +100,7 @@ class Auth extends Page
             'token'    => 'token:Login',
             'token'    => 'token:Login',
             'redirect' => 'referer:Index',
             'redirect' => 'referer:Index',
             'username' => ['required|string', __('Username')],
             'username' => ['required|string', __('Username')],
-            'password' => ['required|string|login_process', __('Password')],
+            'password' => ['required|string|login_process', __('Passphrase')],
             'save'     => 'checkbox',
             'save'     => 'checkbox',
         ]);
         ]);
 
 
@@ -173,8 +173,8 @@ class Auth extends Page
      */
      */
     public function forget(array $args)
     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'])) {
         if (! isset($args['_email'])) {
             $args['_email'] = '';
             $args['_email'] = '';
@@ -183,7 +183,7 @@ class Auth extends Page
         $this->c->Lang->load('auth');
         $this->c->Lang->load('auth');
 
 
         $this->titles = [
         $this->titles = [
-            __('Password reset'),
+            __('Passphrase reset'),
         ];
         ];
         $this->data = [
         $this->data = [
             'formAction' => $this->c->Router->link('Forget'),
             'formAction' => $this->c->Router->link('Forget'),
@@ -283,8 +283,8 @@ class Auth extends Page
      */
      */
     public function changePass(array $args)
     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'])) {
         if (isset($args['_ok'])) {
             unset($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')],
             'dbpass' => ['string:trim', __('Database password')],
             'dbprefix' => ['string:trim|max:40|check_prefix', __('Table prefix')],
             'dbprefix' => ['string:trim|max:40|check_prefix', __('Table prefix')],
             'username' => ['required|string:trim|min:2|max:25', __('Administrator username')],
             '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',
             'email' => 'required|string:trim,lower|email',
             'title' => ['required|string:trim', __('Board title')],
             'title' => ['required|string:trim', __('Board title')],
             'descr' => ['required|string:trim', __('Board description')],
             'descr' => ['required|string:trim', __('Board description')],

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

@@ -43,7 +43,7 @@ class Register extends Page
             'on'       => 'integer',
             'on'       => 'integer',
             'email'    => ['required_with:on|string:trim,lower|email|check_email', __('Email')],
             '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')],
             '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([
         ])->setMessages([
             'agree.required'    => ['cancel', 'cancel'],
             'agree.required'    => ['cancel', 'cancel'],
             'agree.token'       => [__('Bad agree', $this->c->Router->link('Register')), 'w'],
             '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)
     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)
     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."
 msgstr "Account is not activated."
 
 
 msgid "Wrong user/pass"
 msgid "Wrong user/pass"
-msgstr "Wrong username and/or password."
+msgstr "Wrong username and/or passphrase."
 
 
 msgid "Forgotten pass"
 msgid "Forgotten pass"
-msgstr "Forgotten your password?"
+msgstr "Forgotten?"
 
 
 msgid "Login redirect"
 msgid "Login redirect"
 msgstr "Logged in successfully. Redirecting …"
 msgstr "Logged in successfully. Redirecting …"
@@ -33,11 +33,11 @@ msgstr "Logged in successfully. Redirecting …"
 msgid "Logout redirect"
 msgid "Logout redirect"
 msgstr "Logged out. Redirecting …"
 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"
 msgid "Not registered"
 msgstr "Not registered yet?"
 msgstr "Not registered yet?"
@@ -46,34 +46,34 @@ msgid "Remember me"
 msgstr "Remember me"
 msgstr "Remember me"
 
 
 msgid "Forget mail"
 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"
 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"
 msgid "Pass not match"
-msgstr "Passwords do not match."
+msgstr "Passphrases do not match."
 
 
 msgid "Change pass"
 msgid "Change pass"
-msgstr "Change password"
+msgstr "Change passphrase"
 
 
-msgid "Change password"
-msgstr "Change password"
+msgid "Change passphrase"
+msgstr "Change passphrase"
 
 
 msgid "New pass"
 msgid "New pass"
-msgstr "New password"
+msgstr "New passphrase"
 
 
 msgid "Confirm new pass"
 msgid "Confirm new pass"
-msgstr "Confirm new password"
+msgstr "Confirm new passphrase"
 
 
 msgid "Pass format"
 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"
 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"
 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"
 msgid "Account activated"
 msgstr "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"
 msgid "Username"
 msgstr "Username"
 msgstr "Username"
 
 
-msgid "Password"
-msgstr "Password"
+msgid "Passphrase"
+msgstr "Passphrase"
 
 
 msgid "Email"
 msgid "Email"
 msgstr "Email"
 msgstr "Email"

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

@@ -84,11 +84,11 @@ msgstr "Administrator's username"
 msgid "Info 8"
 msgid "Info 8"
 msgstr "The username must begin with a letter. May contain letters, numbers, spaces, dots, dashes and underscores."
 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"
 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"
 msgid "Administrator email"
 msgstr "Administrator's 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."
 msgstr "Please enter a valid email address. It will be used to activate your account."
 
 
 msgid "Pass format"
 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"
 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"
 msgid "Login format"
 msgstr "The username must begin with a letter. May contain letters, numbers, spaces, dots, dashes and underscores."
 msgstr "The username must begin with a letter. May contain letters, numbers, spaces, dots, dashes and underscores."
 
 
 msgid "Error welcom mail"
 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 "Аккаунт не активирован."
 msgstr "Аккаунт не активирован."
 
 
 msgid "Wrong user/pass"
 msgid "Wrong user/pass"
-msgstr "Неверное имя и/или пароль. Имя и пароль чувствительны к регистру!"
+msgstr "Неверное имя и/или кодовая фраза. Имя и кодовая фраза чувствительны к регистру!"
 
 
 msgid "Forgotten pass"
 msgid "Forgotten pass"
-msgstr "Забыли пароль?"
+msgstr "Забыли?"
 
 
 msgid "Login redirect"
 msgid "Login redirect"
 msgstr "Успешный вход. Переадресация &hellip;"
 msgstr "Успешный вход. Переадресация &hellip;"
@@ -33,11 +33,11 @@ msgstr "Успешный вход. Переадресация &hellip;"
 msgid "Logout redirect"
 msgid "Logout redirect"
 msgstr "Выход произведён. Переадресация &hellip;"
 msgstr "Выход произведён. Переадресация &hellip;"
 
 
-msgid "Password reset"
-msgstr "Сброс пароля"
+msgid "Passphrase reset"
+msgstr "Сброс кодовой фразы"
 
 
-msgid "Password reset info"
-msgstr "Инструкция по смене пароля будет выслана на указанный почтовый адрес."
+msgid "Passphrase reset info"
+msgstr "Инструкция по смене кодовой фразы будет выслана на указанный почтовый адрес."
 
 
 msgid "Not registered"
 msgid "Not registered"
 msgstr "Ещё не зарегистрированы?"
 msgstr "Ещё не зарегистрированы?"
@@ -46,34 +46,34 @@ msgid "Remember me"
 msgstr "Запомнить меня"
 msgstr "Запомнить меня"
 
 
 msgid "Forget mail"
 msgid "Forget mail"
-msgstr "Письмо с инструкцией по изменению пароля было выслано на указанный вами почтовый адрес. Если вы не получите его, свяжитесь с администрацией форума по адресу <a href=\"mailto:%1$s\">%1$s</a>."
+msgstr "Письмо с инструкцией по изменению кодовой фразы было выслано на указанный вами почтовый адрес. Если вы не получите его, свяжитесь с администрацией форума по адресу <a href=\"mailto:%1$s\">%1$s</a>."
 
 
 msgid "Email flood"
 msgid "Email flood"
-msgstr "Для этой учетной записи недавно уже запрашивали сброс пароля. Пожалуйста, подождите %s минут, прежде чем повторить попытку."
+msgstr "Для этой учетной записи недавно уже запрашивали сброс кодовой фразы. Пожалуйста, подождите %s минут, прежде чем повторить попытку."
 
 
 msgid "Pass not match"
 msgid "Pass not match"
-msgstr "Пароли не совпадают."
+msgstr "Кодовые фразы не совпадают."
 
 
 msgid "Change pass"
 msgid "Change pass"
-msgstr "Смена пароля"
+msgstr "Смена кодовой фразы"
 
 
-msgid "Change password"
-msgstr "Сменить пароль"
+msgid "Change passphrase"
+msgstr "Сменить кодовую фразу"
 
 
 msgid "New pass"
 msgid "New pass"
-msgstr "Новый пароль"
+msgstr "Новая кодовая фраза"
 
 
 msgid "Confirm new pass"
 msgid "Confirm new pass"
 msgstr "Ещё раз"
 msgstr "Ещё раз"
 
 
 msgid "Pass format"
 msgid "Pass format"
-msgstr "Пароль должен содержать цифру, строчную и прописную буквы, символ отличающийся от цифр и букв."
+msgstr "Кодовая фраза должна содержать несколько слов."
 
 
 msgid "Pass info"
 msgid "Pass info"
-msgstr "Пароль должен состоять минимум из 8 символов. Пароль чувствителен к регистру вводимых букв."
+msgstr "Кодовая фраза должна состоять минимум из 16 символов. Она чувствительна к регистру вводимых букв."
 
 
 msgid "Pass updated"
 msgid "Pass updated"
-msgstr "Ваш пароль изменён. Вы можете войти на форум с новым паролем."
+msgstr "Ваша кодовая фраза изменена. Вы можете войти на форум с ее помощью."
 
 
 msgid "Account activated"
 msgid "Account activated"
 msgstr "Аккаунт активирован."
 msgstr "Аккаунт активирован."

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

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

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

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

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

@@ -58,13 +58,13 @@ msgid "Email info"
 msgstr "Укажите действующий почтовый адрес. Он будет использован для активации аккаунта."
 msgstr "Укажите действующий почтовый адрес. Он будет использован для активации аккаунта."
 
 
 msgid "Pass format"
 msgid "Pass format"
-msgstr "Пароль должен содержать цифру, строчную и прописную буквы, символ отличающийся от цифр и букв."
+msgstr "Кодовая фраза должна содержать несколько слов."
 
 
 msgid "Pass info"
 msgid "Pass info"
-msgstr "Пароль должен состоять минимум из 8 символов. Пароль чувствителен к регистру вводимых букв."
+msgstr "Иметь длину не менее 16 символов. Она чувствительна к регистру."
 
 
 msgid "Login format"
 msgid "Login format"
 msgstr "Имя пользователя должно начинаться с буквы. Может содержать буквы, цифры, пробел, точку, дефис и знак подчеркивания."
 msgstr "Имя пользователя должно начинаться с буквы. Может содержать буквы, цифры, пробел, точку, дефис и знак подчеркивания."
 
 
 msgid "Error welcom mail"
 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>
             <label class="f-child4">{!! __('Pass format') !!} {!! __('Pass info') !!}</label>
           </div>
           </div>
           <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>
           </div>
         </form>
         </form>
       </div>
       </div>

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

@@ -101,8 +101,8 @@
             <label class="f-child4">{!! __('Info 8') !!}</label>
             <label class="f-child4">{!! __('Info 8') !!}</label>
           </div>
           </div>
           <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>
             <label class="f-child4">{!! __('Info 9') !!}</label>
           </div>
           </div>
           <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">
             <input required class="f-ctrl" id="id-username" type="text" name="username" value="{{ $username }}" maxlength="25" autofocus="autofocus" spellcheck="false" tabindex="1">
           </div>
           </div>
           <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">
             <input required class="f-ctrl" id="id-password" type="password" name="password" tabindex="2">
           </div>
           </div>
           <div>
           <div>

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

@@ -1,13 +1,13 @@
 @extends('layouts/main')
 @extends('layouts/main')
     <section class="f-main f-login">
     <section class="f-main f-login">
       <div class="f-lrdiv">
       <div class="f-lrdiv">
-        <h2>{!! __('Password reset') !!}</h2>
+        <h2>{!! __('Passphrase reset') !!}</h2>
         <form class="f-form" method="post" action="{!! $formAction !!}">
         <form class="f-form" method="post" action="{!! $formAction !!}">
           <input type="hidden" name="token" value="{!! $formToken !!}">
           <input type="hidden" name="token" value="{!! $formToken !!}">
           <div>
           <div>
             <label class="f-child1 f-req" for="id-email">{!! __('Email') !!}</label>
             <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">
             <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>
           <div>
           <div>
             <input class="f-btn" type="submit" name="submit" value="{!! __('Send email') !!}" tabindex="2">
             <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>
             <label class="f-child4 f-fhint">{!! __('Login format') !!}</label>
           </div>
           </div>
           <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>
             <label class="f-child4 f-fhint">{!! __('Pass format') !!} {!! __('Pass info') !!}</label>
           </div>
           </div>
           <div>
           <div>