Файл: CMS/core/modules/forum_topic.php
Строк: 488
<?php
if (!defined('CMS')) { die('Access Denied!'); }
if (!empty($id) && !empty($mod) && $mod == 'topics') { // Переадресация на последнюю страницу
$count = (int) $db->selectCell("SELECT `topics_posts` FROM ?_forums_topics WHERE `topics_id` = ? LIMIT 1;", $id);
$onpage = !empty($config['post_num']) ? num($config['post_num']) : 10;
if (!empty($count)) {
$end = ceil( $count / $onpage );
if ($end < 1) $end = 1;
gen_red('topic', $id, 'page=' . $end . '&' . RND . '#down');
}
else {
$inSes->addMessage('Ошибка! Выбранная вами тема не существует, возможно она была удалена!');
gen_red('index', '', RND);
}
}
elseif (!empty($id) && !empty($mod) && $mod == 'viewpost') { // Переход к сообщению
$pid = !empty($_GET['pid']) ? (int) $_GET['pid'] : 0;
$count = (int) $db->selectCell("SELECT COUNT(*) FROM ?_forums_posts
WHERE `posts_id` <= ? AND `posts_topics_id` = ?
ORDER BY `posts_time` ASC LIMIT 1;",$pid, $id);
$onpage = !empty($config['post_num']) ? num($config['post_num']) : 10;
if (!empty($count)) {
$end = ceil( $count / $onpage );
if ($end < 1) $end = 1;
gen_red('topic', $id, 'page=' . $end . '&' . RND . '#' . $pid);
}
else {
$inSes->addMessage('Ошибка! Выбранная вами тема не существует, возможно она была удалена!');
gen_red('index', '', RND);
}
}
else if (!empty($id) && !empty($mod) && $mod == 'closed') { // Закрытие темы
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if ($is_logged) {
if ($uset['users_point'] >= $config['forum_edit_point']) {
$topics = $db->selectRow("SELECT * FROM ?_forums_topics WHERE `topics_id` = ? LIMIT 1;", $id);
if (!empty($topics)) {
if ($topics['topics_author'] == $log) {
if (empty($topics['topics_closed'])) {
$db->query("UPDATE ?_forums_topics SET `topics_closed` = ? WHERE `topics_id` = ?;", 1, $id);
$inSes->addMessage('Тема успешно закрыта!', 'ok');
}
else $inSes->addMessage('Ошибка! Данная тема уже закрыта!', 'valid');
}
else $inSes->addMessage('Ошибка! Вы не автор данной темы!');
}
else $inSes->addMessage('Ошибка! Выбранная вами тема не существует, возможно она была удалена!');
}
else $inSes->addMessage('Ошибка! У вас недостаточно актива для закрытия тем!');
}
else $inSes->addMessage('Ошибка авторизации. Неправильный логин или пароль!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
gen_red('topic', $id, 'page=' . $page . '&' . RND);
}
else if (!empty($id) && !empty($mod) && $mod == 'reply') { // Ответ на сообщение
$pid = !empty($_GET['pid']) ? num($_GET['pid']) : 0;
$num = !empty($_GET['num']) ? num($_GET['num']) : 0;
show_header('Ответ на сообщение');
if ($is_logged) {
$post = $db->selectRow("SELECT `p`.*, `t`.`topics_closed`
FROM ?_forums_posts `p` LEFT JOIN ?_forums_topics `t`
ON `p`.`posts_topics_id` = `t`.`topics_id`
WHERE `p`.`posts_id` = ? LIMIT 1;", $pid);
if (!empty($post)) {
if (empty($post['topics_closed'])) {
echo '<div class="b">' . icon('edit.png', 'icons');
echo '<b>' . users_anketa($post['posts_user']) . '</b> ';
echo user_title($post['posts_user']) . ' ' . user_online($post['posts_user']);
echo ' <small>(' . get_date($post['posts_time']) . ')</small><br />';
echo 'Сообщение: ' . nl2br(bb_code($post['posts_text'])) . '</div>';
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$form = new cmsForm(gen_uri('add', $post['posts_topics_id'], 'rnd=' . $_SESSION['token'] . '&' . RND), 'post', ' name="form" id="form"');
$_POST['text'] = !empty($_POST['text']) ? $_POST['text'] : $num . '. [b]' . nickname($post['posts_user']) . '[/b], ';
$form->addCode(blink('*') . ' Сообщение: ');
$form->addCode('<small>[<a href="' . gen_uri('reply', $id, 'pid=' . $pid . '&smiles=1&num=' . $num) . '">Смайлы</a>] ');
$form->addCode('[<a href="' . gen_uri('reply', $id, 'pid=' . $pid . '&code=1&num=' . $num) . '">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('', 'text', $_POST['text'], ' id="msg" style="width:98%;"');
echo $form->submit(array('Ответить','Отмена'), array('submit','cancel'));
unset($form);
}
else {
show_error('Данная тема закрыта для обсуждения!');
}
}
else {
show_error('Ошибка! Выбранное вами сообщение для ответа не существует!');
}
}
else {
show_login('Вы не авторизованы, чтобы отвечать на сообщения, необходимо');
}
echo '<div class="b">' . icon('return.png');
echo ' <a href="' . gen_uri('topic', $id, 'page=' . $page . '&' . RND) . '">Вернуться</a><br /></div>';
}
else if (!empty($id) && !empty($mod) && $mod == 'quote') { // Цитирование сообщения
$pid = !empty($_GET['pid']) ? intval($_GET['pid']) : 0;
show_header('Цитирование');
if ($is_logged) {
$post = $db->selectRow("SELECT `p`.*, `t`.`topics_closed`
FROM ?_forums_posts `p` LEFT JOIN ?_forums_topics `t`
ON `p`.`posts_topics_id` = `t`.`topics_id`
WHERE `p`.`posts_id` = ? LIMIT 1;", $pid);
if (!empty($post)) {
if (empty($post['topics_closed'])) {
$post['posts_text'] = nosmiles($post['posts_text']);
$post['posts_text'] = preg_replace('|[q](.*?)[/q](<br />)?|', '', $post['posts_text']);
$post['posts_text'] = str_replace('<br />', "rn", $post['posts_text']);
$_POST['text'] = !empty($_POST['text']) ? $_POST['text'] : '[q][b]' . nickname($post['posts_user']) . '[/b] (' . get_date($post['posts_time'], 'j F Y / H:i') . ')' . "rn" . $post['posts_text'] . '[/q]' . "rn";
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$form = new cmsForm(gen_uri('add', $post['posts_topics_id'], 'page=' . $page . '&rnd=' . $_SESSION['token'] . '&' . RND), 'post', ' name="form" id="form"');
$form->addCode(blink('*') . ' Сообщение: ');
$form->addCode('<small>[<a href="' . gen_uri('quote', $id, 'pid=' . $pid . '&smiles=1') . '">Смайлы</a>] ');
$form->addCode('[<a href="' . gen_uri('quote', $id, 'pid=' . $pid . '&code=1') . '">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('', 'text', $_POST['text'], ' id="msg" style="width:98%;"');
echo $form->submit(array('Цитировать','Отмена'), array('submit','cancel'));
unset($form);
}
else {
show_error('Данная тема закрыта для обсуждения!');
}
}
else {
show_error('Ошибка! Выбранное вами сообщение для цитирования не существует!');
}
}
else {
show_login('Вы не авторизованы, чтобы цитировать сообщения, необходимо');
}
echo '<div class="b">' . icon('return.png');
echo ' <a href="' . gen_uri('topic', $id, 'page=' . $page . '&' . RND) . '">Вернуться</a><br /></div>';
}
else if (!empty($id) && !empty($mod) && $mod == 'edittopic') { // Изменение темы
if ($is_logged) {
if ($uset['users_point'] >= $config['forum_edit_point']) {
$topics = $db->selectRow("SELECT * FROM ?_forums_topics WHERE `topics_id` = ? LIMIT 1;", $id);
if (!empty($topics)) {
if ($topics['topics_author'] == $log) {
if (empty($topics['topics_closed'])) {
if (!empty($_POST['cancel'])) {
gen_red('topic', $id, RND);
}
if (!empty($_POST['submit'])) {
$title = !empty($_POST['title']) ? check($_POST['title']) : '';
$text = !empty($_POST['text']) ? check($_POST['text']) : '';
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$minposts = $db->selectCell("SELECT MIN(`posts_id`) FROM ?_forums_posts WHERE `posts_topics_id` = ?;", $id);
if (!empty($minposts)) {
if (cms_strlen($title) >= 3 && cms_strlen($title) <= 100) {
if (cms_strlen($text) >= 5 && cms_strlen($text) <= $config['forum_max_text']) {
$text = antimat($text);
$text = smiles($text);
$db->query("UPDATE ?_forums_topics SET `topics_title` = ? WHERE topics_id = ?;", $title, $id);
$db->query("UPDATE ?_forums_posts SET `posts_user` = ?, `posts_text` = ?, `posts_ip` = ?, `posts_brow` = ?, `posts_edit` = ?, `posts_edit_time` = ? WHERE `posts_id` = ?", $log, $text, $ip, $brow, $log, SITE_TIME, $minposts);
$inSes->addMessage('Тема успешно изменена!', 'ok');
}
else $inSes->addMessage('Ошибка! Слишком длинное или короткое сообщение!');
}
else $inSes->addMessage('Ошибка! Слишком длинный или короткий заголовок темы!');
}
else $inSes->addMessage('Ошибка! Первого сообщения в теме не существует!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
gen_red('topic', $id, RND);
}
show_header('Изменение темы');
$post = $db->selectRow("SELECT * FROM ?_forums_posts WHERE `posts_topics_id` = ? ORDER BY posts_id ASC LIMIT 1;", $id);
if (!empty($post)) {
$post['posts_text'] = nosmiles($post['posts_text']);
$post['posts_text'] = str_replace(array('<br>','<br/>','<br />'), "n", $post['posts_text']);
echo '<div class="b">' . icon('edit.png', 'icons');
echo '<b>' . nickname($post['posts_user']) . '</b> <small>(' . get_date($post['posts_time']) . ')</small><br /></div>';
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$form = new cmsForm(gen_uri('edittopic', $id, 'rnd=' . $_SESSION['token'] . '&' . RND), 'post', ' name="form" id="form"');
$form->addText('Заголовок:', 'title', $topics['topics_title'], ' maxlength="50"');
$form->addCode(blink('*') . ' Сообщение: ');
$form->addCode('<small>[<a href="' . gen_uri('edittopic', $id, 'smiles=1') . '">Смайлы</a>] ');
$form->addCode('[<a href="' . gen_uri('edittopic', $id, 'code=1') . '">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('', 'text', $post['posts_text'], ' id="msg" style="width:98%;"');
echo $form->submit(array('Редактировать','Отмена'), array('submit','cancel'));
unset($form);
}
else {
show_error('Ошибка! Первого сообщения в теме не существует!');
echo '<div class="b">' . icon('return.png');
echo '<a href="' . gen_uri('topic', $id, RND) . '">Вернуться</a><br /></div>';
}
}
else {
$inSes->addMessage('Ошибка! Изменение невозможно, данная тема закрыта!');
gen_red('topic', $id, RND);
}
}
else {
$inSes->addMessage('Ошибка! Изменение невозможно, вы не автор данной темы!');
gen_red('topic', $id, RND);
}
}
else {
$inSes->addMessage('Ошибка! Выбранная вами тема не существует, возможно она была удалена!');
gen_red('index', '', RND);
}
}
else {
$inSes->addMessage('Ошибка! У вас недостаточно актива для изменения темы!');
gen_red('index', '', RND);
}
}
else {
show_header('Изменение темы');
show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
echo '<div class="b">' . icon('return.png') . ' <a href="' . gen_uri('topic', $id, RND) . '">Вернуться</a><br /></div>';
}
}
else if (!empty($id) && !empty($mod) && $mod == 'del') { // Удаление сообщений
$del = !empty($_POST['del']) ? intar($_POST['del']) : 0;
if ($is_logged) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if ($del > 0) {
$topics = $db->selectRow("SELECT * FROM ?_forums_topics WHERE `topics_id` = ? LIMIT 1;", $id);
$minposts = $db->selectCell("SELECT MIN(`posts_id`) FROM ?_forums_posts WHERE `posts_topics_id` = ?;", $id);
if (!empty($topics['topics_mod']) || is_admin(array(101))) {
$topics_mod = explode(',', $topics['topics_mod']);
if (in_array($log, $topics_mod) || is_admin(array(101))) {
if (!in_array($minposts, $del)) {
$del = is_array($del) ? $del : array($del);
$del = implode(',', $del);
$delposts = $db->query("DELETE FROM ?_forums_posts WHERE `posts_id` IN(" . $del . ") AND `posts_topics_id` = ?", $id);
$db->query("UPDATE ?_forums_topics SET `topics_posts` = (`topics_posts` - ?) WHERE `topics_id` = ?", $delposts, $id);
$db->query("UPDATE ?_forums SET `forums_posts` = (`forums_posts` - ?) WHERE `forums_id` = ?", $delposts, $topics['topics_forums_id']);
$inSes->addMessage('Выбранные сообщения успешно удалены!', 'ok');
}
else $inSes->addMessage('Ошибка! Первое сообщение в теме удалять запрещено!');
}
else $inSes->addMessage('Ошибка! Удалять сообщения могут только кураторы темы!');
}
else $inSes->addMessage('Ошибка! В данной теме отсутствуют кураторы!');
}
else $inSes->addMessage('Ошибка! Отстутствуют выбранные сообщения для удаления!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
else $inSes->addMessage('Ошибка авторизации. Неправильный логин или пароль!');
gen_red('topic', $id, 'page=' . $page . '&' . RND);
}
else if (!empty($id) && !empty($mod) && $mod == 'edit') {
$pid = !empty($_GET['pid']) ? num($_GET['pid']) : 0;
if ($is_logged) {
$post = $db->selectRow("SELECT * FROM ?_forums_posts WHERE `posts_id` = ? LIMIT 1;", $pid);
if (!empty($post)) {
if ($post['posts_user'] == $log || is_admin()) {
if (!empty($_POST['cancel'])) {
gen_red('topic', $id, 'page=' . $page . '&' . RND);
}
if (!empty($_POST['submit'])) {
$text = !empty($_POST['text']) ? check($_POST['text']) : '';
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (cms_strlen($text) >= 5 && cms_strlen($text) <= $config['forum_max_text'] || $is_admin) {
if ($post['posts_time'] + 600 > SITE_TIME || $is_admin) {
$text = antimat($text);
$text = smiles($text);
if (is_admin(array(101))) {
$db->query("UPDATE ?_forums_posts SET `posts_text` = ? WHERE `posts_id` = ?", $text, $pid);
}
else {
$db->query("UPDATE ?_forums_posts SET `posts_text` = ?, `posts_edit` = ?, `posts_edit_time` = ?
WHERE `posts_id` = ?", $text, $log, SITE_TIME, $pid);
}
$inSes->addMessage('Сообщение успешно отредактировано!', 'ok');
gen_red('topic', $id, 'page=' . $page . '&' . RND);
}
else $inSes->addMessage('Ошибка! Редактирование невозможно, прошло более 10 минут!!');
}
else $inSes->addMessage('Ошибка! Слишком длинное или короткое сообщение!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
show_header('Редактирование сообщения');
if ($post['posts_time'] + 600 > SITE_TIME || $is_admin) {
$post['posts_text'] = nosmiles($post['posts_text']);
$post['posts_text'] = str_replace('<br />', "n", $post['posts_text']);
$_POST['text'] = !empty($_POST['text']) ? (string) $_POST['text'] : $post['posts_text'];
echo '<div class="b">' . icon('edit.png', 'icons');
echo '<b>' . users_anketa($post['posts_user']) . '</b> <small>(' . get_date($post['posts_time']) . ')</small><br /></div>';
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$form = new cmsForm(gen_uri('edit', $post['posts_topics_id'], 'pid=' . $pid . '&page=' . $page . '&rnd=' . $_SESSION['token'] . '&' . RND), 'post', ' name="form" id="post"');
$form->addCode(blink('*') . ' Сообщение: ');
$form->addCode('<small>[<a href="' . gen_uri('edit', $post['posts_topics_id'], 'pid=' . $pid . '&page=' . $page . '&smiles=1&page=' . $page) . '">Смайлы</a>] ');
$form->addCode('[<a href="' . gen_uri('edit', $post['posts_topics_id'], 'pid=' . $pid . '&page=' . $page . '&code=1&page=' . $page) . '">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#post" onclick="document.post.msg.rows += 5;">+</a>] [<a href="#post" onclick="document.post.msg.rows -= 5;">-</a>]');
$form->addTextarea('', 'text', $_POST['text'], ' id="msg" style="width:98%;"');
echo $form->submit(array('Редактировать','Отмена'), array('submit','cancel'));
unset($form);
}
else {
show_error('Ошибка! Редактирование невозможно, прошло более 10 минут!!');
echo '<div class="b">' . icon('return.png');
echo ' <a href="' . gen_uri('topic', $id, 'page=' . $page . '&' . RND) . '">Вернуться</a><br /></div>';
}
}
else {
$inSes->addMessage('Ошибка! Сообщение удалено или вы не автор этого сообщения!');
gen_red('index', '', RND);
}
}
else {
$inSes->addMessage('Ошибка! Сообщение удалено или вы не автор этого сообщения!');
gen_red('index', '', RND);
}
}
else {
$inSes->addMessage('Ошибка! Вы не авторизованы!');
gen_red('index', '', RND);
}
}
else if (!empty($id) && !empty($mod) && $mod == 'add') { // Добавление сообщения
$msg = !empty($_POST['text']) ? check($_POST['text']) : '';
if ($is_logged) {
if (!empty($_POST['cancel'])) {
gen_red('topic', $id, 'page=' . $page . '&' . RND);
}
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (cms_strlen($msg) >= 5 && cms_strlen($msg) <= $config['forum_max_text'] || is_admin()) {
$topics = $db->selectRow("SELECT `t`.*, `f`.`forums_parent`
FROM ?_forums_topics `t`
LEFT JOIN ?_forums `f`
ON `t`.`topics_forums_id` = `f`.`forums_id`
WHERE `t`.`topics_id` = ? LIMIT 1;", $id);
if (!empty($topics)) {
if (empty($topics['topics_closed'])) {
if (is_quarantine($log)) {
if (is_flood($log) || is_admin()) {
$msg = antimat($msg);
$msg = smiles($msg);
$post = $db->selectRow("SELECT * FROM ?_forums_posts WHERE `posts_topics_id` = ? ORDER BY `posts_id` DESC LIMIT 1;", $id);
if ($msg != $post['posts_text']) {
if ($log == $post['posts_user'] && $post['posts_time'] + 600 > SITE_TIME && (cms_strlen($msg) + cms_strlen($post['posts_text']) <= $config['forum_max_text'])) {
$newpost = $post['posts_text'] . "nn[i][small]Добавлено через " . maketime(SITE_TIME - $post['posts_time']) . " сек.[/small][/i]n" . $msg;
$db->query("UPDATE ?_forums_posts SET `posts_text` = ? WHERE `posts_id` = ? LIMIT 1;", $newpost, $post['posts_id']);
}
else { // Новое
set_lider_forum($log);
$db->query("UPDATE ?_users SET `users_allforum` = (`users_allforum` + 1), `users_point` = (`users_point` + ?), `users_money` = (`users_money` + ?) WHERE `users_login` = ? LIMIT 1;", $config['forum_add_score'], $config['forum_add_money'], $log);
$db->query("INSERT INTO ?_forums_posts (`posts_topics_id`, `posts_forums_id`, `posts_user`, `posts_text`, `posts_time`, `posts_ip`, `posts_brow`) VALUES (?, ?, ?, ?, ?, ?, ?);", $id, $topics['topics_forums_id'], $log, $msg, SITE_TIME, $ip, $brow);
$db->query("UPDATE ?_forums_topics SET `topics_posts` = (`topics_posts` + 1), `topics_last_user` = ?, `topics_last_time` = ? WHERE `topics_id` = ?", $log, SITE_TIME, $id);
$db->query("UPDATE ?_forums SET `forums_posts` = (`forums_posts` + 1), `forums_last_id` = ?, `forums_last_themes` = ?, `forums_last_user` = ?, `forums_last_time` = ? WHERE `forums_id` = ?;", $id, $topics['topics_title'], $log, SITE_TIME, $topics['topics_forums_id']);
// Обновление родительского форума
if ($topics['forums_parent'] > 0) {
$db->query("UPDATE ?_forums SET `forums_last_id` = ?, `forums_last_themes` = ?, `forums_last_user` = ?, `forums_last_time` = ? WHERE `forums_id` = ?;", $id, $topics['topics_title'], $log, SITE_TIME, $topics['forums_parent']);
}
if (!empty($topics['topics_track'])) {
$sex = ($uset['users_gender'] == 1) ? ' добавил' : ' добавила';
$text = 'В вашей теме [b]' . $topics['topics_title'] . '[/b], ';
$text .= $log . $sex . " новое сообщение: n" . $msg;
$text .= "[forum=" . $topics['topics_id'] . "]Перейти в тему >>[/forum]";
$db->query("INSERT INTO ?_users_lenta SET `lenta_subscriber` = ?, `lenta_publisher` = ?, `lenta_time` = ?, `lenta_message` = ?", $topics['topics_author'], $log, SITE_TIME, $text);
}
}
$inSes->addMessage('Сообщение успешно добавлено!', 'ok');
gen_red('topics', $id, RND);
}
else $inSes->addMessage('Ошибка! Ваше сообщение повторяет предыдущий пост!');
}
else $inSes->addMessage('Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' секунд!');
}
else $inSes->addMessage('Карантин! Вы не можете писать в течении ' . round($config['karantin'] / 3600) . ' часов!');
}
else $inSes->addMessage('Ошибка! Запрещено писать в закрытую тему!');
}
else $inSes->addMessage('Ошибка! Выбранная вами тема не существует, возможно она была удалена!');
}
else $inSes->addMessage('Ошибка! Слишком длинное или короткое сообщение!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
else $inSes->addMessage('Ошибка авторизации. Неправильный логин или пароль!');
gen_red('topic', $id, RND);
}
else {
$parse = parse_url($_SERVER['REQUEST_URI']);
$topics = array();
$topics = $db->selectRow("SELECT `t`.*, `f`.`forums_id`, `f`.`forums_title`, `f`.`forums_parent`,
(SELECT COUNT(1) FROM ?_users_bookmarks WHERE `book_path` = ?) AS `bookmarks`
FROM ?_forums_topics `t`
LEFT JOIN ?_forums `f`
ON `t`.`topics_forums_id` = `f`.`forums_id`
WHERE `t`.`topics_id` = ? LIMIT 1;", $parse['path'], $id);
if (!empty($topics)) {
if (!empty($topics['topics_admins']) && $topics['topics_admins'] == 1) {
if (!is_admin()) {
$inSes->addMessage('Данная тема только для модеров сайта!');
gen_red('index', '', RND);
}
}
else if (!empty($topics['topics_admins']) && $topics['topics_admins'] == 2) {
if (!is_admin(array(101,102))) {
$inSes->addMessage('Данная тема только для администрации сайта!');
gen_red('index', '', RND);
}
}
show_header($topics['topics_title']);
echo '<div class="b"><a href="#down">' . icon('down.png') . '</a> ';
echo '<a href="' . gen_uri('index', '', RND) . '">Форум</a> | ';
if (!empty($topics['forums_parent'])) {
$forums = $db->selectRow("SELECT `forums_id`, `forums_title` FROM ?_forums WHERE `forums_id` = ? LIMIT 1;", $topics['forums_parent']);
echo '<a href="' . gen_uri('forums', $forums['forums_id'], RND) . '">' . $forums['forums_title'] . '</a> | ';
}
echo '<a href="' . gen_uri('forum', $topics['forums_id'], RND) . '">' . $topics['forums_title'] . '</a> | ';
echo '<b>' . $topics['topics_title'] . '</b>';
echo '<div class="imgrss">';
echo '<a href="' . gen_uri('print', $id, RND) . '">' . icon('printer.png') . '</a> ';
echo ' <a href="' . $id . '.rss.xml">' . icon('rss.png') . '</a> </div>';
echo '</div>';
if ($topics['topics_author'] == $log && $topics['topics_closed'] != 1 && $uset['users_point'] >= $config['forum_edit_point'] && !$is_admin) {
echo '<div class="b">' . icon('folder.png', 'icons') . '<b>' . $topics['topics_title'] . '</b>' ;
echo ' (<a href="' . gen_uri('closed', $id, 'page=' . $page . '&rnd=' . $_SESSION['token'] . '&' . RND) . '">Закрыть</a> | ';
echo ' <a href="' . gen_uri('edittopic', $id, RND) . '">Изменить</a>)</div>';
}
if (!empty($topics['topics_mod'])) {
$topics_mod = explode(',', $topics['topics_mod']);
$kur = array();
foreach($topics_mod as $mkey => $mval) {
$kur[] = users_anketa($mval);
}
echo '<div class="b">Кураторы темы: ' . implode(', ', $kur) . '...</div>';
$moder = (in_array($log, $topics_mod)) ? 1 : 0;
}
else $moder = 0;
if ($is_admin) {
echo '<div class="b">';
if (empty($topics['topics_closed'])) {
echo ' - <a href="' . gen_admin('?m=act_topic&do=closed&tid=' . $id . '&rnd=' . $_SESSION['token']) . '">Закрыть</a> | ';
}
else {
echo '<a href="' . gen_admin('?m=act_topic&do=open&tid=' . $id . '&rnd=' . $_SESSION['token']) . '">Открыть</a> | ';
}
if (empty($topics['topics_locked'])) {
echo '<a href="' . gen_admin('?m=act_topic&do=locked&tid=' . $id . '&rnd=' . $_SESSION['token']) . '">Закрепить</a> | ';
}
else {
echo '<a href="' . gen_admin('?m=act_topic&do=unlocked&tid=' . $id . '&rnd=' . $_SESSION['token']) . '">Открепить</a> | ';
}
echo '<a href="' . gen_admin('?m=edit_topic&tid=' . $id . '&page=' . $page . '&' . RND) . '">Изменить</a> | ';
echo '<a href="' . gen_admin('?m=move_topic&tid=' . $id . '&' . RND) . '">Переместить</a> | ';
echo '<a href="' . gen_admin('?m=forums&fid=' . $topics['forums_id'] . '&delt=' . $id . '&rnd=' . $_SESSION['token'] . '&' . RND) . '" onclick="return confirm('Вы действительно хотите удалить данную тему?')">Удалить</a> | ';
echo '<a href="' . gen_admin('?m=topic&tid=' . $id . '&page=' . $page . '&' . RND) . '">Управление</a><br />';
$moder = 1;
echo '</div>';
}
$onpage = !empty($config['post_num']) ? num($config['post_num']) : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$rows = $db->selectPage( $total, "SELECT `p`.*, `v`.`visit_nowtime`, `u`.`users_gender`
FROM ?_forums_posts `p`
LEFT JOIN ?_users_visit `v`
ON `p`.`posts_user` = `v`.`visit_user`
LEFT JOIN ?_users `u`
ON `p`.`posts_user` = `u`.`users_login`
WHERE `p`.`posts_topics_id` = ?
ORDER BY `p`.`posts_time` ASC
LIMIT ?d, ?d", $id, $from, $onpage );
if ( !empty($rows) && $total > 0 ) {
if ($moder == 1) {
echo '<form action="' . gen_uri('del', $id, 'page=' . $page . '&rnd=' . $_SESSION['token'] . '&' . RND) . '" method="post" name="posts">';
}
$i = 0;
foreach( $rows as $row ) {
++$i;
echo '<div class="b" id="post-' . $row['posts_id'] . '">';
if (!empty($log) && $log != $row['posts_user']) {
echo '<div class="right">';
echo '<a href="' . gen_uri('reply', $id, 'pid=' . $row['posts_id'] . '&num=' . $i . '&page=' . $page . '&' . RND) . '">Отв</a> | ';
echo '<a href="' . gen_uri('quote', $id, 'pid=' . $row['posts_id'] . '&page=' . $page . '&' . RND) . '">Цит</a></div>';
}
if ($log == $row['posts_user'] && $row['posts_time'] + 600 > SITE_TIME || $is_admin) {
echo '<div class="right">';
echo '<a href="' . gen_uri('edit', $id, 'pid=' . $row['posts_id'] . '&page=' . $page . '&' . RND) . '">Редактировать</a>';
echo '</div>';
}
if ($moder == 1) {
echo '<div class="img"><input type="checkbox" name="del[]" value="' . $row['posts_id'] . '" /></div>';
}
echo '<div class="img">' . user_avatars($row['posts_user']) . '</div>';
$num = ($from + $i);
echo $num . '. <b>' . users_anketa($row['posts_user']) . '</b> <small>(' . get_date($row['posts_time']) . ')</small><br />';
echo user_title($row['posts_user']) . ' ' . user_online($row['posts_user']) . '<br />';
if (!empty($row['posts_file'])) {
if (is_admin()) {
echo nl2br(bb_code($row['posts_text'] . '[hide]Прикрепленный файл:[url=' . $config['site_url'] . '/forum/files/' . $row['posts_file'] . '][blue]' . $row['posts_file'] . '[/blue][/url] ' . formatsize($row['posts_photos_max_weight']) . ' [url=' . $config['site_url'] . '/forum/' . gen_uri('del_file', $row['posts_id'], 'page=' . $page . '&' . RND) . '][red]Удалить[/red][/url][/hide]')) . '<br />';
}
else {
echo nl2br(bb_code($row['posts_text'] . '[hide]Прикрепленный файл:[url=' . $config['site_url'] . '/forum/files/' . $row['posts_file'] . '][blue]' . $row['posts_file'] . '[/blue][/url] ' . formatsize($row['posts_photos_max_weight']) . '[/hide]')) . '<br />';
}
}
else {
echo nl2br(bb_code($row['posts_text'])) . '<br />';
}
if (!empty($row['posts_edit'])) {
echo icon('exclamation_small.gif', 'icons');
echo ' <small>Отредактировано: ' . nickname($row['posts_edit']) . ' (' . get_date($row['posts_edit_time']) . ')</small><br />';
}
if (!empty($config['anonymity'])) {
echo '<span class="data">(' . $row['posts_brow'] . ', ' . $row['posts_ip'] . ')</span>';
}
echo '</div>';
}
if ($moder == 1) {
echo '<div class="b">';
echo '<input type="checkbox" name="master_box" title="Отметить всё" onclick="javascript:ckeck_uncheck_all()">';
echo '<input type="submit" class="btns" value="Удалить выбранное" /></form><br /></div>';
echo <<<JSCRIPT
<script language='JavaScript' type="text/javascript">
<!--
function ckeck_uncheck_all() {
var frm = document.posts;
if(frm.master_box.checked == true){ frm.master_box.checked = false; }
else{ frm.master_box.checked = true; }
for (var i=0;i<frm.elements.length;i++) {
var elmnt = frm.elements[i];
if (elmnt.type=='checkbox') {
if(frm.master_box.checked == true){ elmnt.checked=false; }
else{ elmnt.checked=true; }
}
}
}
-->
</script>
JSCRIPT;
}
echo show_pages(gen_uri('topic', $id, RND));
}
else {
show_error('Сообщений еще нет, будь первым!');
}
if ($is_logged) {
if ($topics['topics_closed'] == 0) {
$form = new cmsForm(gen_uri('add', $id, 'page=' . $page . '&rnd=' . $_SESSION['token'] . '&' . RND), 'post');
$form->addTextarea('Сообщение:', 'text', '', ' id="msg"');
echo $form->submit('Написать');
unset($form);
}
else {
show_error('Данная тема закрыта для обсуждения!');
}
}
else {
show_login('Вы не авторизованы, чтобы добавить сообщение, необходимо');
}
}
else {
show_header('Форум ' . $config['title']);
show_error('Ошибка! Данной темы не существует!');
}
echo show_bookmarks($topics['topics_title'], '', $topics['bookmarks']);
echo '<div class="b"><a href="#up">' . icon('up.png') . '</a> ';
echo '<a href="' . gen_uri('smiles', $id, RND) . '">Смайлы</a> / ';
echo '<a href="' . gen_uri('tags', $id, RND) . '">Теги</a> / ';
echo '<a href="' . gen_uri('rules', '', RND) . '">Правила</a> | ';
echo '<a href="' . gen_uri('top', '', RND) . '">Топ тем</a> | ';
echo '<a href="' . gen_uri('search', '', RND) . '">Поиск</a><br /></div>';
}
echo '<div class="b">' . icon('return.png');
echo ' <a href="' . gen_uri('index', '', RND) . '">К форумам</a><br /></div>';
show_footer();
?>