Вход Регистрация
Файл: modules/forum/post.php
Строк: 274
<?php

define
('SHCMS_ENGINE',true);
include_once(
'../../engine/system/core.php');

switch(
$act):
    default:
    
//Обработка полученного $_GET и фильтруем ее    
    
$id filter_input(INPUT_GET,'id',FILTER_SANITIZE_NUMBER_INT);
    
//Проверка на нумерование    
    
$id intval($id);
    
    
//Если произойдет неправильные действия то exit
    
if (!isset($id) || !is_numeric($id)) {
        
header('Location: index.php');
        exit;
    }
    
//Выводим заголовок темы из базы
    
$posts $db->get_array($db->query('SELECT * FROM `forum_topics` WHERE `id` = '.$id.''));
    
//Название страницы
    
$templates->template(''.$posts['name'].' - '.Lang::__('Форум'));

    
//Отключения форума
    
$off_forum $db->get_array($db->query("SELECT * FROM `off_modules`"));
        
//Если включена отключение форума то выйдет эта ошибка
    
if($off_forum['off_forum'] == 1) {
        echo 
engine::error(Lang::__('Форум приостановлен с ').date::make_date($off_forum['time_forum']),$off_forum['text_forum']); //Ошибка об отключении и дополнительный текст
        
echo engine::home(array('Назад','/index.php'));     
        exit;
    }
        
    
//Обновляем счетчик просмотров    
    
$db->query"UPDATE `forum_topics` SET `views` = '".($posts['views']+1)."' WHERE `id` = '".$id."'" );
    
//Обработка кнопки
    
$submit filter_input(INPUT_POST'submit');
        
//Если пользователь авторизован
        
if($id_user == true) {
            
//Если нажата кнопка
            
if(isset($submit)) {
            
//Обрабатывает описание
                
$text filter_input(INPUT_POST,'text',FILTER_SANITIZE_STRING);
                
//Обработка checkbox 0/1
                
$pfile filter_input(INPUT_POST,'file',FILTER_SANITIZE_NUMBER_INT);
            
$file_post intval$pfile);
                
                    
//Если текст пуст то получаем ошибку
                
if(engine::trim($text) == false) {
                    echo 
engine::error(Lang::__('Введите текст сообщения'));
                }else {
                        
//Отключаем эту переменную временно
                    
$update false;
            
//Вытаскиваем те посты которые находится в теме $posts[id]
                
$query $db->query('SELECT * FROM `forum_post` WHERE `id_top` = '.$posts['id'].' ORDER BY `id` DESC LIMIT 1');
                    
                        
//Проверям если ли посты в теме
                        
if($db->num_rows($query)) {
                
//Через $user_post вытакиваем данные
                    
$user_post $db->get_array($query);
                            
                            
//Смотрим кто написал последний пост и время публикования
                            
if($user_post['id_user'] == $id_user && $user_post['time'] > time 7200) {
                                
//Выключаем переменную для обновления поста последнего пользователя
                        
$update false;
                                
//даем простую переменную $id_post
                        
$id_post $user_post['id'];
                    }        
                }    
                        
            
//Проверяем если $update есть какая нибудь данная она ее выполняет
            
if($update == true) {    
                
//Это функция обновляет последний пост пользователя и добавляет еще текст туда
                
$text $user_post['text'] . "nn[small]".Lang::__('Пост обновлен:')." ".date::make_date($posts['last_time'] + time).":[/small]n".$text;
                
//Идет обновление поста ...
                
$db->query("UPDATE `forum_post` SET `text` = '".$db->safesql($text)."' WHERE `id_top` = '".intval($posts['id'])."' AND `id_user` = '".$id_user."' ORDER BY `id` DESC LIMIT 1");
            }else {
                
//Иначе добавляем в новый столбик новые данные
                
$db->query("INSERT INTO `forum_post` (`id_cat`,`id_sec`,`id_top`,`id_user`,`text`,`time`) VALUES ('".intval($posts['id_cat'])."','".intval($posts['id_sec'])."',".intval($posts['id']).",'".intval($id_user)."','".$db->safesql($text)."','".time()."')");
                
$id_post $db->insert_id();
            }
                        
                
//Обновляем время добавления последнего поста
            
$db->query('UPDATE `forum_topics` SET `last_time` = '.time().' WHERE `id` = '.$posts['id'].'');
            
//Даем пользователю балл за пост
                        
$db->query("UPDATE `users` SET `points` = '".($users['points']+1)."' WHERE `id` = '".intval($id_user)."'"); // Начисление баллов
            
                        //Если получена данные о добавление файлов то переадресуем
                        
if($file_post == 1) {
                
header('Location: post_file.php?id='.$id);
            }else {
                             
//Автоматическое переадресация на тему
                
header('Location: post.php?id='.$id.'');
            }
                            
//Переадресация на пред. старницу
                
echo engine::home(array('Назад','post.php?id='.$id.''));
                exit;
            }
        }    
        }
        
    
//Ник добавленного
    
$nick_author $user->users($posts['id_user'],array('nick'),false);
    
//Если пользователь авторизован
    
if(isset($id_user)) {
    
//Мне нравится
    
$like $db->get_array($db->query("SELECT * FROM `like` WHERE `id_user` = '".$id_user."' AND `id_list` = '".$id."'"));
    
//Выводим счетчик мне нравится
           
$row2 $db->get_array($db->query("SELECT COUNT(*) FROM `like` WHERE `id_list` = '".$id."'"));
        
    
//Если вы хотите удалить тему из закладок
    
if($like['id_list'] == $id) {
        
$viewlike '<img src="/engine/template/icons/delete.png">&nbsp;<a href="post.php?id='.$id.'&do=likeexit"><b>'.Lang::__('Мне не нравится').'</b></a>';
        
$viewlike .= '&nbsp;&nbsp;<img title="'.Lang::__('Тема понравилась').'&nbsp;'.$row2[0].'"  src="/engine/template/icons/icon_users.png">&nbsp;<span style="font-size:11px;color: #5c5c5c;">'.$row2[0].'</span>';
    }else {
        
//Если вы хотите добавить тему мне нравится
        
$viewlike .= '<img src="/engine/template/icons/fave_on_alt.png">&nbsp;<a href="post.php?id='.$id.'&do=like"><b>'.Lang::__('Мне нравится').'</b></a>';
        
$viewlike .= '&nbsp;&nbsp;<img title="'.Lang::__('Тема понравилась').'&nbsp;'.$row2[0].'" src="/engine/template/icons/icon_users.png">&nbsp;<span style="font-size:11px;color: #5c5c5c;">'.$row2[0].'</span>';
    }
    }    
        
//Выводим необходимые данные о теме
        
echo '<div class="titleBox">';
        
//Название темы
        
echo '<span style="font-size:15px;color: #323232;">'.engine::ucfirst($posts['name']).'</span>';
        
//Кнопки Мне нравится  / Мне не нравится
        
echo '<div class="time">'.$viewlike.'</div><br/>';
        
//Автор темы
        
echo '<span style="font-size:10px;">Автор:&nbsp;';
        echo 
'<a href="/modules/profile.php?id='.$posts['id_user'].'">'.$nick_author.'</a>';
        
//Дата создания темы
        
echo '&nbsp;,&nbsp;'.date::make_date($posts['time']).'</span></div>';
        
        
//Если  пользователь является автором темы
    
if($id_user == $posts['id_user'] or $users['group'] == 15) {
            
//Настройка темы
            
echo '<div style="text-align:right;margin-bottom:10px;">';
            echo 
'<a class="btn btn-info" href="setting.topic.php?id='.$id.'">';
            echo 
'<img src="/engine/template/icons/app.png">&nbsp;'.Lang::__('Опция темы').'</a>';
            echo 
'</div>';
        }
    
//Если авторизован пользователь
    
if(isset($id_user)) {
        switch(
$do):
        
//Обработка функции мне нравится
        
case 'like':
            if(isset(
$id) and is_numeric($id)) {
            
//Добавим в базу мне нравится
            
$db->query('INSERT INTO `like` (`id_list`,`id_user`,`action`,`text`) VALUES ("'.$id.'","'.$id_user.'","2","'.Lang::__('Вам понравилась тема из форума').'")');
            
header('Location: post.php?id='.$id.'');
            } 
        break;
        
//Если вам не нравится тема
        
case 'likeexit':
            if(isset(
$id) and is_numeric($id)) {
            
//Удаляем из базы функция мне нравится
            
$db->query('DELETE FROM `like` WHERE `id_list` = "'.$id.'" AND `id_user` = "'.$id_user.'"');
            
header('Location: post.php?id='.$id.'');
            }                         
        break;
        endswitch;
    }                    
    
//Определение категорий пользователей
     //Выводим счетчик тем
        
$row $db->get_array($db->query("SELECT COUNT(*) FROM `forum_post` WHERE `id_top` = '".$id."'"));
        
//Объявляем навигацию
        
$newlist = new Navigation($row[0],15,true);
        
            
//Если счетчик на 0 выведит
        
if($row[0] == false) {
        echo 
engine::error(Lang::__('В данной теме нет постов!'));
        exit;
        }       
            
//Вытаскиваем все посты
        
$messag $db->query("SELECT * FROM `forum_post` WHERE `id_top` = '".$posts['id']."' "$newlist->limit()."");
        
//Проверяем есть ли посты
        
if($db->num_rows($messag) > 0) {
            
//Выводим все посты
                    
echo '<div class="mainpost">';
                    echo 
'<ul class="List_withminiphoto Pad_list">';
            while(
$message $db->get_array($messag)) { 
                        
            
//Ник добавленного
                
$nick $user->users($message['id_user'],array('nick'),false);
            
//ID добавленного
            
$id_users $user->users($message['id_user'],array('id'));
                        
//Данные о пользователе
                        
$profile $db->get_array($db->query("SELECT * FROM `users` WHERE `id` = '{$message['id_user']}'"));
            
//Сам пост
            
if($posts['id_user'] == $message['id_user']) {
                
$notify '<img src="/engine/template/icons/author.png">&nbsp;'.Lang::__('Автор темы');
            }
                            
//Количество лайков
                
$like $db->get_array($db->query(" SELECT COUNT(*) FROM `forum_like` WHERE `id_topic` = '".$id."' AND `id_post` = '".$message['id']."' AND `like` = 'plus'"));
                
//Количество дис-лайков
                            
$dislike $db->get_array($db->query(" SELECT COUNT(*) FROM `forum_like` WHERE `id_topic` = '".$id."' AND `id_post` = '".$message['id']."' AND `like` = 'minus'"));
                
//Количество постов
                            
$countm $db->get_array($db->query"SELECT COUNT(*) FROM `forum_post` WHERE `id_top` = '".$posts['id']."'" ));
                
                            
//Если авторизован пользователь увидет лайки
                            
if($id_user == true) {
                
$isset '<a style="color:green;" href="post.php?id='.$id.'&id_post='.$message['id'].'&act=like">'.$like[0].'</a>';
                
$disisset '<a style="color:red;" href="post.php?id='.$id.'&id_post='.$message['id'].'&act=dislike">'.$dislike[0].'</a>';
                }else {
                
$isset '<font color="green">'.$like[0].'</font>';
                
$disisset '<font color="red">'.$dislike[0].'</font>';
                }    
                            
                        
//По порядку выводим посты     
                        
echo '<li class="clearfix row3">';
                        
                            
//Путь к аватарам
                            
$avatar '/upload/avatar/' $profile['avatar'];
                                
//Если нет аватара выводим аватар по умолчанию
                                
if ($profile['avatar'] == false and file_exists($avatar) == false) {
                                    echo 
'<a href="/engine/template/icons/default_large.png" class="UserPhotoLink left">';
                                    echo 
'<img src="/engine/template/icons/default_large.png" class="UserPhoto UserPhoto_mini"></a>';
                                } else {
                                    echo 
'<a href="' $avatar '" title="Просмотр профиля" class="UserPhotoLink left">';
                                    echo 
'<img src="' $avatar '" class="UserPhoto UserPhoto_mini"></a>';
                                }    
                                
                        echo 
'<div class="list_content">';        
                        
//Автор поста
            
echo '<a href="'.MODULE.'profile.php?act=view&id='.$id_users.'"><b>'.$nick.'</b></a>';
                        
//Понравилось не понравился пост
                        
echo '<span class="time"><img src="/engine/template/icons/like.png">'.$isset.'';
                        
//Не понравился пост
            
echo '&nbsp;&nbsp;<img src="/engine/template/icons/dislike.png">'.$disisset.'</span>';    
                        
//Дополнительные параметры
            
echo '<div class="details">';
                        
//Группа пользователя
            
echo '<span><img src="/engine/template/icons/group.png">&nbsp;<font color="green">'.user::group($message['id_user']).'</font></span>';
            
//Дата добавления поста
                        
echo '<span><img src="/engine/template/icons/date.png">&nbsp;'.date::make_date($message['time']).'</span>';
            echo 
'</div>';
                
                            
//Файлы пользователя в теме
                    
$file_theme $db->query("SELECT * FROM `forum_file` WHERE `id_them` = '".intval($id)."' and `id_post` = '".intval($message['id'])."'");
                
//Если больше 0 то выводим файлы
                            
if($db->num_rows($file_theme) > 0) {
                                
//Выводим все файлы в пост
                                
                
while($file_them $db->get_array($file_theme)) {
                                    
//Название файла
                    
echo '<div class="_sharedMediaBbcode"><b>'.$file_them['text'].'</b>';
                                    
//Размер файла
                    
echo '<div class="desc">'.Lang::__('Размер файла').' '.engine::filesize($file_them['size']).'<br/>';
                    
//Дата добавления
                                    
echo date::make_date($file_them['time']);
                    echo 
'</div></div>';
                }
                }
                        
//Сам пост    
            
echo '<div class="row2">'.engine::input_text($message['text']).'</div>';
            echo 
'</div>';
                        echo 
'</li>';
                
                    
            }
                    echo 
'</ul>';
                    echo 
'</div>';
                if(
$row[0] > 15){
            
//Вывод навигации
            
echo $newlist->pagination('id='.$id.'');
                }   
        }else {
               echo 
engine::error(Lang::__('В теме отсутствуют посты'));
        }
                
    
//Если close 1 то темы закрыта
    
if($posts['close'] == 1) {
            
//Если авторизован пользователь
        
if($id_user == true) {
        
//Форма HTML
        
echo '<div class="mainname">'.Lang::__('Сообщение').'</div>';
                echo 
'<div class="mainpost">';
            
$form = new form('?id='.$id.'');
            
$form->textarea(false,'text');
            
$form->text('<label>');
            
$form->input2(false,'file','checkbox','1',false,Lang::__('Прикрепить файл'));
            
$form->text('</label>');
            
$form->submit(Lang::__('Отправить'),'submit',true,'btn btn-success');
            
$form->display();
        echo 
'</div>';
        }
    }else {
        echo 
engine::error('Тема закрыта для обсуждений');
    }                
    break;
    
    
//Скачиваем файл
    
case 'download':
        
//Обрабатываем полученный файл
        
$file htmlspecialchars($_GET['file']);
        
$file str_replace('../','',$file);
        
$file str_replace('./','',$file);
        
//Путь файла
        
$filename H.'upload/forum/files/'.$file.'';
            
//Ограничения
            
if($file == '.htaccess' || $file == 'index.php'){ 
                echo 
engine::error(Lang::__('Ошибка! Файл входит в состав запрещеных!'));
            }else{
                if (
file_exists($filename)) { 
                    
$list $filename;
                    
$name explode("/",$list);
                    
$name $name[count($name)-1];
                    
header('Content-type: text/plain');
                    
header("Content-disposition: attachment; filename=$name");
                    
header('Content-Description: File Transfer');
                    
header('Content-Transfer-Encoding: binary');
                    
header('Expires: 0');
                    
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                    
header('Pragma: public');
                    
header('Content-Length: ' filesize($list));
                    
ob_clean();
                    
flush();
                    
readfile($list);
                } else { 
            echo 
engine::error(Lang::__('Файл не существует!'));
        }
            }
    break;
    
    
//Мне нравится тема
    
case 'like':
    
$templates->template('Форум'); //Название страницы
            //Сама тема
        
$id_topic intval($_GET['id']);
            
//Пост
        
$id_postintval($_GET['id_post']);
            
//Вытаскиваем данные
        
$likes =  $db->super_query("SELECT * FROM `forum_like` WHERE `id_post` = '".$id_post."' AND `id_topic` = '".$id_topic."' AND `id_user` = '".$id_user."'");
                
//Добавлем еще один хороший отзыв
                
if($likes['id_user'] != $id_user) {
            
$db->query("INSERT INTO `forum_like` (`id_post`,`id_topic`,`id_user`,`like`) VALUES ('".$id_post."','".$id_topic."','".$id_user."','plus')");
            
header("Location: post.php?id={$id_topic}");
        }else{
             
header("Location: post.php?id={$id_topic}");
        }             
    break;
    
    
//Мне не нравится тема            
    
case 'dislike':
    
$templates->template('Форум'); //Название страницы
            //Сама тема
        
$id_topic intval($_GET['id']);
            
//Пост
        
$id_post intval($_GET['id_post']);
            
//Вытаскиваем данные
        
$likes $db->super_query("SELECT * FROM `forum_like` WHERE `id_post` = '".$id_post."' AND `id_topic` = '".$id_topic."' AND `id_user` = '".$id_user."'");
                
//Добавляем не хороший отзыв
                
if($likes['id_user'] != $id_user) {
            
$db->query("INSERT INTO `forum_like` (`id_post`,`id_topic`,`id_user`,`like`) VALUES ('".$id_post."','".$id_topic."','".$id_user."','minus')");
            
header("Location: post.php?id={$id_topic}");
        }else{
            
header("Location: post.php?id={$id_topic}");
        }             
    
    break;    
endswitch;    

//Переадресация
echo engine::home(array('Назад','section.php?id='.$posts['id_sec'].''));
Онлайн: 1
Реклама