<?
define('SHCMS_ENGINE',true);
include_once('../../engine/system/core.php');
switch($act):
default:
//Если вместо id num попытаются вставить текст то выводит ошибку
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
$templates->template(Lang::__('Форум - Ошибка')); //Название страницы
engine::error(Lang::__('Ошибка при выводе сообщений из темы')); //При ошибке
header('Refresh: 1; url=index.php');
exit;
}
//Из $_GET в обычную
$id = (int) $_GET['id'];
//Вытаскиваем из таблицы `forum_topics` все данные
$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."'" );
//Если уже нажата кнопка Отправить и введена текст сообщения выполняет функицию которая ниже
if($id_user == true) {
if(isset($_POST['submit']) and isset($_POST['text'])) {
//Обрабатывает описание
$text = $_POST['text'];
$file_post = intval($_POST['file']);
//Если не введена текст сообщения выводит эту ошибку
if(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 = $user_post['id']; //даем простую переменную $id_post
}
}
//Проверяем если $update есть какая нибудь данная она ее выполняет
if($update == true) {
//Это функция обновляет последний пост пользователя и добавляет еще текст туда
$text = $user_post['text'] . "\n\n[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)."'"); // Начисление баллов
echo engine::success(Lang::__('Сообщение успешно добавлено')); // Успешно
if($file_post == 1) {
header('Location: post_file.php?id='.$id);
}else {
header('Refresh: 1; url=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"> <a href="post.php?id='.$id.'&do=likeexit"><b>'.Lang::__('Мне не нравится').'</b></a>';
$viewlike .= ' <img title="'.Lang::__('Тема понравилась').' '.$row2[0].'" src="/engine/template/icons/icon_users.png"> <span style="font-size:11px;color: #5c5c5c;">'.$row2[0].'</span>';
}else {
//Если вы хотите добавить тему мне нравится то выполните действие ниже
$viewlike .= '<img src="/engine/template/icons/fave_on_alt.png"> <a href="post.php?id='.$id.'&do=like"><b>'.Lang::__('Мне нравится').'</b></a>';
$viewlike .= ' <img title="'.Lang::__('Тема понравилась').' '.$row2[0].'" src="/engine/template/icons/icon_users.png"> <span style="font-size:11px;color: #5c5c5c;">'.$row2[0].'</span>';
}
}
echo '<div class="mainpost">
<span style="font-size:15px;color: #323232;">'.engine::ucfirst($posts['name']).'</span><div class="time">'.$viewlike.'</div><br/>
<span style="font-size:10px;">Автор: <a href="/modules/profile.php?id='.$posts['id_user'].'">'.$nick_author.'</a> , '.date::make_date($posts['time']).'</span>
</div>';
//Если пользователь является автором темы то он может выполнять нужные ему действие
if($id_user == $posts['id_user'] or $users['group'] == 15) {
echo '<div class="mainpost"><img src="/engine/template/icons/app.png"> <a href="setting.topic.php?id='.$id.'">'.Lang::__('Опция темы').'</a></div>';
}
//Если сработало закрытие темы то она закроется
if($posts['close'] == 1) {
if($id_user == true) {
//Форма
echo '<div class="mainname">'.Lang::__('Добавить комментрий').'</div><div class="mainpost">';
$form = new form('?id='.$id.'');
$form->textarea(Lang::__('Текст комментария'),'text');
$form->text('<label>');
$form->input2(false,'file','checkbox','1',false,Lang::__('Прикрепить файл'));
$form->text('</label>');
$form->submit(Lang::__('Отправить'),'submit');
$form->display();
echo '</div>';
}
}else {
echo engine::error('Тема закрыта для обсуждений');
}
//Функция мне нравится для авторизованных действует
if(isset($id_user)) {
switch($do):
//Обработка функции мне нравится
case 'like':
if(isset($_GET['id']) and is_numeric($_GET['id'])) {
$id = (int) $_GET['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($_GET['id']) and is_numeric($_GET['id'])) {
$id = (int) $_GET['id'];
//Удаляем из базы функция мне нравится
$db->query('DELETE FROM `like` WHERE `id_list` = "'.$id.'" AND `id_user` = "'.$id_user.'"');
header('Location: post.php?id='.$id.'');
}
break;
endswitch;
}
$client = array(NULL => 'Гости',1 => 'Клиент',15 =>'Админ');
//Выводим счетчик тем
if ($result = $db->query("SELECT COUNT(*) FROM `forum_post` WHERE `id_top` = '".$id."'")) {
/* Переход к строке №400 */
$result->data_seek(399);
/* Получение строки */
$row = $result->fetch_row();
}
$newlist = new Navigation($row[0],10,true);
//Если счетчик на 0 выведит
if($row[0] == false) {
echo engine::error(Lang::__('В данной теме нет постов!'));
exit;
}
//Вытаскиваем все посты
$messag = $db->query("SELECT * FROM `forum_post` WHERE `id_top` = '".$posts['id']."' ORDER BY `id` DESC ". $newlist->limit()."");
//Проверяем есть ли посты
if($db->num_rows($messag) > 0) {
//Выводим все
while($message = $db->get_array($messag)) {
//Ник добавленного
$nick = $user->users($message['id_user'],array('nick'),true);
//ID добавленного
$id_users = $user->users($message['id_user'],array('id'));
//Группы
$group_list = $user->users($message['id_user'],array('group'));
//Сам пост
if($posts['id_user'] == $message['id_user']) {
$notify = '<img src="/engine/template/icons/author.png"> '.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(isset($id_user)) {
$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">'.$like[0].'</font>';
}
echo '<div class="mainpost"><b style="font-size:14px;">
<a style="color:#1E90FF;" href="'.MODULE.'profile.php?act=view&id='.$id_users.'">'.$nick.'</a></b>';
echo '<span class="time"><img src="/engine/template/icons/like.png">'.$isset.'';
echo ' <img src="/engine/template/icons/dislike.png">'.$disisset.'</span>';
echo '<div class="details">';
echo '<span><img src="/engine/template/icons/group.png"> <font color="green">'.$client[$group_list].'</font></span>';
echo '<span><img src="/engine/template/icons/date.png"> '.date::make_date($message['time']).'</span>';
echo '<span>'.$notify.'</span>';
echo '</div>';
$file_theme = $db->query("SELECT * FROM `forum_file` WHERE `id_them` = '".intval($id)."' and `id_post` = '".intval($message['id'])."'");
if($db->num_rows($file_theme) > 0) {
echo '<div class="mainname">'.Lang::__('Прикрепленные файлы').'</div>';
echo '<div class="mainpost">';
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>';
}
echo '<div class="row">'.engine::input_text($message['text']).'</div>';
echo '</div>';
}
//Вывод навигации
echo $newlist->pagination('id='.$id.'');
}else {
echo engine::error(Lang::__('В теме отсутствуют посты'));
}
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_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."','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'].''));
?>