View file modules/forum/index.php

File size: 11.55Kb
<?php

/* SocCMS
 * Дата последнего редактирования 22.10.2016
 * Модифицировал densnet
 * Автор yadalay
 */

foreach (array('start', 'compress', 'sess', 'settings', 'db_connect', 'ipua', 'fnc', 'user') as $inc) {
    require_once "../../sys/inc/$inc.php";
}
mb_internal_encoding('UTF-8');

#Константа облегчает ситуацию с перемещением папки в другие разделы сайта, меньше надо будет путь менять
#Путь к папке форума
define('DIR_FORUM', '/modules/forum/');
define('DIR_FORUM_FILES', '/modules/forum/files/');
#Рейтинг поста в теме, при котором появится над постом "Лучший ответ".
define('RATING', $set['forum_post_rat_best']);
#Отрицательный рейтинг поста в теме, при котором будет отправляться жалоба админам.
define('RATING2', '-' . $set['forum_post_rat_jal']);
#Цвет надписи "Лучший ответ". По умолчанию: жёлтый
define('COLOR', $set['forum_post_color_best']);
 
$menu = (isset($_GET['menu'])) ? htmlspecialchars($_GET['menu']) : null;

switch ($menu) {
    default:

        $set['title'] = (isset($_GET['create_forum'])) ? lang('Форум') . ' - ' . lang('создание подфорума') : lang('Форум');

        require_once H . 'sys/inc/thead.php';

        aut();

        if (isset($_GET['create_forum'])) {
            require_once 'action/create_forum.php'; #Создание подфорума.
        } elseif (isset($_GET['edit_forum'])) {
            require_once 'action/edit_forum.php'; #Редактирование подфорума.
        }

        if (isset($_SESSION['msg'])) {
            echo $_SESSION['msg'];
            unset($_SESSION['msg']);
        }

        $set['title'] = (isset($_GET['create_forum'])) ? '' . lang('Форум - Создание подфорума') . '' : '' . lang('Форум') . '';

        $k_post = $db->super_query("SELECT COUNT(*) as count FROM forum");
        $k_page = k_page($k_post['count'], $set['p_str']);
        $page = page($k_page);
        $start = $set['p_str'] * $page - $set['p_str'];

        if (isset($user)) {
            $new_journal = $db->super_query("SELECT COUNT(*) as count FROM `f_journal` WHERE `read` = '0' AND `id_user` = '$user[id]'");
            $new_journal = '+' . $new_journal['count'] . "";
            $f_journal = $db->super_query("SELECT COUNT(*) as count FROM `f_journal` WHERE `id_user` = '$user[id]'");
            $f_journal = $f_journal['count'];
            $forum_themes = $db->super_query("SELECT COUNT(*) as count FROM `forum_themes` WHERE `id_user` = '$user[id]'");
            $my_themes = (isset($user)) ? $forum_themes['count'] : NULL;
        }

        $new_themes = $db->super_query("SELECT COUNT(*) as count FROM `forum_themes` WHERE `time` > '" . (time() - 60 * 60 * 24) . "'");
        $new_themes = $new_themes['count'];
        $reports = $db->super_query("SELECT COUNT(*) as count FROM forum_reports");
        $reports = $reports['count'];

        #Навигация
        echo "<div class='list-group-item-null list-group-item-grey'><small>";

        #Кнопка меню действий
        if (access('forum_for_create')) {
            echo "<span class='right'>";
            if (IS_WEB) {
                echo "<a data-toggle='modal' data-target='#forum_add' href='" . DIR_FORUM . "?create_forum'><span data-toggle='tooltip' data-placement='left' title='" . lang('Создать подфорум') . "'><i class='fa fa-plus fa-fw fa-lg'></i></span></a>";
            } else {
                echo "<a data-toggle='modal' data-target='#forum_add' href='" . DIR_FORUM . "?create_forum'><span title='" . lang('Создать подфорум') . "'><i class='fa fa-plus fa-fw'></i></span></a>";
            }
            echo "</span>";
        }
        echo "<a href='/' class='hint--right' data-hint='" . lang('На главную') . "'><i class='fa fa-home fa-lg'></i></a> <i class='fa fa-angle-right fa-fw'></i> ";
        echo "<a href='" . DIR_FORUM . "'>" . lang('Форум') . "</a>";
        echo "</small></div>";

        if (access('forum_for_create')) {
            #Всплывающее меню
            echo "<div class='modal fade' id='forum_add'>\n";
            echo "<div class='modal-dialog'>\n";
            echo "<div class='modal-content'>\n";

            echo "<div class='modal-header'>\n";
            echo "<button type='button' class='close' data-dismiss='modal' aria-label='Close'><span aria-hidden='true'>&times;</span><span class='sr-only'>Close</span></button>";
            echo "<h5 class='modal-title'>" . lang('Новый подфорум') . "</h5>";
            echo "</div>";

            $next_number = $db->super_query("SELECT MAX(`number`) as number FROM forum");
            $next_number = $next_number['number'] + 1;

            echo "<form class='list-group-item-null-mini' action='" . DIR_FORUM . "?create_forum' method='post'>";

            $doc->Input('name', 'Название подфорума');
            $doc->Textarea('description', 'Описание подфорума');
            $doc->Input('icon', 'Иконка', null, "folder");
            $doc->Input('number', 'Позиция', null, "$next_number", 'form-control', 'number');

            echo lang('Доступ') . ":<br />";
            echo "<label class='custom-control custom-radio'><input id='access0' name='access' type='radio' value='0' checked='checked' class='custom-control-input'><span class='custom-control-indicator'></span> <span class='custom-control-description'>" . lang('Все') . "</span></label><br />";
            echo "<label class='custom-control custom-radio'><input id='access1' name='access' type='radio' value='1' class='custom-control-input'><span class='custom-control-indicator'></span> <span class='custom-control-description'>" . lang('Только администраторы') . "</span></label><br />";
            echo "<label class='custom-control custom-radio'><input id='access2' name='access' type='radio' value='2' class='custom-control-input'><span class='custom-control-indicator'></span> <span class='custom-control-description'>" . lang('Администраторы + модераторы') . "</span></label>";

            echo "<div class='hr'></div>";

            $doc->Checkbox('output', 'Список разделов', 1);

            echo "<br />";

            $doc->Button('btn btn-primary btn-sm', 'create', null, 'Создать');

            echo "</form>";

            echo "</div>\n";
            echo "</div>\n";
            echo "</div>\n";
        }

        echo "<div class='list-group-item-null-mini'>";
        echo "<div class='btn-group btn-group-sm'>";
        $doc->a_l("" . DIR_FORUM . "new_themes.html", 'btn btn-secondary', 'file-text-o', "" . lang('Новые темы') . " <b>$new_themes</b>");
        $doc->a("" . DIR_FORUM . "search.html", 'btn btn-secondary', 'search', 'Поиск');
        if (access('forum_them_edit')) {
            $doc->a_l("" . DIR_FORUM . "reports.html", 'btn btn-secondary', 'flag', "" . lang('Жалобы') . " <b>$reports</b>");
        }
        echo "</div>";

        if (isset($user)) {
            echo "<br /><div class='btn-group btn-group-sm' style='margin-top: 2px;'>";
            $doc->a_l("" . DIR_FORUM . "my_themes.html", 'btn btn-secondary', 'file-text-o', "" . lang('Мои темы') . " <b>$my_themes</b>");
            $doc->a_l("" . DIR_FORUM . "journal.php", 'btn btn-secondary', 'bell', "" . lang('Уведомления') . " <b>$f_journal $new_journal</b>");
            echo "</div>";
        }

        echo "</div>";

        if ($k_post['count'] == 0) {
            $doc->NoResult();
        } else {
            $forums = $db->query('SELECT * FROM `forum` ORDER BY `number` ASC LIMIT ' . $start . ', ' . $set['p_str']);
            echo "<div class='list-group-item-null-mini'>\n";

            while ($forum = mysqli_fetch_object($forums)) {
                if ($forum->access == 0 || ($forum->access == 1 && $user['group_access'] > 7) || ($forum->access == 2 && $user['group_access'] > 2)) {
                    $q = $db->super_query("SELECT COUNT(*) as count FROM `forum_razdels` WHERE `id_forum` = '$forum->id'");
                    $count_razdels = $q['count'];
                    $q = $db->super_query("SELECT COUNT(*) as count FROM `forum_themes` WHERE `id_forum` = '$forum->id'");
                    $count_themes = $q['count'];

                    echo "<div class='card'>\n";
                    echo "<div class='card-header'>\n";
                    echo "<a href='" . DIR_FORUM . "$forum->id/'><i class='fa fa-$forum->icon fa-fw'></i> " . toOutput($forum->name, 1, 1, 0, 0, 0) . "</a> &nbsp; " . (access('forum_for_edit') ? "<a href='" . DIR_FORUM . "?edit_forum=$forum->id' class='tag tag-default hint--top' data-hint='" . lang('Редактировать') . "'><i class='fa fa-edit fa-fw'></i> " . lang('Ред') . "</a>" : null) . " <span class='tag tag-info right'>$count_razdels / $count_themes</span><br />";
                    echo "</div>\n";

                    #Выводим описание подфорума и разделы (если включены)
                    if ($forum->description != NULL && $forum->output == 0) {
                        echo "<div class='card-block'>\n";
                        echo "<small style='color: #9197a3;'>" . toOutput($forum->description, 1, 1, 0, 1, 1) . "</small>\n";
                        echo "</div>\n";
                    } elseif ($forum->output == 1 && $count_razdels > 0) {
                        echo "<div class='card-block'>\n";
                        $razdels = $db->query('SELECT `id`, `name`, `icon` FROM `forum_razdels` WHERE `id_forum` = ' . $forum->id);

                        while ($razdel = mysqli_fetch_object($razdels)) {
                            echo "<a class='grey' href='" . DIR_FORUM . "$forum->id/$razdel->id/'> <i class='fa fa-$razdel->icon fa-fw'></i> " . toOutput($razdel->name) . "</a><br />\n";
                        }
                        echo "</div>\n";
                    }

                    echo "</div>\n";
                }
            }
            echo "</div>\n";

            if ($k_page > 1) {
                str('?', $k_page, $page);
            }
        }

        break;
    case 'forum':
        require_once 'view/forum.php'; #Подфорум.
        break;
    case 'razdel':
        require_once 'view/razdel.php'; #Раздел.
        break;
    case 'theme':
        require_once 'view/theme.php'; #Тема.
        break;
    case 'who':
        require_once 'view/who.php'; #Кто в теме.
        break;
    case 'files':
        require_once 'view/files_theme.php'; #Файлы темы.
        break;
    case 'add_file':
        require_once 'action/add_file_post.php'; #Добавление файла.
        break;
    case 'reports':
        require_once 'view/reports.php'; #Жалобы на темы.
        break;
    case 'new_themes':
        require_once 'view/new_themes.php'; #Новые темы.
        break;
    case 'my_themes':
        require_once 'view/my_themes.php'; #Новые темы.
        break;
    case 'search':
        require_once 'view/search.php'; #Поиск по форуму.
        break;
}

require_once H . 'sys/inc/tfoot.php';