<?php
/* SocCMS
* Дата последнего редактирования 22.10.2016
* Модифицировал densnet
* Автор yadalay
*/
$forum = mysqli_fetch_object($db->query('SELECT * FROM `forum` WHERE `id` = ' . intval($_GET['edit_forum'])));
if (access('forum_for_edit')) {
if (isset($_POST['edit'])) {
$name = $db->safesql(trim($_POST['name']));
$description = $db->safesql(trim($_POST['description']));
$number = intval($_POST['number']);
$access = intval($_POST['access']);
$output = (isset($_POST['output'])) ? 1 : 0;
$icon = esc(stripcslashes(htmlspecialchars($_POST['icon'])));
$isset_name = $db->super_query("SELECT COUNT(*) as count FROM forum WHERE `name` = '$name' AND id != '$forum->id'");
$forum_n = ($forum->number != $number) ? mysqli_fetch_object($db->query('SELECT `id`, `number` FROM `forum` WHERE `number` = ' . $number . ' AND `id` != ' . $forum->id)) : NULL;
if ($forum_n) {
$db->query('UPDATE `forum` SET `number` = ' . $number . ' WHERE `id` = ' . $forum->id);
$db->query('UPDATE `forum` SET `number` = ' . $forum->number . ' WHERE `id` = ' . $forum_n->id);
}
if (preg_match("/[^(\w)|(\x7F-\xFF)|(\s)|(\.\-)]/", $_POST['name'], $m)) {
$_SESSION['err'] = lang('В поле Название подфорума присутствуют запрещенные') . " <span style='font-weight: bold; color: red;'>$m[0]</span> " . lang('символы');
} else
if (mb_strlen($name) < $set['forum_name_min'] || mb_strlen($name) > $set['forum_name_max']) {
$_SESSION['err'] = lang('В поле Название подфорума можно использовать от') . " $set[forum_name_min] " . lang('до') . " $set[forum_name_max] " . lang('символов');
} elseif ($isset_name['count'] != 0) {
$_SESSION['err'] = lang('Подфорум с таким названием существует');
} elseif ($number < 0 || $number == NULL || $number == 0) {
$_SESSION['err'] = lang('Введите уровень');
} elseif (mb_strlen($description) > $set['forum_opis_max']) {
$_SESSION['err'] = lang('Слишком длинное описание подфорума');
} elseif ($isset_number != 0) {
$_SESSION['err'] = lang('Данный уровень уже использует другой подфорум');
} else {
if ($forum->name != $name) {
admin_log('Форум', 'Подфорумы', "Подфорум $forum->name переименован в $name");
} else {
admin_log('Форум', 'Подфорумы', "Подфорум $forum->name был изменён");
}
$db->query("UPDATE forum SET name = '$name', description = '$description', number = '$number', access = '$access', icon = '$icon', output = '$output' WHERE id = '$forum->id'");
$_SESSION['message'] = lang('Изменения сохранены');
header('Location: ' . DIR_FORUM);
exit;
}
} elseif (isset($_POST['delete']) && access('forum_for_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) . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
echo lang('Удаление');
echo "</small></div>";
#Форма удаления подфорума
echo "<form action='" . DIR_FORUM . "?edit_forum=$forum->id' method='post' class='list-group-item-null-mini'>";
echo "<div class='card'>\n";
echo "<div class='card-header'>" . lang('Удаление') . " " . toOutput($forum->name) . "</div>\n";
echo "<div class='card-block'>\n";
echo "<p class='card-text'>" . lang('Вы уверены, что хотите удалить этот подфорум со всем его содержимым') . "?</p>";
$doc->Button('btn btn-success btn-sm', 'del', 'trash-o', 'Удалить');
$doc->Button('btn btn-secondary btn-sm', 'cancel', null, 'Отменить');
echo "</div>";
echo "</div>";
echo "</form>";
require_once H . 'sys/inc/tfoot.php';
} elseif (isset($_POST['del']) && access('forum_for_delete')) {
#Удаляем подфорум
admin_log('Форум', 'Подфорумы', "Подфорум $forum->name был удалён");
$themes = $db->query('SELECT `id` FROM `forum_themes` WHERE `id_forum` = ' . $forum->id);
while ($theme = mysqli_fetch_object($themes)) {
$files = $db->query('SELECT `name` FROM `forum_post_files` WHERE `id_theme` = ' . $theme->id);
#Удаляем файлы
while ($file = mysqli_fetch_object($files)) {
unlink(DIR_FORUM_FILES . $file->name);
}
$db->query('DELETE FROM `forum_post_rating` WHERE `id_theme` = ' . $theme->id);
$db->query('DELETE FROM `forum_posts` WHERE `id_theme` = ' . $theme->id);
$db->query('DELETE FROM `forum_post_files` WHERE `id_theme` = ' . $theme->id);
$db->query('DELETE FROM `forum_votes_var` WHERE `id_theme` = ' . $theme->id);
#Удаляем опросы, если были
$votes = $db->query('SELECT `id` FROM `forum_votes` WHERE `id_theme` = ' . $theme->id);
while ($vote = mysqli_fetch_object($votes)) {
$db->query('DELETE FROM `forum_vote_voices` WHERE `id_vote` = ' . $vote->id);
}
$db->query('DELETE FROM `forum_votes` WHERE `id_theme` = ' . $theme->id);
}
$db->query('DELETE FROM `forum_themes` WHERE `id_forum` = ' . $forum->id);
$db->query('DELETE FROM `forum_razdels` WHERE `id_forum` = ' . $forum->id);
$n_forums = $db->query('SELECT `id`, `number` FROM `forum` WHERE `number` > ' . $forum->number);
while ($n_forum = mysqli_fetch_object($n_forums)) {
$db->query('UPDATE `forum` SET `number` = ' . ($n_forum->number - 1) . ' WHERE `id` = ' . $n_forum->id);
}
$db->query('DELETE FROM `forum` WHERE `id` = ' . $forum->id);
$_SESSION['message'] = lang('Подфорум успешно удалён');
header('Location: ' . DIR_FORUM);
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) . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
echo lang('Редактирование');
echo "</small></div>";
#Форма редактирования подфорума
echo "<form action='" . DIR_FORUM . "?edit_forum=$forum->id' method='post' class='list-group-item-null-mini'>";
$doc->Input('name', 'Название подфорума', null, "$forum->name", 'form-control', 'text', 'required');
$doc->Textarea('description', 'Описание подфорума', null, "$forum->description");
$doc->Input('icon', 'Иконка', null, "$forum->icon");
$doc->Input('number', 'Позиция', null, "$forum->number", 'form-control', 'number');
echo lang('Доступ') . ":<br />";
echo "<label class='custom-control custom-radio'><input id='access0' name='access' type='radio' value='0' " . (($forum->access == 0) ? " checked='checked'" : NULL) . " 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' " . (($forum->access == 1) ? " checked='checked'" : NULL) . " 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' " . (($forum->access == 2) ? " checked='checked'" : NULL) . " 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, "" . (($forum->output == 1) ? 'checked="checked"' : NULL) . "");
echo "<br />";
$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->a("" . DIR_FORUM . "", 'btn btn-secondary btn-sm', null, 'Отменить');
}
echo "</form>";
require_once H . 'sys/inc/tfoot.php';
} elseif (!access('forum_for_edit') || !$forum) {
header('Location: ' . DIR_FORUM);
}
exit;