Вход Регистрация
Файл: CMS/comm/comm_topic.php
Строк: 209
<?php

if (!defined('CMS')) { die('Access Denied!'); }

$data = array();
$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);
}

$arr_admins = @explode(',', $data['comm_admins']);

$parse  = parse_url($_SERVER['REQUEST_URI']);
$topics = array();
$topics = $db->selectRow("SELECT `t`.*, `f`.`forums_id`, `f`.`forums_name`,
                         (SELECT COUNT(1) FROM ?_users_bookmarks WHERE `book_path` = ?) AS `bookmarks`
                          FROM ?_comm_topics `t`
                          LEFT JOIN ?_comm_forums `f`
                          ON `t`.`topics_forums_id` = `f`.`forums_id`
                          WHERE `t`.`topics_id` = ? AND `topics_comm` = ? LIMIT 1;"
, $parse['path'], $id, $data['comm_id']);

if (!empty(
$topics)) {

    
$users = array();

    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;
            
$is_moder_soo = true;

            if (!empty(
$_GET['do'])) {

              if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                switch (
$_GET['do']):
                case 
'closed':
                    
$db->query("UPDATE ?_comm_topics SET `topics_closed` = 1 WHERE `topics_id` = ? AND `topics_comm` = ?;", $id, $data['comm_id']);
                    
$inSes->addMessage('Тема успешно закрыта!', 'ok');
                break;
                case 
'open':
                    
$db->query("UPDATE ?_comm_topics SET `topics_closed` = 0 WHERE `topics_id` = ? AND `topics_comm` = ?;", $id, $data['comm_id']);
                    
$inSes->addMessage('Тема успешно открыта!', 'ok');
                break;
                case 
'locked':
                    
$db->query("UPDATE ?_comm_topics SET `topics_locked` = 1 WHERE `topics_id` = ? AND `topics_comm` = ?;", $id, $data['comm_id']);
                    
$inSes->addMessage('Тема успешно закреплена!', 'ok');
                break;
                case 
'unlocked':
                    
$db->query("UPDATE ?_comm_topics SET `topics_locked` = 0 WHERE `topics_id` = ? AND `topics_comm` = ?;", $id, $data['comm_id']);
                    
$inSes->addMessage('Тема успешно откреплена!', 'ok');
                break;
                default:
                    
$inSes->addMessage('Ошибка! Не выбрано действие для темы!');
                endswitch;
              }
              else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');

              
gen_red('topic', $id, RND);
            }

            if (!empty(
$_POST['move'])) {

                
$fid = !empty($_POST['fid']) ? num($_POST['fid']) : 0;

                if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                    
$forums = $db->selectRow("SELECT * FROM ?_comm_forums WHERE `forums_id` = ? AND `forums_comm` = ? LIMIT 1;", $fid, $data['comm_id']);

                    if (!empty(
$forums)) {

                        if (
strpos($topics['topics_title'], 'Перемещено') == false) $title = $topics['topics_title'] . ' (Перемещено)';
                        else 
$title = $topics['topics_title'];

                        
$msg  = 'Тема была перемещена в раздел ';
                        
$msg .= '[url=' . gen_comm($data['comm_url'], 'topic', $id, RND) . ']' . $forums['forums_name'] . '[/url].';

                        
$lastid = $db->query("INSERT INTO ?_comm_topics (`topics_comm`, `topics_forums_id`, `topics_title`, `topics_author`, `topics_closed`, `topics_posts`, `topics_last_user`, `topics_last_time`) VALUES (?, ?, ?, ?, ?, ?, ?, ?);", $data['comm_id'], $topics['topics_forums_id'], $title, $topics['topics_author'], 1, 1, $log, SITE_TIME);

                        
$db->query("INSERT INTO ?_comm_posts (`posts_comm`, `posts_topics_id`, `posts_forums_id`, `posts_user`, `posts_text`, `posts_time`, `posts_ip`, `posts_brow`) VALUES (?, ?, ?, ?, ?, ?, ?, ?);", $data['comm_id'], $lastid, $topics['topics_forums_id'], $log, $msg, SITE_TIME, $ip, $brow);

                        
// Обновление номера раздела
                        
$db->query("UPDATE ?_comm_topics SET `topics_forums_id` = ?
                                    WHERE `topics_id` = ? AND `topics_comm` = ?;"
, $fid, $id, $data['comm_id']);
                        
$db->query("UPDATE ?_comm_posts SET `posts_forums_id` = ?
                                    WHERE `posts_topics_id` = ? AND `posts_comm` = ?;"
, $fid, $id, $data['comm_id']);

                        
// Обновление счетчиков
                        
$db->query("UPDATE ?_comm_forums SET `forums_topics` = (`forums_topics` + 1), `forums_posts` = (`forums_posts` + ?)
                                    WHERE `forums_id` = ? AND `forums_comm` = ?"
, $topics['topics_posts'], $fid, $data['comm_id']);

                        
$db->query("UPDATE ?_comm_forums SET `forums_posts` = `forums_posts` + 1 - ?
                                    WHERE `forums_id` = ? AND `forums_comm` = ?"
, $topics['topics_posts'], $topics['topics_forums_id'], $data['comm_id']);

                        
$oldlast = $db->selectRow("SELECT * FROM ?_comm_topics
                                                   WHERE `topics_forums_id` = ? AND `topics_comm` = ?
                                                   ORDER BY `topics_last_time` DESC LIMIT 1;"
, $topics['topics_forums_id'], $data['comm_id']);

                        
$newlast = $db->selectRow("SELECT * FROM ?_comm_topics
                                                   WHERE `topics_forums_id` = ? AND `topics_comm` = ?
                                                   ORDER BY `topics_last_time` DESC LIMIT 1;"
, $fid, $data['comm_id']);

                        
$db->query("UPDATE ?_comm_forums SET `forums_last_id` = ?, `forums_last_themes` = ?, `forums_last_user` = ?, `forums_last_time` = ? WHERE `forums_id` = ? AND `forums_comm` = ?", $oldlast['topics_id'], $oldlast['topics_title'], $oldlast['topics_last_user'], $oldlast['topics_last_time'], $oldlast['topics_forums_id'], $data['comm_id']);

                        
$db->query("UPDATE ?_comm_forums SET `forums_last_id` = ?, `forums_last_themes` = ?, `forums_last_user` = ?, `forums_last_time` = ? WHERE `forums_id` = ? AND `forums_comm` = ?", $newlast['topics_id'], $newlast['topics_title'], $newlast['topics_last_user'], $newlast['topics_last_time'], $newlast['topics_forums_id'], $data['comm_id']);

                        
$inSes->addMessage('Тема успешно перемещена!', 'ok');

                        
gen_red('forum', $fid, RND);
                    }
                    else 
$inSes->addMessage('Ошибка! Выбранного раздела не существует!');
                }
                else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');

                
gen_red('topic', $id, RND);
            }
        }

        if (
in_array($log, $arr_admins) && $users['cu_admin'] == 1) {

            
$is_moder_soo = true;
        }

        if (
$is_moder_soo) { // Удаление сообщений

            
if (!empty($_POST['del'])) {

                
$del = intar($_POST['del']);

                if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                    if (!empty(
$del)) {

                        
$minposts = $db->selectCell("SELECT MIN(`posts_id`) FROM ?_comm_posts
                                                     WHERE `posts_topics_id` = ? AND `posts_comm` = ?;"
, $id, $data['comm_id']);

                        
$del = is_array($del) ? $del : array($del);

                        if (!
in_array($minposts, $del)) {

                            
$del = implode(',', $del);

                            
$delposts = $db->query("DELETE FROM ?_comm_posts WHERE `posts_id` IN(" . $del . ")
                                                    AND `posts_topics_id` = ? AND `posts_comm` = ?"
, $id, $data['comm_id']);

                            
$db->query("UPDATE ?_comm_topics SET `topics_posts` = (`topics_posts` - ?)
                                        WHERE `topics_id` = ? AND `topics_comm` = ?"
, $delposts, $id, $data['comm_id']);

                            
$db->query("UPDATE ?_comm_forums SET `forums_posts` = (`forums_posts` - ?)
                                        WHERE `forums_id` = ? AND `forums_comm` = ?"
, $delposts, $topics['topics_forums_id'], $data['comm_id']);

                            
$inSes->addMessage('Выбранные сообщения успешно удалены!', 'ok');
                        }
                        else 
$inSes->addMessage('Ошибка! Первое сообщение в теме удалять запрещено!');
                    }
                    else 
$inSes->addMessage('Ошибка! Отстутствуют выбранные сообщения для удаления!');
                }
                else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');

                
gen_red('topic', $id, 'page=' . $page . '&amp;' . RND);
            }
        }
    }

    if (
$data['comm_status'] == 1 && empty($users)) {

        
$inSes->addMessage('Форум только для участников сообщества!');
        
gen_red('index', '', RND);
    }

    if (!empty(
$_GET['closed'])) { // Закрытие темы юзером

        
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

            if (
$is_logged) {

                if (
$uset['users_point'] >= $config['forum_edit_point']) {

                    if (
$topics['topics_author'] == $log) {

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

                            
$db->query("UPDATE ?_comm_topics SET `topics_closed` = ?
                                        WHERE `topics_id` = ? AND `topics_comm` = ?;"
, 1, $id, $data['comm_id']);

                            
$inSes->addMessage('Тема успешно закрыта!', 'ok');
                        }
                        else 
$inSes->addMessage('Ошибка! Данная тема уже закрыта!', 'valid');
                    }
                    else 
$inSes->addMessage('Ошибка! Вы не автор данной темы!');
                }
                else 
$inSes->addMessage('Ошибка! У вас недостаточно актива для закрытия тем!');
            }
            else 
$inSes->addMessage('Ошибка! Вы не автозизованы!');
        }
        else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');

        
gen_red('topic', $id, 'page=' . $page . '&' . RND);
    }

    
show_header($topics['topics_title']);

    if (!empty(
$topics['topics_password']) && !$is_moder_soo) show_auth_form($topics['topics_id'],$topics['topics_password']);

    echo 
'<div class="b"><a href="#down">' . icon('down.png') . '</a> ';

    echo 
'<a href="' . gen_uri('forum', '', RND) . '">Форум</a> | ';

    echo 
'<a href="' . gen_uri('forum', $topics['forums_id'], RND) . '">' . $topics['forums_name'] . '</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="' . gen_uri('rss', $id) . '">' . 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_soo) {

        echo 
'<div class="b">' . icon('folder.png') . '<b>' . $topics['topics_title'] . '</b>' ;
        echo 
' (<a href="' . gen_uri('topic', $id, 'closed=1&amp;page=' . $page . '&amp;rnd=' . $_SESSION['token']) . '">Закрыть</a> | ';
        echo 
' <a href="' . gen_uri('edittopic', $id, RND) . '">Изменить</a>)</div>';
    }

    if (
$is_admin_soo) {

        echo 
'<div class="b">' . icon('mail.png');

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

            echo 
'<a href="' . gen_uri('topic', $id, 'do=closed&amp;rnd=' . $_SESSION['token']) . '">Закрыть</a> | ';
        }
        else {
            echo 
'<a href="' . gen_uri('topic', $id, 'do=open&amp;rnd=' . $_SESSION['token']) . '">Открыть</a> | ';
        }

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

            echo 
'<a href="' . gen_uri('topic', $id, 'do=locked&amp;rnd=' . $_SESSION['token']) . '">Закрепить</a> | ';
        }
        else {
            echo 
'<a href="' . gen_uri('topic', $id, 'do=unlocked&amp;rnd=' . $_SESSION['token']) . '">Открепить</a> | ';
        }

        echo 
'<a href="' . gen_uri('edit_topic', $id, RND) . '">Изменить</a> | ';
        echo 
'<a href="' . gen_uri('topic', $id, 'move=1&amp;' . RND . '#move') . '">Переместить</a> | ';
        echo 
'<a href="' . gen_uri('del_topic', $id, 'del=' . $id . '&amp;rnd=' . $_SESSION['token']) . '" onclick="return confirm('Вы действительно хотите удалить данную тему?')">Удалить</a><br />';
        echo 
'</div>';

        if (!empty(
$_GET['move'])) {

            
$cats = $db->select("SELECT * FROM ?_comm_forums WHERE `forums_comm` = ? ORDER BY `forums_order` ASC;", $data['comm_id']);

            
$forums = array();

            if (!empty(
$cats) && count($cats) > 0) {

                foreach(
$cats as $cat) {

                    
$forums[$cat['forums_id']] = $cat['forums_name'];
                }
                if (!empty(
$forums[$topics['forums_id']])) unset($forums[$topics['forums_id']]);
                
$form = new cmsForm(gen_uri('topic', $id, 'rnd=' . $_SESSION['token']), 'post', ' id="move"');
                
$form->addSelect('Выберите раздел для перемещения:', 'fid', $topics['forums_id'], $forums);
                echo 
$form->Submit(array('Переместить','Отмена'), array('move','cancel'));
                unset(
$form);
            }
            else 
show_error('Разделы для перемещения не найдены!');
        }
    }

    
$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 ?_comm_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` = ? AND `posts_comm` = ?
                                      ORDER BY `p`.`posts_time` ASC
                                      LIMIT ?d, ?d"
, $id, $data['comm_id'], $from, $onpage );

    if (!empty(
$rows) && $total > 0) {

        if (
$is_moder_soo == 1) {

            echo 
'<form action="' . gen_uri('topic', $id, 'rnd=' . $_SESSION['token']) . '" method="post" name="posts">';
        }

        
$i = $from + 1;
        foreach( 
$rows as $row ) {

            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_moder_soo) {

                echo 
'<div class="right">';
                echo 
'<a href="' . gen_uri('edit_posts', $row['posts_id'], 'page=' . $page . '&amp;' . RND) . '">Редактировать</a>';
                echo 
'</div>';
            }

            if (
$is_moder_soo == 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>';

            echo 
$i . '. <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 />';
            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>';
            
$i++;
        }

        if (
$is_moder_soo == 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_posts', $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('Вы не авторизованы, чтобы добавить сообщение, необходимо');
    }

    echo 
show_bookmarks($topics['topics_title'], '', $topics['bookmarks']);

}
else {

    
show_header('Форум - ' . $data['comm_name']);
    
show_error('Ошибка! Данной темы не существует!');
}

    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('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> | ';
    echo 
' <a href="' . gen_uri('forum', '', RND) . '">К форумам</a><br /></div>';

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