<script src="/adg/style/js/clipboard.min.js"></script>
<?php

    require_once (__DIR__ . "/../modules/format/index.php");
    require_once (__DIR__ . "/../modules/function_update.php");
    require_once (__DIR__ . "/../modules/function.php");
    require_once (__DIR__ . "/../modules/auth/index.php");
    require_once (__DIR__ . "/../modules/request/index.php");
    require_once (__DIR__ . "/../modules/email/index.php");
    require_once (__DIR__ . "/../modules/message/index.php");
    require_once (__DIR__ . "/../modules/ip/index.php");

    /*Установочный скрип, создает структуру БД и админа проекта*/
    function generatePassword($length = 8) {
        $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        $count = mb_strlen($chars);

        for ($i = 0, $result = ''; $i < $length; $i++) {
            $index = mt_rand(0, $count - 1);
            $result .= mb_substr($chars, $index, 1);
        }

        return $result;
    }

    if ($content = file_get_contents("install.sql")) {
        require_once(__DIR__ . "/../conf.php");

        if (!defined('DB_HOST')) {
            define('DB_HOST', $DB_HOST);
        }
        if (!defined('DB_USER')) {
            define('DB_USER', $DB_USER);
        }
        if (!defined('DB_PASS')) {
            define('DB_PASS', $DB_PASS);
        }
        if (!defined('DB_NAME')) {
            define('DB_NAME', $DB_NAME);
        }
        if (!defined('DB_CHAR')) {
            define('DB_CHAR', $DB_CHAR);
        }

        //создадим БД
        try {
            //подключаемся к серверу БД
            echo "<b>Подключаемся к БД...</b>";
            $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS);
            if (!$mysqli->connect_errno) {
                echo "<span style='color: green;'>OK</span><br>";
            } else {
                echo "<span style='color: red;'>Fail!</span><br>";
                exit();
            }

            //удаляем если есть
            echo "<b>Удаляем старую БД...</b>";
            if ($mysqli->query("DROP DATABASE `".DB_NAME."`;")) {
                echo "<span style='color: green;'>OK</span><br>";
            } else {
                echo "<span style='color: red;'>Fail!</span><br>";
            }
            //и создаем
            echo "<b>Создаем новую БД...</b>";
            if ($mysqli->query("CREATE DATABASE `".DB_NAME."`;")) {
                echo "<span style='color: green;'>OK</span><br>";
            } else {
                echo "<span style='color: red;'>Fail!</span><br>";
                exit();
            }

            //создаем структуру
            echo "<b>Подключаемся к созданной БД...</b>";
            $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
            if (!$mysqli->connect_errno) {
                echo "<span style='color: green;'>OK</span><br>";
            } else {
                echo "<span style='color: red;'>Fail!</span><br>";
                exit();
            }

            //создаем структуру
            echo "<b>Создаем структуру БД...</b>";
            if ($mysqli->multi_query($content)) {
                $i = 0;
                do {
                    if (!$mysqli->more_results()) break;
                    $i++;
                } while ($mysqli->next_result());
            }
            if ($mysqli->errno) {
                echo "<span style='color: red;'>Fail!</span><br>";
                echo '<small><b>Описание ошибки: </b>'.$mysqli->error.'.</small><br>';
                exit();
            } else {
                echo "<span style='color: green;'>OK</span><br>";
            }
            $mysqli->autocommit(TRUE);
            if ($result = $mysqli->query("SELECT @@autocommit")) {
                $row = $result->fetch_row();
                printf("Autocommit is %s\n", $row[0]);
                $result->free();
            }

            // меняем стандартные данные для админа
            if (!DEVELOPMENT) {
                $password = generatePassword(16);
                $password_hash = md5($password);

                if (isset($_SERVER['SERVER_NAME'])) {
                    $email = 'admin@' . $_SERVER['SERVER_NAME'];
                } else {
                    $email = 'hidden@domain.hyip';
                }

                $hash = auth_gen_hash_automatic_login('admin', $password_hash);

                $sql =  "UPDATE `users` SET ";
                $sql .= "  `password` = ".escape_db($password_hash);
                $sql .= ", `email` = ".escape_db($email);
                $sql .= ", `hash` = ".escape_db($hash['data']['hash']);
                $sql .= " WHERE `login` = ".escape_db('admin');
                $mysqli -> query($sql);

                $sql = "UPDATE `settings` SET `value` = ".escape_db($email)." WHERE name = 'admin_email'";
                $mysqli->query($sql);

                if (true) {
    				$data = [];
    				$data['to'] = $email;
    				$data['login'] = 'admin';
    				$data['date'] = format_date(time());
    				$data['ip'] = get_ip();
                    $data['password'] = $password;
                    $data['name'] = 'Backup-данных установки проекта';
    				email_send_template($data, 'install_copy_data');
    			}

                echo "<br><span id='text' style='color: red;'>Данные для входа: admin / $password<br>";
                echo "Ссылка: " . get_site_url().'/handlers/login.php?hash='.$hash['data']['hash'] . "</span><br><br>";
            } else {
                echo "<br><span id='text' style='color: red;'>Данные для входа: admin / admin<br></span><br><br>";
                /*echo "Ссылка: " . get_site_url().'/handlers/login.php?hash=' . auth_gen_hash_automatic_login('admin', md5('admin')) . "</span><br><br>";*/
            }

            if (!DEVELOPMENT) {
                //закрываем доступ к каталогу установки
                echo "<b>Закрываем доступ к каталогу установки...</b>";
                $fp = fopen(".htaccess", "w");
                    fwrite($fp, "deny from all");
                fclose($fp);
                if (file_exists(__DIR__."/.htaccess")) {
                    echo "<span style='color: green;'>OK</span><br>";
                } else {
                    echo "<span style='color: red;'>Fail!</span><br>";
                }
            }
            echo "<span style='color: green;'><b>Установка скрипта закончена!</b></span><br><br>";


            echo '<button class="btn-clipboard" data-clipboard-target="#text">Скопировать данные в буфер обмена</button><br><br>';
            echo '<script>';
                echo 'new ClipboardJS(".btn-clipboard");'; // Не забываем инициализировать библиотеку на нашей кнопке
            echo '</script>';

            echo "<span style='color: green;'><b><a href='/' style='color: green;'>Вернуться на главную!</a></b></span>";
        } catch (mysqli_sql_exception $e) {
            die("<span style='color: red;'>Неопределенное исключение!</span>");
        }
    } else {
        die("<span style='color: red;'>Не удалось найти файл для создания структуры БД!</span>");
    }
