Вход Регистрация
Файл: 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'$idRND);
            }

            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'$idRND) . ']' $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'], 11$logSITE_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$msgSITE_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'$fidRND);
                    }
                    else 
$inSes->addMessage('Ошибка! Выбранного раздела не существует!');
                }
                else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');

                
gen_red('topic'$idRND);
            }
        }

        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'] == && 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_sooshow_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'$idRND) . '">' 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'] != && $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'$idRND) . '">Изменить</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'$idRND) . '">Изменить</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'$idRND));
    }
    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'$idRND) . '">Смайлы</a>  / ';
    echo 
'<a href="' gen_uri('tags'$idRND) . '">Теги</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>';

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