Вход Регистрация
Файл: 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 . '&amp;' . 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 . '&amp;' . 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'] . '&amp;' . 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 . '&amp;smiles=1&amp;num=' . $num) . '">Смайлы</a>] ');
               
$form->addCode('[<a href="' . gen_uri('reply', $id, 'pid=' . $pid . '&amp;code=1&amp;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 . '&amp;' . 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 . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND), 'post', ' name="form" id="form"');
               
$form->addCode(blink('*') . ' Сообщение: ');
               
$form->addCode('<small>[<a href="' . gen_uri('quote', $id, 'pid=' . $pid . '&amp;smiles=1') . '">Смайлы</a>] ');
               
$form->addCode('[<a href="' . gen_uri('quote', $id, 'pid=' . $pid . '&amp;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 . '&amp;' . 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'] . '&amp;' . 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 . '&amp;' . 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 . '&amp;' . 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 . '&amp;' . 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 . '&amp;page=' . $page . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND), 'post', ' name="form" id="post"');
                    
$form->addCode(blink('*') . ' Сообщение: ');
                    
$form->addCode('<small>[<a href="' . gen_uri('edit', $post['posts_topics_id'], 'pid=' . $pid . '&amp;page=' . $page . '&amp;smiles=1&amp;page=' . $page) . '">Смайлы</a>] ');
                    
$form->addCode('[<a href="' . gen_uri('edit', $post['posts_topics_id'], 'pid=' . $pid . '&amp;page=' . $page . '&amp;code=1&amp;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 . '&amp;' . 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'] . "]Перейти в тему &gt;&gt;[/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> &nbsp; ';
        echo 
' <a href="' . $id . '.rss.xml">' . icon('rss.png') . '</a>&nbsp;</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 . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . 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&amp;do=closed&amp;tid=' . $id . '&amp;rnd=' . $_SESSION['token']) . '">Закрыть</a> | ';
            }
            else {

                echo 
'<a href="' . gen_admin('?m=act_topic&amp;do=open&amp;tid=' . $id . '&amp;rnd=' . $_SESSION['token']) . '">Открыть</a> | ';
            }

            if (empty(
$topics['topics_locked'])) {

                echo 
'<a href="' . gen_admin('?m=act_topic&amp;do=locked&amp;tid=' . $id . '&amp;rnd=' . $_SESSION['token']) . '">Закрепить</a> | ';
            }
            else {

                echo 
'<a href="' . gen_admin('?m=act_topic&amp;do=unlocked&amp;tid=' . $id . '&amp;rnd=' . $_SESSION['token']) . '">Открепить</a> | ';
            }

            echo 
'<a href="' . gen_admin('?m=edit_topic&amp;tid=' . $id . '&amp;page=' . $page . '&amp;' . RND) . '">Изменить</a> | ';
            echo 
'<a href="' . gen_admin('?m=move_topic&amp;tid=' . $id . '&amp;' . RND) . '">Переместить</a> | ';
            echo 
'<a href="' . gen_admin('?m=forums&amp;fid=' . $topics['forums_id'] . '&amp;delt=' . $id . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND) . '" onclick="return confirm('Вы действительно хотите удалить данную тему?')">Удалить</a> | ';
            echo 
'<a href="' . gen_admin('?m=topic&amp;tid=' . $id . '&amp;page=' . $page . '&amp;' . 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 . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . 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'] . '&amp;num=' . $i . '&amp;page=' . $page . '&amp;' . RND) . '">Отв</a> | ';
                    echo 
'<a href="' . gen_uri('quote', $id, 'pid=' . $row['posts_id'] . '&amp;page=' . $page . '&amp;' . 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'] . '&amp;page=' . $page . '&amp;' . 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 . '&amp;' . 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 . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . 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();

?>
Онлайн: 1
Реклама