Файл: CMS/comm/comm_forum.php
Строк: 157
<?php
if (!defined('CMS')) { die('Access Denied!'); }
$data = '';
$data = $db->selectRow("SELECT ?_comm_comm.*, ?_comm_category.*
FROM ?_comm_comm LEFT JOIN ?_comm_category
ON ?_comm_comm.`comm_cats_id` = ?_comm_category.`cats_id`
WHERE `comm_url` = ? LIMIT 1;", $soo);
if (empty($data) || !is_array($data)) {
$inSes->addMessage('Ошибка! Сообщество не найдено или ссылка неверна!');
gen_red('index', '', RND);
}
if (empty($data['comm_forum'])) {
$inSes->addMessage('Ошибка! Форум не найден или ссылка неверна!');
gen_red('index', '', RND);
}
$users = array();
$arr_admins = @explode(',', $data['comm_admins']);
if ($is_logged) {
$users = $db->selectRow("SELECT * FROM ?_comm_users WHERE `cu_comm` = ? AND `cu_user` = ? LIMIT 1;", $data['comm_id'], $log);
if ($data['comm_user'] == $log) {
$is_admin_soo = true;
if (!empty($_POST['add_cat'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$name = !empty($_POST['name']) ? check($_POST['name']) : '';
$about = !empty($_POST['about']) ? check($_POST['about']) : '';
if (cms_strlen($name) >= 3 && cms_strlen($name) <= 100) {
$maxorder = (int) $db->selectCell("SELECT IFNULL(MAX(`forums_order`),0)+1
FROM ?_comm_forums WHERE `forums_comm` = ?;", $data['comm_id']);
$last_id = (int) $db->query("INSERT INTO ?_comm_forums SET `forums_comm` = ?, `forums_order` = ?, `forums_name` = ?, `forums_about` = ?", $data['comm_id'], $maxorder, $name, $about);
if ($last_id > 0) $inSes->addMessage('Новый раздел успешно добавлен!', 'ok');
else $inSes->addMessage('Ошибка! Не удалось создать новый раздел!');
gen_red('forum', '', RND);
}
else $inSes->addMessage('Ошибка! Слишком длинное или короткое название раздела!');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
if (!empty($_POST['edit_cat'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$cat = !empty($_POST['cat']) ? num($_POST['cat']) : 0;
$name = !empty($_POST['name']) ? check($_POST['name']) : '';
$about = !empty($_POST['about']) ? check($_POST['about']) : '';
$is_cat = (int) $db->selectCell("SELECT `forums_id` FROM ?_comm_forums
WHERE `forums_id` = ? AND `forums_comm` = ? LIMIT 1", $cat, $data['comm_id']);
if ($is_cat > 0) {
$db->query("UPDATE ?_comm_forums SET `forums_name` = ?, `forums_about` = ?
WHERE `forums_id` = ? AND `forums_comm` = ?", $name, $about, $cat, $data['comm_id']);
$inSes->addMessage('Категория успешно изменена!', 'ok');
gen_red('forum', '', RND);
}
else $inSes->addMessage('Ошибка! Категория не найдена или у Вас нет прав для её именения!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
if (!empty($_GET['del_cat'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$is_cat = (int) $db->selectCell("SELECT `forums_id` FROM ?_comm_forums
WHERE `forums_id` = ? AND `forums_comm` = ? LIMIT 1", num($_GET['del_cat']), $data['comm_id']);
if ($is_cat > 0) {
$db->query("DELETE FROM ?_comm_posts
WHERE `posts_forums_id` = ? AND `posts_comm` = ? LIMIT 1", $is_cat, $data['comm_id']);
$db->query("DELETE FROM ?_comm_topics
WHERE `topics_forums_id` = ? AND `topics_comm` = ? LIMIT 1", $is_cat, $data['comm_id']);
$db->query("DELETE FROM ?_comm_forums
WHERE `forums_id` = ? AND `forums_comm` = ? LIMIT 1", $is_cat, $data['comm_id']);
$db->query("OPTIMIZE TABLE ?_comm_forums, ?_comm_topics, ?_comm_posts;");
$inSes->addMessage('Раздел успешно удален!', 'ok');
gen_red('forum', '', RND);
}
else $inSes->addMessage('Ошибка! Категория не найдена или у Вас нет прав для её удаления!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
}
if (in_array($log, $arr_admins) && $users['cu_admin'] == 1) {
$is_moder_soo = true;
}
}
if ($data['comm_status'] == 1 && empty($users)) {
$inSes->addMessage('Форум только для участников сообщества!');
gen_red('index', '', RND);
}
if (!empty($id)) {
$forums = $db->selectRow("SELECT * FROM ?_comm_forums
WHERE `forums_id` = ? AND `forums_comm` = ? LIMIT 1;", $id, $data['comm_id']);
if (!empty($forums)) {
show_header('Форум - ' . $forums['forums_name']);
echo '<div class="b"><a href="#down">' . icon('down.png') . '</a> ';
echo '<a href="' . gen_uri('forum', '', RND) . '">Форум</a> | ';
echo '<a href="' . gen_uri($mod, $id, 'page=' . $page . '&rand=' . mt_rand(1000, 9999)) . '">Обновить</a> | ';
echo '<a href="' . gen_uri('add_themes', $id, RND) . '">Создать тему</a>';
echo '<br /></div>';
$onpage = !empty($config['themes_num']) ? num($config['themes_num']) : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$rows = $db->selectPage($total, "SELECT * FROM ?_comm_topics
WHERE `topics_forums_id` = ? AND `topics_comm` = ?
ORDER BY `topics_locked` DESC, `topics_last_time` DESC
LIMIT ?d, ?d", $id, $data['comm_id'], $from, $onpage);
if (!empty($rows) && $total > 0) {
foreach($rows as $row) {
if ($row['topics_locked'] == 1) {
$icon = 'sticky-notes-pin.png';
}
else if ($row['topics_closed'] == 1) {
$icon = 'lock.png';
}
else $icon = 'post_new.png';
echo '<div class="b">' . icon($icon, 'icons');
echo '<a href="' . gen_uri('topic', $row['topics_id'], RND) . '"><b>' . $row['topics_title'] . '</b></a> ';
echo '(' . $row['topics_posts'] . ')<br />';
echo 'Страницы: ' . forum_navigation('topic', $row['topics_id'], $config['post_num'], $row['topics_posts']);
echo 'Сообщение: ' . nickname($row['topics_last_user']) . ' (' . get_date($row['topics_last_time']) . ')</div>';
}
echo show_pages(gen_uri('forum', $id, RND));
echo '<div class="b"><a href="#up">' . icon('up.png') . '</a> ';
echo '<a href="' . gen_uri('add_themes', $id, RND) . '">Создать тему</a> | ';
echo '<a href="' . gen_uri('top', '', RND) . '">Топ тем</a> | ';
echo '<a href="' . gen_uri('search', '', RND) . '">Поиск</a><br /></div>';
}
else {
show_error('Тем еще нет, будь первым!');
}
}
else {
show_error('Ошибка! Данного раздела не существует!');
}
}
else {
show_header('Форум - ' . $data['comm_name']);
echo '<div class="b"><a href="#down">' . icon('down.png') . '</a> ';
echo 'Новые: <a title="Новые темы" href="' . gen_uri('new_themes', '', RND) . '">темы</a>, ';
echo '<a title="Новые сообщения" href="' . gen_uri('new_posts', '', RND) . '">сообщения</a></div>';
$rows = $db->select("SELECT * FROM ?_comm_forums WHERE `forums_comm` = ? LIMIT 0, 25", $data['comm_id']);
if (!empty($rows) && count($rows) > 0) {
foreach($rows as $row) {
echo '<div class="b">';
if ($is_admin_soo) {
echo '<div class="right">';
echo ' [<a href="' . gen_uri('forum', '', 'edit_cat=' . $row['forums_id'] . '#edit') . '">Ред.</a> | ';
echo '[<a href="' . gen_uri('forum', '', 'del_cat=' . $row['forums_id'] . '&rnd=' . $_SESSION['token']) . '">Уд.</a>]</div>';
}
echo icon('folder.png');
echo '<a href="' . gen_uri('forum', $row['forums_id'], RND) . '">' . $row['forums_name'] . '</a> ';
echo '(' . $row['forums_topics'] . '/' . $row['forums_posts'] . ')<br />';
if (!empty($row['forums_about'])) echo bb_code($row['forums_about']);
echo '</div>';
}
}
else {
show_error('Разделы форума еще не созданы!');
}
if ($is_admin_soo) {
if (!empty($_GET['edit_cat'])) {
$cat = $db->selectRow("SELECT * FROM ?_comm_forums
WHERE `forums_id` = ? AND `forums_comm` = ? LIMIT 1", num($_GET['edit_cat']), $data['comm_id']);
if (!empty($cat)) {
$form = new cmsForm(gen_uri('forum', $id, 'rnd=' . $_SESSION['token']), 'post', ' id="edit"');
$form->addText('Название:', 'name', $cat['forums_name']);
$form->addTextarea('Описание (max 250):', 'about', $cat['forums_about']);
$form->addHidden('cat', $cat['forums_id']);
echo $form->Submit(array('Изменить','Отмена'), array('edit_cat','cancel'));
unset($form);
}
else show_error('Ошибка! Раздел не найден!');
}
else if (!empty($_GET['add_cat'])) {
$form = new cmsForm(gen_uri('forum', '', 'rnd=' . $_SESSION['token']), 'post', ' id="add"');
$form->addText('Название:', 'name', request('name'));
$form->addTextarea('Описание (max 250):', 'about', request('about'));
echo $form->Submit(array('Создать','Отмена'), array('add_cat','cancel'));
unset($form);
}
else {
echo '<div class="b">' . icon('add.png');
echo '<a href="' . gen_uri('forum', '', 'add_cat=1&' . RND . '#add') . '">Создать раздел</a> | ';
echo '<a href="' . gen_uri('add_themes', '', RND) . '">Создать тему</a><br /></div>';
}
}
else {
echo '<div class="b">' . icon('add.png');
echo '<a href="' . gen_uri('add_themes', '', RND) . '">Создать тему</a><br /></div>';
}
echo '<div class="b"><a href="#up">' . icon('up.png') . '</a> ';
echo '<a href="../' . gen_uri('index', '', RND) . '">Сообщества</a> | ';
echo '<a href="../' . gen_uri('cats', $data['cats_id'], RND) . '">' . $data['cats_name'] . '</a> | ';
echo '<a href="' . gen_uri('index', '', RND) . '">' . $data['comm_name'] . '</a></div>';
}
?>