View file modules/forum/action/edit_razdel.php

File size: 9.56Kb
<?php

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

$razdel = mysql_fetch_object(mysql_query('SELECT * FROM `forum_razdels` WHERE `id` = ' . intval($_GET['razdel'])));

if (access('forum_razd_edit')) {
    if (isset($_POST['edit'])) {
        $name = mysql_real_escape_string(trim($_POST['name']));
        $description = mysql_real_escape_string(trim($_POST['description']));
        $number = intval($_POST['number']);
        $forum_id = intval($_POST['id_forum']);
        $type = (isset($_POST['type'])) ? 1 : 0;
        $output = (isset($_POST['output'])) ? 1 : 0;
        $icon = esc(stripcslashes(htmlspecialchars($_POST['icon'])));
        $isset_name = mysql_result(mysql_query('SELECT COUNT(*) FROM `forum_razdels` WHERE `name` = "' . $name . '" AND `id_forum` = ' . $forum->id . ' AND `id` != ' . $razdel->id), 0);
        $razdel_n = ($razdel->number != $number) ? mysql_fetch_object(mysql_query('SELECT `id`, `number` FROM `forum_razdels` WHERE `id_forum` = ' . $forum->id . ' AND `number` = ' . $number . ' AND `id` != ' . $razdel->id)) : NULL;

        if ($razdel_n) {
            mysql_query('UPDATE `forum_razdels` SET `number` = ' . $number . ' WHERE `id` = ' . $razdel->id);
            mysql_query('UPDATE `forum_razdels` SET `number` = ' . $razdel->number . ' WHERE `id` = ' . $razdel_n->id);
        }

        if (mb_strlen($name) < 3 || mb_strlen($name) > 40) {
            $_SESSION['err'] = lang('В поле Название раздела можно использовать от 3 до 40 символов');
        } elseif ($number < 0 || $number == NULL || $number == 0) {
            $_SESSION['err'] = lang('Введите уровень');
        } elseif (mb_strlen($description) > 100) {
            $_SESSION['err'] = lang('Слишком длинное описание раздела');
        } elseif ($isset_number > 0) {
            $_SESSION['err'] = lang('Данный уровень уже использует другой раздел');
        } else {
            if ($razdel->id_forum != $forum_id) {
                admin_log(lang('Форум'), lang('Разделы'), lang('Раздел') . ' "' . $razdel->name . '" ' . lang('перенесён из подфорума') . ' "' . $forum->name . '" в "' . $new_forum->name . '".');
            }

            if ($razdel->name != $name) {
                admin_log(lang('Форум'), lang('Разделы'), lang('Раздел') . ' "' . $razdel->name . '" ' . lang('переименован в') . ' "' . $name . '" ' . lang('в подфоруме') . ' "' . $forum->name . '".');
            } else {
                admin_log(lang('Форум'), lang('Разделы'), lang('Раздел') . ' "' . $razdel->name . '" ' . lang('был изменён') . '');
            }

            mysql_query("UPDATE forum_razdels SET id_forum = '$forum_id', name = '$name', description = '$description', number = '$number', icon = '$icon', type = '$type', output = '$output' WHERE id = '$razdel->id'");

            $_SESSION['message'] = lang('Изменения сохранены');

            header('Location: ' . DIR_FORUM . $forum_id . '/');
            exit;
        }
    } elseif (isset($_POST['delete'])) {
        #Навигация
        echo "<div class='list-group-item-null list-group-item-grey'><small>";
        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> <i class='fa fa-angle-right fa-fw'></i> ";
        echo "<a href='" . DIR_FORUM . "$forum->id/'>" . toOutput($forum->name, 1, 1, 0, 0, 0) . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
        echo "<a href='" . DIR_FORUM . "$forum->id/$razdel->id/'>" . toOutput($razdel->name, 1, 1, 0, 0, 0) . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
        echo lang('Удаление');
        echo "</small></div><br />";

        #Форма удаления раздела
        echo "<form action='" . DIR_FORUM . "$forum->id/$razdel->id/edit_razdel.html' method='post' class='list-group-item-null'>";
        echo lang('Вы уверены, что хотите удалить этот раздел со всем его содержимым') . "?<br />";

        $doc->Button('btn btn-success btn-sm', 'del', 'trash-o', 'Удалить');
        $doc->Button('btn btn-secondary btn-sm', 'cancel', null, 'Отменить');

        echo "</form>";

        require_once H . 'sys/inc/tfoot.php';
    } elseif (isset($_POST['del'])) {
        admin_log('Форум', 'Разделы', 'Раздел "' . $razdel->name . '" был удалён из подфорума "' . $forum->name . '".');

        $themes = mysql_query('SELECT `id` FROM `forum_themes` WHERE `id_razdel` = ' . $razdel->id);

        while ($theme = mysql_fetch_object($themes)) {
            $files = mysql_query('SELECT `name` FROM `forum_post_files` WHERE `id_theme` = ' . $theme->id);

            while ($file = mysql_fetch_object($files)) {
                unlink(DIR_FORUM_FILES . $file->name);
            }

            mysql_query('DELETE FROM `forum_post_rating` WHERE `id_theme` = ' . $theme->id);
            mysql_query('DELETE FROM `forum_posts` WHERE `id_theme` = ' . $theme->id);
            mysql_query('DELETE FROM `forum_post_files` WHERE `id_theme` = ' . $theme->id);
            mysql_query('DELETE FROM `forum_votes_var` WHERE `id_theme` = ' . $theme->id);

            $votes = mysql_query('SELECT `id` FROM `forum_votes` WHERE `id_theme` = ' . $theme->id);

            while ($vote = mysql_fetch_object($votes)) {
                mysql_query('DELETE FROM `forum_vote_voices` WHERE `id_vote` = ' . $vote->id);
            }

            mysql_query('DELETE FROM `forum_votes` WHERE `id_theme` = ' . $theme->id);
        }
        mysql_query('DELETE FROM `forum_themes` WHERE `id_razdel` = ' . $razdel->id);
        $n_razdels = mysql_query('SELECT `id`, `number` FROM `forum_razdels` WHERE `number` > ' . $razdel->number);
        while ($n_razdel = mysql_fetch_object($n_razdels)) {
            mysql_query('UPDATE `forum_razdels` SET `number` = ' . ($n_razdel->number - 1) . ' WHERE `id` = ' . $n_razdel->id);
        }
        mysql_query('DELETE FROM `forum_razdels` WHERE `id` = ' . $razdel->id);
        $_SESSION['message'] = lang('Раздел со всем его содержимым успешно удалён');
        header('Location: ' . DIR_FORUM . $forum->id . '/');
        exit;
    } elseif (isset($_POST['cancel'])) {
        header('Location: ' . DIR_FORUM . $forum->id . '/' . $razdel->id . '/edit_razdel.html');
        exit;
    }

    #Навигация
    echo "<div class='list-group-item-null list-group-item-grey'><small>";
    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> <i class='fa fa-angle-right fa-fw'></i> ";
    echo "<a href='" . DIR_FORUM . "$forum->id/'>" . toOutput($forum->name, 1, 1, 0, 0, 0) . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
    echo "<a href='" . DIR_FORUM . "$forum->id/$razdel->id/'>" . toOutput($razdel->name, 1, 1, 0, 0, 0) . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
    echo lang('Редактирование');
    echo "</small></div><br />";

    echo "<form action = '" . DIR_FORUM . "$forum->id/$razdel->id/edit_razdel.html' method='post' class='list-group-item-null'>";

    $doc->Input('name', 'Название подфорума', null, "$razdel->name");
    $doc->Textarea('description', 'Описание подфорума', null, "$razdel->description");
    $doc->Input('icon', 'Иконка', null, "$razdel->icon");

    echo lang('Подфорум') . ":<br />";
    echo "<select class='form-control' name='id_forum'>";

    $forums_s = mysql_query('SELECT `id`, `name` FROM `forum` ORDER BY `number` ASC');

    while ($forum_s = mysql_fetch_object($forums_s)) {
        if ($forum_s->access == 0 || ($forum_s->access == 1 && $user['group_access'] > 7) || ($forum_s->access == 2 && $user['group_access'] > 2)) {
            echo "<option value='$forum_s->id' " . (($forum_s->id == $razdel->id_forum) ? 'selected="selected"' : NULL) . ">$forum_s->name</option>";
        } else {
            continue;
        }
    }

    echo "</select>";

    $doc->Input('number', 'Позиция', null, "$razdel->number");

    echo lang('Могут создавать темы только') . ":<br />";
    $doc->Checkbox('type', 'Администраторы + модераторы', '1', "" . (($razdel->type == 1) ? 'checked="checked"' : NULL) . "");

    echo "<hr>";

    echo lang('Вывод раздела') . ":<br />";
    $doc->Checkbox('output', 'Отображать посл. 3 темы', '1', "" . (($razdel->output == 1) ? 'checked="checked"' : NULL) . "");

    echo "<hr>";

    $doc->Button('btn btn-success btn-sm', 'edit', 'save', 'Сохранить');

    if (access('forum_for_delete')) {
        $doc->Button('btn btn-danger btn-sm', 'delete', 'trash-o', 'Удалить');
    } else {
        $doc->Button('btn btn-secondary btn-sm', 'cancel', null, 'Отменить');
    }

    echo "</form>";

    require_once H . 'sys/inc/tfoot.php';
} else {
    header('Location: ' . DIR_FORUM . $forum->id . '/');
}
exit;