File size: 17.29Kb
<?php
define( 'WBCAT', 1 );
$title = 'Новости';
require_once ('inc/head.php');
if ($settings['news'] == false && !$allow) {
echo '<div class="error">Данный модуль закрыт администратором !</div>';
require_once ('inc/foot.php');
exit;
}
//Проверка и фильтрация переменной $id
if (isset($_GET['id'])){ $id = intval($_GET['id']) ;
if(empty($_GET['id'])) exit('Неверный запрос');
$req = mysql_query("SELECT * FROM `news` WHERE `id` = '$id' LIMIT 1");
$res = mysql_fetch_assoc($req);
if (mysql_num_rows($req) == 0 ) {
echo '<div class="title">Такой записи не существует</div>';
require_once ('inc/foot.php');
exit; }
}
if (isset($_SESSION['spam'])) {
echo '<div class="error">Автоматическая спам-блокировка</div>';
require_once ('inc/foot.php');
exit;
}
//Настройки Анти-Спама
$AntiSpam = mysql_fetch_array(mysql_query("SELECT `set` FROM `modules` WHERE `name` = 'anti_spam' LIMIT 1"));
$ASET = unserialize($AntiSpam['set']);
$mod = isset($_GET['mod']) ? $_GET['mod'] : '';
switch ($mod) {
# Вывод комментариев к новости #
case 'view' :
// Получаем результаты запросов
$view = mysql_fetch_array(mysql_query("SELECT * FROM `news` WHERE id='$id';"));
$view['text'] = tags($view['text']);
$view['text'] = smileys($view['text']);
echo '<div class="zag">Новость</div>';
echo '<div class="title"><b>'.$view['name'].'</b> ['.date('d.m.y/H:i' , $view['date']).']</div>';
echo '<div class="title">'.nl2br($view['text']).'</div>';
echo'<div class="zag">Комментарии</div>';
// Формируем вывод комментариев + постраничная навигация
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `komm` WHERE `id_news` = '$id'"),0);
$pager = new pager($count,$settings['on_page'],$home.'/comments-'.$id.'.html/page-');
$result = mysql_query('SELECT * FROM `komm` WHERE `id_news`='.$id.' ORDER BY `id` DESC LIMIT '.$pager->get_start().', '.$pager->on_page.'');
echo '<form action="'.$home.'/adm/news_comm_multi_del.php" method="POST">';
if ($count >0) {
while ($m = mysql_fetch_array($result)) {
echo '<div class="title">';
echo print_msg($m,$set_news['bbcode'],$set_news['smileys'],'news');
echo (!empty($m['reply']) ? '<br/><font color="red"><u>Ответ</u></font><font color="black"> : '.nl2br($m['reply']).'</font>' :'').'';
if ($allow) {
echo '<div class="min">[<a href="'.$home.'/adm/komm_news.html?mod=edit_komm&id='.$m['id'].'">Ред</a>][<a href="'.$home.'/adm/komm_news.html?mod=del_komm&id='.$m['id'].'">Уд</a>]'.(empty($m['reply']) ?'[<a href="'.$home.'/adm/komm_news.html?mod=reply&id='.$m['id'].'">Ответить</a>]' :'').'
<br/><u>IP</u> : <i>'.int2ip($m['ip']).'</i><br/>
<u>USER AGENT</u> : <i>'.$m['browser'].'</i><br/>
<input type="checkbox" name="id[]" value="'.$m['id'].'"/> Удалить</div>';
}
echo '</div>';
}
echo $pager->print_nav();
}
else {
echo '<div class="title">Комментариев нет</div>';
}
if ($allow) {
if($count>1) {
echo '<input type="hidden" name="id_news" value="'.$view['id'].'"/>';
echo '<div class="func"><a href="'.$home.'/news.html?mod=del_all_komm&id='.$id.'">Удалить все комментарии</a><br/>';
echo '<input type="submit" name="submit" value="Удалить отмеченные"/></div>';
}
}
echo '</form>';
echo '<div class="main"><a href="'.$home.'/comments-'.$id.'/add.html">Добавить комментарий</a></div>';
echo '<div class="main"><a href="'.$home.'/bbcode.html">Теги</a>|<a href="'.$home.'/smileys.html">Смайлы</a></div>';
echo '<div class="main"><a href="'.$home.'/news.html">К новостям</a></div>';
break;
# Добавление новостей #
case 'add' :
if (!$allow) exit ('Доступ закрыт !');
if (isset($_POST['submit'])) {
if (empty($_POST['name'])) {
$error[1] = 'Вы не ввели заголовок новости !';
}
if (empty($_POST['text'])) {
$error[2] = 'Вы не ввели текст новости !';
}
if (!empty($error)) {
echo '<div class="title">';
foreach($error as $value) {
echo "<b>$value</b> <br />";
}
}
else {
//Обрезаем заголовк и текст новости
$name = substr($_POST['name'], 0, 100);
$text = substr($_POST['text'], 0, 500);
// Фильтрируем переменные и заносим данные в базу
$name = htmlspecialchars(trim($_POST['name']));
$text = htmlspecialchars(trim($_POST['text']));
$result = mysql_query("insert into `news` SET
`name`='" . mysql_real_escape_string($name) . "',
`date`='".$time."' ,
`text`='" . mysql_real_escape_string($text) . "';");
if ($result == true) {
header('Location: '.$home.'/news.html');
}
else {exit ('Ошибка добавление новости в базу данных');}
}
}
echo "<div class='zag'>
Добавление новости</div><div class='title'>
<form action='news.html?mod=add' method='post'>Заголов новости <small>[max 100]</small> :<br/>
<input type='text' name='name'/><br/>
Текст новости <small>[max 500]</small> :<br/>
<textarea rows='3' name='text'></textarea><br>
<input type='submit' name='submit' value='Создать новость'/></form></div>";
echo '<div class="main"><a href="news.html">К новостям</a></div>';
break;
# Удаление новостей #
case 'del' :
if (!$allow) exit ('Доступ закрыт !');
echo '<div class="zag">Удаление новостей</div>';
if (isset($_POST['submit'])) {
$result = mysql_query("UPDATE `news` SET `count`=`count`-1 WHERE `id`='" .$id. "';");
$result2 = mysql_query("DELETE FROM `news` WHERE `id`='" .$id. "';");
$result3 = mysql_query ("DELETE FROM `komm` WHERE `id_news`='" .$id. "';");
if ($result = true && $result2 = true && $result3 == true){
header('Location: '.$home.'/news.html');
}
else {
echo 'Ошибка удаление новости';
}
}
echo '<div class="title"><form action="news.html?mod=del&id=' .$id. '" method="post">
Вы действительно желаете удалить новость ?<br />
<input type="submit" name="submit" value="Удалить"/>
</form><br/>
<a href="'.$home.'/news.html">Назад</a></div>';
break;
# Редактирование новостей #
case 'edit' :
if (!$allow) exit ('Доступ закрыт !');
echo '<div class="zag">Редактирование новостей</div>';
if (isset($_POST['go'])) {
if (empty($_POST['name'])) {
$error[1] = 'Вы не ввели заголовок новости !';
}
if (empty($_POST['text'])) {
$error[2] = 'Вы не ввели текст новости !';
}
if (!empty($error)) {
echo '<div class="title">';
foreach($error as $value) {
echo "<b>$value</b> <br />";
}
}
else {
//Обрезаем заголовк и текст новости
$name = substr($_POST['name'], 0, 100);
$text = substr($_POST['text'], 0, 500);
// Фильтрируем переменные и заносим данные в базу
$name = htmlspecialchars(trim($_POST['name']));
$text = htmlspecialchars(trim($_POST['text']));
$result = mysql_query("UPDATE `news` SET
`name`='" . mysql_real_escape_string($name). "',
`text`='".mysql_real_escape_string($text)."'
WHERE `id`='".$id."';");
if ($result == true) {
header('Location: '.$home.'/news.html');
}
else {exit ('Ошибка добавление новости в базу данных');}
}
}
$ms = mysql_fetch_array(mysql_query("SELECT `text` , `name` FROM `news` WHERE id='" .$id. "' ;"));
echo '<div class="title"><form action = "news.html?mod=edit&id='.$id.'" method = "post" name = "form">
Заголовок <small>[max 100]</small><br/>
<input name="name" type="text" maxlength="100" value="'.$ms['name'].'" /><br/>
Комментарий <small>[max 500]</small><br/>
<textarea rows="3" name="text" >'.$ms['text'].'</textarea><br/>
<input name="go" type="submit" value="Изменить" />
</form></div>';
break;
# Добавление комментариев #
case 'add_komm' :
echo "<script type='text/javascript'>
function reload(){
src=document.captcha.src;
document.captcha.src='loading.gif';
document.captcha.src=src+'?rand='+Math.random();
}
</script>
";
// Статус комментариев
if ($set_news['komm'] == false && (!$allow)) {
echo 'Комментарии закрыты администратором';
echo '<div class="main"><a href="'.$home.'">Главная</a></div>';
require_once ('inc/foot.php');
exit;
}
echo '<div class="zag">Добавление комментариев</div>';
if (isset($_POST['go'])) {
$ASPAM = new anti_spam($_POST['text'],$ASET['status_news'],$ASET['security_level'],$ASET['type_level']);
if (empty($_POST['name'])) $error[1] = 'Вы не заполнили поле "Ваш ник"';
if (empty($_POST['text'])) $error[2] = 'Вы не заполнили поле "Комментарий"';
// Проверяем введенное число
$code = isset($_POST['code']) ? trim($_POST['code']) : '';
if (empty($code) || $code != $_SESSION['code']) {
$error[5] = 'Защитный код введен неверно !';
}
unset($_SESSION['code']);
if (empty($_POST['code'])) {
$error[6] = 'Вы не ввели защитный код';
}
$bol = $ASPAM->check_msg();
$typ = $ASPAM->check_type();
if ($bol) {
$error[7] = 'Автоматическая блокировка. Запрещено в сообщении писать ссылки<br/>';
}
if (!empty($error)) {
echo '<div class="error">';
foreach($error as $value) {
echo $value.'<br/>';
}
echo '</div>';
}
else {
// ip
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))$ip = htmlspecialchars($_SERVER['HTTP_X_FORWARDED_FOR']);
elseif(isset($_SERVER['REMOTE_ADDR'])) $ip = htmlspecialchars($_SERVER['REMOTE_ADDR']);
else $ip = 'Не определн';
// User agent
if (isset($_SERVER['HTTP_USER_AGENT'])) $ua = htmlspecialchars($_SERVER['HTTP_USER_AGENT']);
else $ua = 'Не определен';
// Система антифлуда
$spam = $set_news['antiflood'];
$antiflood = mysql_query("SELECT COUNT(*) FROM `komm` WHERE `id_news`='" .$id. "' AND `date` >='" . ($time - $spam) . "' AND `ip` = '".ip2int($ip)."' AND `browser` = '".mysql_real_escape_string($ua)."'");
$flood = mysql_result($antiflood, 0) > 0 ? 1 : false;
if ($flood) {
echo '<div class="title"><b>Антиспам !</b> Запрещенно часто добавлять сообщения ! <small>[порог '.$spam.' секунд]</small><br/>
<a href="/comments-'.$id.'.html">Назад</a></div>';
require_once ("inc/foot.php");
exit;
}
$name = htmlspecialchars(trim($_POST['name']));
$text = htmlspecialchars(trim($_POST['text']));
$result = mysql_query("insert into `komm` SET
`text`='" . mysql_real_escape_string($text) . "',
`id_news`='".$id."',
`date`='" . $time . "',
`ip`='" .ip2int($ip). "',
`browser`='" . $ua . "',
`name`='" . mysql_real_escape_string($name) . "';");
$result2 = mysql_query("UPDATE `news` SET `count`=`count`+1 WHERE id='".$id."';");
if ($result == true && $result2 == true) {header('Location: '.$home.'/comments-'.$id.'.html');}
else {
exit ('Ошибка добавления отзыва в базу данных');
}
}
}
echo '<div class="title"><form action = "/comments-'.$id.'/add.html" method = "post" name = "form">
Ваш ник <small>[max 100]</small><br/>
<input name="name" type="text" maxlength="100" value="" /><br/>
Комментарий <small>[max 255]</small><br/>
<textarea rows="3" name="text"></textarea><br/>
<small>Введите число с картинки</small><br/><img src="'.$home.'/captcha.php" name="captcha" alt="код"/><a href="javascript:void(0)" onclick="reload()">Обн</a><br/>
<input name="code" type="text" size="4" maxlength="6" /><br/>
<input name="go" type="submit" value="Добавить" />
</form></div>';
break;
case 'del_all_komm' :
# Удаление всех комментариев новости #
if (!$allow) exit ('Доступ закрыт !');
echo '<div class="zag" Удаление всех комментариев новости</div>';
if (isset($_POST['submit'])) {
$result2 = mysql_query("UPDATE `news` SET `count`='0' WHERE `id`='" .$id. "';");
$result = mysql_query("DELETE FROM `komm` WHERE `id_news`='" .$id. "';");
if ($result2 == true && $result == true){
header('Location: '.$home.'/comments-'.$id.'.html');
}
else {echo 'Ошибка удаление всех комментариев . Код ошибки <br/>'.mysql_error();}
} else {
echo '<div class="title"><form action="news.html?mod=del_all_komm&id=' .$id. '" method="post">
Вы действительно желаете удалить все комментарии ?<br />
<input type="submit" name="submit" value="Удалить"/>
</form><br/>
<a href="'.$home.'/comments-'.$id.'.html">Назад</a></div>';
}
break;
default :
echo '<div class="zag">Новости каталога</div>';
$num = $settings['on_page'];
$page = intval($_GET['page']);
$result = mysql_query('SELECT COUNT(*) FROM `news`');
$posts = mysql_result($result, 0);
$total = intval(($posts - 1) / $num) + 1;
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$result = mysql_query('SELECT * FROM `news` ORDER BY id DESC LIMIT '.$start.', '.$num.'');
if ($posts >0) {
while ($m = mysql_fetch_array($result))
{
$m['text'] = tags($m['text']);
$m['text'] = smileys($m['text']);
echo '<div class="title"><b>'.$m['name'].'</b> ['.date('d.m.y / H:i',$m['date']).']<br/>'.nl2br($m['text']).'<br/>';
if ($set_news['komm'] == true || $allow) echo '<a href="'.$home.'/comments-'.$m['id'].'.html">Комментарии</a> ('.$m['count'].')'; else echo '';
if ($allow) echo '<div class="min"><a href="'.$home.'/news.html?mod=edit&id='.$m['id'].'">Редактировать</a>|<a href="'.$home.'/news.html?mod=del&id='.$m['id'].'">Удалить</a></div>';
echo '</div>';
}
if ($page != 1) $pervpage = ' <a href= "news.html?page='. ($page - 1) .'">Назад</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href="news.html?page='. ($page + 1) .'">Вперед</a>';
if ($page !=1 AND $page != $total) $i = '|';
if ($page - 4 > 0) $first = '<a href="news.html?page=1">1</a>...';
if ($page + 4 <= $total) $last = '...<a href="news.html?page='.$total.'">'.$total.'</a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href= "news.html?page='. ($page - 2) .'">'. ($page - 2) .'</a> ';
if($page - 1 > 0) $page1left = '<a href= "news.html?page='. ($page - 1) .'">'. ($page - 1) .'</a> ';
if($page + 2 <= $total) $page2right = ' <a href= "news.html?page='. ($page + 2) .'">'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' <a href="news.html?page='. ($page + 1) .'">'. ($page + 1) .'</a>';
// Вывод меню
if ($posts > $num) {
echo '<div class="title"><small>Навигация :<br/>Страница '.$page.' из '.$total.'</small><br/>'.$pervpage.$i.$nextpage.'<br/>'.$first.$page2left.$page1left.'['.$page.']'.$page1right.$page2right.$last.'</div>';
}
}
else {
echo '<div class="title">Новостей нет</div>';
}
if ($allow) {
echo '<div class="func"><a href="'.$home.'/news.html?mod=add">Дабавить новость</a><br/>';
echo '<a href="'.$home.'/adm/?mod=news">Настройки</a></div>';
}
if ($allow) {
echo '<div class="func">'.(!$settings['news']? '<img src="images/red.png" alt="off"/><small>Модуль отключен для гостей !</small>' : '<small>Статус модуля</small> : <img src="images/green.png" alt="on"/> ').'</div>';
}
echo '<div class="zag">Всего новостей : '.$posts.'</div>';
}
echo '<div class="main"><a href="'.$home.'">Главная</a></div>';
require_once ('inc/foot.php');
?>