0, 'upfp' => 0, 'farea_w' => 20, 'farea_h' => 4, 'postclip' => 1, 'postcut' => 2 ); //////////////////////////////////////////////////////////// // Список расширений файлов, разрешенных к выгрузке // //////////////////////////////////////////////////////////// // Файлы Windows $ext_win = array ( 'exe', 'msi' ); // Файлы Java $ext_java = array ( 'jar', 'jad' ); // Файлы SIS $ext_sis = array ( 'sis', 'sisx' ); // Файлы документов и тексты $ext_doc = array ( 'txt', 'pdf', 'doc', 'rtf', 'djvu', 'xls' ); // Файлы картинок $ext_pic = array ( 'jpg', 'jpeg', 'gif', 'png', 'bmp', 'wmf' ); // Файлы архивов $ext_zip = array ( 'zip', 'rar', '7z', 'tar', 'gz' ); // Файлы видео $ext_video = array ( '3gp', 'avi', 'flv', 'mpeg', 'mp4' ); // Звуковые файлы $ext_audio = array ( 'mp3', 'amr' ); // Другие типы файлов (что не перечислены выше) $ext_other = array (); //////////////////////////////////////////////////////////// // Ограничиваем доступ к Форуму // //////////////////////////////////////////////////////////// $error = ''; if (!$set['mod_forum'] && $rights < 7) $error = 'Форум закрыт'; elseif ($set['mod_forum'] == 1 && !$user_id) $error = 'Доступ на форум открыт только авторизованным посетителям'; if ($error) { require_once('../incfiles/head.php'); echo '

' . $error . '

'; require_once('../incfiles/end.php'); exit; } $headmod = $id ? 'forum,' . $id : 'forum'; // Заголовки форума if (empty($id)) { $textl = 'Форум'; } else { $req = mysql_query("SELECT `text` FROM `forum` WHERE `id`= '" . $id . "' LIMIT 1;"); $res = mysql_fetch_assoc($req); $hdr = strtr($res['text'], array ( '"' => '', '&' => '', '<' => '', '>' => '', ''' => '' )); $hdr = mb_substr($hdr, 0, 30); $hdr = checkout($hdr); $textl = mb_strlen($res['text']) > 30 ? $hdr . '...' : $hdr; } $array = array ( 'new', 'who', 'addfile', 'file', 'users', 'moders', 'addvote', 'editvote', 'delvote', 'vote', 'per', 'ren', 'deltema', 'vip', 'close', 'editpost', 'nt', 'tema', 'loadtem', 'say', 'post', 'read', 'faq', 'trans', 'massdel', 'files', 'filter', 'restore' ); if (in_array($act, $array) && file_exists($act . '.php')) { require_once($act . '.php'); } else { require_once('../incfiles/head.php'); // Если форум закрыт, то для Админов выводим напоминание if (!$set['mod_forum']) echo '

Форум закрыт!

'; if (!$user_id) { if (isset($_GET['newup'])) $_SESSION['uppost'] = 1; if (isset($_GET['newdown'])) $_SESSION['uppost'] = 0; } if ($id) { $type = mysql_query("SELECT * FROM `forum` WHERE `id`= '" . $id . "' LIMIT 1"); $type1 = mysql_fetch_assoc($type); $tip = $type1['type']; switch ($tip) { case 'f': //////////////////////////////////////////////////////////// // Список Разделов форума // //////////////////////////////////////////////////////////// forum_new(1); echo '
'; echo 'Форум >> ' . $type1['text'] . ''; echo '
'; $req = mysql_query("SELECT `id`, `text`, `soft` FROM `forum` WHERE `type`='r' AND `refid`='$id' ORDER BY `realid`"); $total = mysql_num_rows($req); while ($res = mysql_fetch_assoc($req)) { echo ($i % 2) ? '
' : '
'; $coltem = mysql_result(mysql_query("SELECT COUNT(*) FROM `forum` WHERE `type` = 't' AND `refid` = '" . $res['id'] . "'"), 0); echo '' . $res['text'] . ''; if ($coltem) echo " [$coltem]"; if (!empty($res['soft'])) echo '
' . $res['soft'] . '
'; echo '
'; ++$i; } echo '
Всего: ' . $total . '
'; unset($_SESSION['fsort_id']); unset($_SESSION['fsort_users']); break; case 'r': //////////////////////////////////////////////////////////// // Список тем // //////////////////////////////////////////////////////////// // Ссылка на непрочитанное forum_new(1); $qz = mysql_query("SELECT COUNT(*) FROM `forum` WHERE `type`='t' AND `refid`='$id'" . ($rights >= 7 ? '' : " AND `close`!='1'")); $coltem = mysql_result($qz, 0); $forum = mysql_query("SELECT * FROM `forum` WHERE `type`='f' AND `id`='" . $type1['refid'] . "'"); $forum1 = mysql_fetch_assoc($forum); echo '
'; echo 'Форум >> ' . $forum1['text'] . ' >> ' . $type1['text'] . ''; echo '
'; if ($user_id && !$ban['1'] && !$ban['11']) { echo '
'; } $q1 = mysql_query("SELECT * FROM `forum` WHERE `type`='t'" . ($rights >= 7 ? '' : " AND `close`!='1'") . " AND `refid`='$id' ORDER BY `vip` DESC, `time` DESC LIMIT $start, $kmess"); while ($mass = mysql_fetch_assoc($q1)) { echo ($i % 2) ? '
' : '
'; $nikuser = mysql_query("SELECT `from` FROM `forum` WHERE `type` = 'm' AND `close` != '1' AND `refid` = '" . $mass['id'] . "' ORDER BY `time` DESC LIMIT 1"); $nam = mysql_fetch_assoc($nikuser); $colmes = mysql_query("SELECT COUNT(*) FROM `forum` WHERE `type`='m' AND `refid`='" . $mass['id'] . "'" . ($rights >= 7 ? '' : " AND `close` != '1'")); $colmes1 = mysql_result($colmes, 0); $cpg = ceil($colmes1 / $kmess); // Выводим список тем if ($mass['vip'] == 1) { echo ''; } elseif ($mass['edit'] == 1) { echo ''; } elseif ($mass['close'] == 1) { echo ''; } else { $np = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_rdm` WHERE `time` > '" . $mass['time'] . "' AND `topic_id` = '" . $mass['id'] . "' AND `user_id`='$user_id'"), 0); echo ''; } if ($mass['realid'] == 1) echo ' '; echo ' ' . $mass['text'] . ' [' . $colmes1 . ']'; if ($cpg > 1) { echo " >>"; } echo '
'; echo $mass['from']; if (!empty($nam['from'])) { echo ' / ' . $nam['from']; } $vrp = $mass['time'] + $set_user['sdvig'] * 3600; echo ' ' . date("d.m.y / H:i", $vrp) . "
"; ++$i; } echo '
Всего: ' . $coltem . '
'; if ($coltem > $kmess) { echo '

' . pagenav('index.php?id=' . $id . '&', $start, $coltem, $kmess) . '

'; echo '

'; } unset($_SESSION['fsort_id']); unset($_SESSION['fsort_users']); break; case 't': //////////////////////////////////////////////////////////// // Читаем топик // //////////////////////////////////////////////////////////// $filter = isset($_SESSION['fsort_id']) && $_SESSION['fsort_id'] == $id ? 1 : 0; $sql = ''; if ($filter && !empty($_SESSION['fsort_users'])) { // Подготавливаем запрос на фильтрацию юзеров $sw = 0; $sql = ' AND ('; $fsort_users = unserialize($_SESSION['fsort_users']); foreach ($fsort_users as $val) { if ($sw) $sql .= ' OR '; $sortid = intval($val); $sql .= "`forum`.`user_id` = '$sortid'"; $sw = 1; } $sql .= ')'; } if ($user_id && !$filter) { // Фиксация факта прочтения топика $req = mysql_query("SELECT * FROM `cms_forum_rdm` WHERE `topic_id` = '$id' AND `user_id` = '$user_id' LIMIT 1"); if (mysql_num_rows($req) > 0) { $res = mysql_fetch_assoc($req); if ($type1['time'] > $res['time']) mysql_query("UPDATE `cms_forum_rdm` SET `time` = '$realtime' WHERE `topic_id`='$id' AND `user_id` = '$user_id'"); } else { // Ставим метку о прочтении mysql_query("INSERT INTO `cms_forum_rdm` SET `topic_id` = '$id', `user_id` = '$user_id', `time` = '$realtime'"); } } // Ссылка на непрочитанное forum_new(1); if ($rights < 7 && $type1['close'] == 1) { echo '

Тема удалена!
В раздел

'; require_once("../incfiles/end.php"); exit; } // Счетчик постов темы $colmes = mysql_result(mysql_query("SELECT COUNT(*) FROM `forum` WHERE `type`='m'$sql AND `refid`='$id'" . ($rights >= 7 ? '' : " AND `close` != '1'")), 0); // Панель навигации $razd = mysql_fetch_assoc(mysql_query("SELECT `id`, `refid`, `text` FROM `forum` WHERE `id` = '" . $type1['refid'] . "' LIMIT 1")); $frm = mysql_fetch_assoc(mysql_query("SELECT `id`, `text` FROM `forum` WHERE `id` = '" . $razd['refid'] . "' LIMIT 1")); echo ''; // Выводим название топика echo '
Вниз  ' . $type1['text'] . '
'; // Метки удаления темы if ($type1['close']) echo '
Тему удалил: ' . $type1['close_who'] . '
'; elseif (!empty($type1['close_who']) && $rights >= 7) echo '
Отменил удаление темы: ' . $type1['close_who'] . '
'; // Метки закрытия темы if ($type1['edit']) echo '
Тема закрыта
'; //////////////////////////////////////////////////////////// // Блок голосований (by FlySelf) // //////////////////////////////////////////////////////////// if ($type1['realid']) { if (isset($_GET['clip'])) $clip_forum = '&clip'; $vote_user = mysql_result(mysql_query("SELECT COUNT(*) FROM `forum_vote_us` WHERE `user`='$user_id' AND `topic`='$id'"), 0); $topic_vote = mysql_fetch_assoc(mysql_query("SELECT `name`, `time`, `count` FROM `forum_vote` WHERE `type`='1' AND `topic`='$id' LIMIT 1")); echo '
' . checkout($topic_vote['name']) . '
'; $vote_result = mysql_query("SELECT `id`, `name`, `count` FROM `forum_vote` WHERE `type`='2' AND `topic`='" . $id . "' ORDER BY `id` ASC"); if (!isset($_GET['vote_result']) && $user_id && $vote_user == 0) { // Выводим форму с опросами echo '
'; while ($vote = mysql_fetch_assoc($vote_result)) { echo ' ' . checkout($vote['name']) . '
'; } echo '


Результаты

'; } else { // Выводим результаты голосования echo ''; while ($vote = mysql_fetch_assoc($vote_result)) { $count_vote = $topic_vote['count'] ? round(100 / $topic_vote['count'] * $vote['count']) : 0; echo checkout($vote['name']) . ' [' . $vote['count'] . ']
'; echo 'Рейтинг: ' . $count_vote . '%
'; } echo '
Всего голосов: '; if ($datauser['rights'] > 6) echo '' . $topic_vote['count'] . ''; else echo $topic_vote['count']; echo '
'; if ($user_id && $vote_user == 0) echo '
Голосовать
'; } } //////////////////////////////////////////////////////////// // Фиксация первого поста в теме // //////////////////////////////////////////////////////////// if (($set_forum['postclip'] == 2 && ($set_forum['upfp'] ? $start < (ceil($colmes - $kmess)) : $start > 0)) || isset($_GET['clip'])) { $postreq = mysql_query("SELECT `forum`.*, `users`.`sex`, `users`.`rights`, `users`.`lastdate`, `users`.`status`, `users`.`datereg` FROM `forum` LEFT JOIN `users` ON `forum`.`user_id` = `users`.`id` WHERE `forum`.`type` = 'm' AND `forum`.`refid` = '$id'" . ($rights >= 7 ? "" : " AND `forum`.`close` != '1'") . " ORDER BY `forum`.`id` LIMIT 1"); $postres = mysql_fetch_assoc($postreq); echo '
'; if ($postres['sex']) echo ' '; else echo ' '; if ($user_id && $user_id != $postres['user_id']) { echo '' . $postres['from'] . ' '; echo ' [о] [ц] '; } else { echo '' . $postres['from'] . ' '; } $user_rights = array ( 1 => 'Kil', 3 => 'Mod', 6 => 'Smd', 7 => 'Adm', 8 => 'SV' ); echo $user_rights[$postres['rights']]; echo ($realtime > $postres['lastdate'] + 300 ? ' [Off]' : ' [ON]'); echo ' (' . date("d.m.Y / H:i", $postres['time'] + $set_user['sdvig'] * 3600) . ')
'; if ($postres['close']) { echo 'Пост удалён!
'; } echo checkout(mb_substr($postres['text'], 0, 500), 0, 2); if (mb_strlen($postres['text']) > 500) echo '...читать все'; echo '
'; } if ($filter) echo '
В теме включена фильтрация по авторам постов
'; // Задаем правила сортировки (новые внизу / вверху) if ($user_id) $order = $set_forum['upfp'] ? 'DESC' : 'ASC'; else $order = ((empty($_SESSION['uppost'])) || ($_SESSION['uppost'] == 0)) ? 'ASC' : 'DESC'; // Запрос в базу $req = mysql_query("SELECT `forum`.*, `users`.`sex`, `users`.`rights`, `users`.`lastdate`, `users`.`status`, `users`.`datereg` FROM `forum` LEFT JOIN `users` ON `forum`.`user_id` = `users`.`id` WHERE `forum`.`type` = 'm' AND `forum`.`refid` = '$id'" . ($rights >= 7 ? "" : " AND `forum`.`close` != '1'") . "$sql ORDER BY `forum`.`id` $order LIMIT $start, $kmess"); // Верхнее поле "Написать" if (($user_id && !$type1['edit'] && $set_forum['upfp']) || ($rights >= 7 && $set_forum['upfp'])) { echo '
'; if ($set_forum['farea']) { echo '
'; echo ' Добавить файл
'; if ($set_user['translit']) echo ' Транслит сообщения
'; } echo ''; echo '
'; } if ($rights == 3 || $rights >= 6) echo '
'; $i = 1; while ($res = mysql_fetch_assoc($req)) { if ($res['close']) echo '
'; else echo ($i % 2) ? '
' : '
'; if ($set_user['avatar']) { echo '
'; if (file_exists(('../files/avatar/' . $res['user_id'] . '.png'))) echo '' . $res['from'] . ' '; else echo '' . $res['from'] . ' '; echo ''; } if ($res['sex']) echo ' '; else echo ' '; // Ник юзера и ссылка на его анкету if ($user_id && $user_id != $res['user_id']) { echo '' . $res['from'] . ' '; } else { echo '' . $res['from'] . ' '; } // Метка должности $user_rights = array ( 3 => '(FMod)', 6 => '(Smd)', 7 => '(Adm)', 9 => '(SV!)' ); echo $user_rights[$res['rights']]; // Метка Онлайн / Офлайн echo ($realtime > $res['lastdate'] + 300 ? ' [Off] ' : ' [ON] '); // Ссылки на ответ и цитирование if ($user_id && $user_id != $res['user_id']) { echo '[о] [ц] '; } // Время поста echo ' (' . date("d.m.Y / H:i", $res['time'] + $set_user['sdvig'] * 3600) . ')
'; // Статус юзера if (!empty($res['status'])) echo '
 ' . $res['status'] . '
'; if ($set_user['avatar']) echo '
'; //////////////////////////////////////////////////////////// // Вывод текста поста // //////////////////////////////////////////////////////////// $text = $res['text']; if ($set_forum['postcut']) { // Если текст длинный, обрезаем и даем ссылку на полный вариант switch ($set_forum['postcut']) { case 2: $cut = 1000; break; case 3: $cut = 3000; break; default : $cut = 500; } } if ($set_forum['postcut'] && mb_strlen($text) > $cut) { $text = mb_substr($text, 0, $cut); $text = checkout($text, 1, 0); $text = preg_replace('#\[c\](.*?)\[/c\]#si', '
\1
', $text); echo $text . '...
Читать все >>'; } else { // Или, обрабатываем тэги и выводим весь текст $text = checkout($text, 1, 1); if ($set_user['smileys']) $text = smileys($text, $res['rights'] ? 1 : 0); echo $text; } if ($res['kedit']) { // Если пост редактировался, показываем кем и когда $dizm = date("d.m /H:i", $res['tedit'] + $set_user['sdvig'] * 3600); echo '
Изм. ' . $res['edit'] . ' (' . $dizm . ') [' . $res['kedit'] . ']'; } // Если есть прикрепленный файл, выводим его описание $freq = mysql_query("SELECT * FROM `cms_forum_files` WHERE `post` = '" . $res['id'] . "'"); if (mysql_num_rows($freq) > 0) { $fres = mysql_fetch_assoc($freq); $fls = round(filesize('./files/' . $fres['filename']) / 1024, 2); echo '
Прикреплённый файл:'; // Предпросмотр изображений $att_ext = strtolower(format('./files/' . $fres['filename'])); $pic_ext = array ( 'gif', 'jpg', 'jpeg', 'png' ); if (in_array($att_ext, $pic_ext)) { echo ''; } else { echo '
' . $fres['filename'] . ''; } echo ' (' . $fls . ' кб.)
'; echo 'Скачано: ' . $fres['dlcount'] . ' раз.
'; } if ((($rights == 3 || $rights >= 6) && $rights >= $res['rights']) || ($res['user_id'] == $user_id && !$set_forum['upfp'] && ($start + $i) == $colmes && $res['time'] > $realtime - 300) || ($res['user_id'] == $user_id && $set_forum['upfp'] && $start == 0 && $i == 1 && $res['time'] > $realtime - 300)) { // Ссылки на редактирование / удаление постов echo '
'; if ($rights == 3 || $rights >= 6) echo ' '; echo 'Изменить | '; if ($rights >= 7 && $res['close'] == 1) echo 'Восстановить | '; echo 'Удалить'; if ($res['close']) { echo '
Пост удалил: ' . $res['close_who'] . '
'; } elseif (!empty($res['close_who'])) { echo '
Пост восстановил: ' . $res['close_who'] . '
'; } if ($rights == 3 || $rights >= 6) echo '
' . $res['ip'] . ' - ' . $res['soft'] . '
'; echo '
'; } echo '
'; ++$i; } if ($rights == 3 || $rights >= 6) { echo '
'; echo ''; } // Нижнее поле "Написать" if (($user_id && !$type1['edit'] && !$set_forum['upfp']) || ($rights >= 7 && !$set_forum['upfp'])) { echo '
'; if ($set_forum['farea']) { echo '
'; echo ' Добавить файл
'; if ($set_user['translit']) echo ' Транслит сообщения
'; } echo ''; echo '
'; } echo '
Наверх  Всего сообщений: ' . $colmes . '
'; if ($colmes > $kmess) { echo '

' . pagenav('index.php?id=' . $id . '&', $start, $colmes, $kmess) . '

'; echo '

'; } else { echo '
'; } if ($rights == 3 || $rights >= 6) { echo '

'; echo $topic_vote > 0 ? 'Изменить опрос
Удалить опрос
' : 'Добавить опрос
'; echo "Переименовать тему
"; // Закрыть - открыть тему if ($type1['edit'] == 1) echo "Открыть тему
"; else echo "Закрыть тему
"; // Удалить - восстановить тему if ($type1['close'] == 1) echo "Восстановить тему
"; echo "Удалить тему
"; if ($type1['vip'] == 1) echo "Открепить тему"; else echo "Закрепить тему"; echo "
Переместить тему

"; } if ($user_id) { $onltime = $realtime - 300; $online_u = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `lastdate` > $onltime AND `place` = 'forum,$id'"), 0); $online_g = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_guests` WHERE `lastdate` > $onltime AND `place` = 'forum,$id'"), 0); echo 'Кто здесь? (' . $online_u . ' / ' . $online_g . ')
'; } if ($filter) echo '
Отменить фильтрацию
'; else echo '
Фильтровать сообщения
'; echo 'Скачать тему'; break; default: echo '

Ошибка!
Тема удалена или не существует!

'; break; } } else { //////////////////////////////////////////////////////////// // Список Категорий форума // //////////////////////////////////////////////////////////// forum_new(1); echo '
'; echo 'Форум
'; $req = mysql_query("SELECT `id`, `text`, `soft` FROM `forum` WHERE `type`='f' ORDER BY `realid`"); while ($res = mysql_fetch_array($req)) { echo ($i % 2) ? '
' : '
'; $count = mysql_result(mysql_query("SELECT COUNT(*) FROM `forum` WHERE `type`='r' and `refid`='" . $res['id'] . "'"), 0); echo '' . $res['text'] . ' [' . $count . ']'; if (!empty($res['soft'])) echo '
' . $res['soft'] . '
'; echo '
'; ++$i; } $onltime = $realtime - 300; $online_u = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `lastdate` > $onltime AND `place` LIKE 'forum%'"), 0); $online_g = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_guests` WHERE `lastdate` > $onltime AND `place` LIKE 'forum%'"), 0); echo '
' . ($user_id ? 'Кто в форуме' : 'Кто в форуме') . ' (' . $online_u . ' / ' . $online_g . ')
'; unset($_SESSION['fsort_id']); unset($_SESSION['fsort_users']); } //////////////////////////////////////////////////////////// // Счетчик файлов и ссылка на них // //////////////////////////////////////////////////////////// $sql = ($rights == 9) ? "" : " AND `del` != '1'"; if ($id && $tip == 'f') { $count = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_files` WHERE `cat` = '$id'" . $sql), 0); if ($count > 0) echo '

Файлы раздела (' . $count . ')

'; else echo '

Прикрепленных файлов нет

'; } elseif ($id && $tip == 'r') { $count = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_files` WHERE `subcat` = '$id'" . $sql), 0); if ($count > 0) echo '

Файлы подраздела (' . $count . ')

'; else echo '

Прикрепленных файлов нет

'; } elseif ($id && $tip == 't') { $count = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_files` WHERE `topic` = '$id'" . $sql), 0); if ($count > 0) echo '

Файлы топика (' . $count . ')

'; else echo '

Прикрепленных файлов нет

'; } else { $sql = ($rights == 9) ? '' : " WHERE `del` != '1'"; $count = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_forum_files`" . $sql), 0); if ($count > 0) echo '

Файлы форума (' . $count . ')

'; else echo '

Прикрепленных файлов нет

'; } // Навигация внизу страницы echo '

' . ($id ? 'В Форум
' : '') . 'Поиск по форуму'; if (!$id) { echo '
Правила форума
'; echo 'Модераторы
'; echo 'FAQ'; } echo '

'; if (!$user_id) { if ((empty($_SESSION['uppost'])) || ($_SESSION['uppost'] == 0)) { echo "Новые вверху
"; } else { echo "Новые внизу
"; } } } require_once("../incfiles/end.php"); ?>