- <?
- 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'].''));
- ?>