View file news.php

File size: 16.92Kb
<?php  
define( 'WBCAT', 1 );
require_once ('inc/head.php');
if ($settings['news'] == false && !$allow) {
echo '<div class="title">Данный модуль закрыт администратором !</div>';
require_once ('inc/foot.php');
exit;
}
if ($allow) {
echo ''.($settings['news'] == false ? '<div class="title"><img src="images/red.png" alt="off"/><small> <b>Модуль отключен для гостей ! Включить можно в <a href="adm/index.php?mod=set">Общих настройках</a></b></small></div>' : '<div class="title"><small>Статус модуля</small> : <img src="images/green.png" alt="on"/></div> ').'';
}
//Проверка и фильтрация переменной $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; }
	}	
	

$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>';

// Формируем вывод комментариев + постраничная навигация
$num = $settings['on_page']; 
$page = intval($_GET['page']); 
$result = mysql_query('SELECT COUNT(*) FROM `komm` WHERE `id_news`="'.$id.'"'); 
$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 `komm` WHERE `id_news`='.$id.' ORDER BY `id` DESC LIMIT '.$start.', '.$num.''); 
if ($posts >0) {
while ($m = mysql_fetch_array($result))
{
            if ($setnews['bbcode'] == true or $allow) {
			    $m['text'] = tags($m['text']);
			}
			if ($setnews['smileys'] == true or $allow) {
			    $m['text'] = smileys($m['text']);   
			}  
                echo '<div class="title">'.$m['name'].' <small>['.date('d.m.y H:i',$m['date']).']</small><br/>'.nl2br($m['text']).'</div>';
       if ($allow) { 
           echo '<div class="min"><a href="adm/komm_news.php?mod=edit_komm&id='.$m['id'].'">[Ред]</a>|<a href="adm/komm_news.php?mod=del_komm&id='.$m['id'].'">[Уд]</a>
		   <br/><u>IP</u> : <i>'.int2ip($m['ip']).'</i><br/>
		         <u>USER AGENT</u> : <i>'.$m['browser'].'</i></div>';
        }
}

if ($page != 1) $pervpage = ' <a href= "news.php?mod=view&id='.$id.'&page='. ($page - 1) .'">Назад</a> '; 
// Проверяем нужны ли стрелки вперед 
if ($page != $total) $nextpage = ' <a href="news.php?mod=view&id='.$id.'&page='. ($page + 1) .'">Вперед</a>'; 
if ($page !=1 AND $page != $total) $i = '|';
if ($page - 4 > 0) $first = '<a href="news.php?mod=view&id='.$id.'&page=1">1</a>...';
if ($page + 4 <= $total) $last = '...<a href="news.php?mod=view&id='.$id.'&page='.$total.'">'.$total.'</a>';
// Находим две ближайшие станицы с обоих краев, если они есть 
if($page - 2 > 0) $page2left = ' <a href= "news.php?mod=view&id='.$id.'&page='. ($page - 2) .'">'. ($page - 2) .'</a> '; 
if($page - 1 > 0) $page1left = '<a href= "news.php?mod=view&id='.$id.'&page='. ($page - 1) .'">'. ($page - 1) .'</a> '; 
if($page + 2 <= $total) $page2right = ' <a href= "news.php?mod=view&id='.$id.'&page='. ($page + 2) .'">'. ($page + 2) .'</a>'; 
if($page + 1 <= $total) $page1right = ' <a href="news.php?mod=view&id='.$id.'&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) {
     if($posts>1) {echo '<div class="func"><a href="news.php?mod=del_all_komm&id='.$id.'">Удалить все комментарии</a></div>'; }
    }
echo '<div class="main"><a href="news.php?mod=add_komm&id='.$id.'">Добавить комментарий</a></div>';
echo '<div class="main"><a href="faq.php?mod=bbcode">Теги</a>|<a href="faq.php?mod=smileys">Смайлы</a></div>';
echo '<div class="main"><a href="news.php">К новостям</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: '.$settings['url'].'/news.php');
		        }
			          else {exit ('Ошибка добавление новости в базу данных');}
		        }
            }
         echo "<div class='zag'>
		 Добавление новости</div><div class='title'>
		 <form action='news.php?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><br/><a href='news.php'>Назад</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: '.$settings['url'].'/news.php');
				}
				    else {
				       echo 'Ошибка удаление новости';
				    }

            } 
              echo '<div class="title"><form action="news.php?mod=del&id=' .$id. '" method="post">
			  Вы действительно желаете удалить новость ?<br />
			  <input type="submit" name="submit" value="Удалить"/>
			  </form><br/>
			  <a href="'.$settings['url'].'/news.php">Назад</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: '.$settings['url'].'/news.php');
		        }
			          else {exit ('Ошибка добавление новости в базу данных');}
		        }
            }
$ms = mysql_fetch_array(mysql_query("SELECT `text` , `name` FROM `news` WHERE id='" .$id. "' ;"));
echo '<div class="title"><form action = "news.php?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' :

	// Статус комментариев
if ($setnews['komm'] == false && (!$allow)) {
echo 'Комментарии закрыты администратором';
echo '<div class="main"><a href="'.$settings['url'].'">Главная</a></div>';
require_once ('inc/foot.php');
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 />";
						} 
				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 = $setnews['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="news.php?mod=view&id='.$id.'">Назад</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: '.$settings['url'].'/news.php?mod=view&id='.$id.'');}
		 else {
		 exit ('Ошибка добавления отзыва в базу данных');
    }	
}
}
echo '<div class="title"><form action = "news.php?mod=add_komm&id='.$id.'" 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/>
<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: '.$settings['url'].'/news.php?mod=view&id='.$id.'');			
				}
					 else {echo 'Ошибка удаление всех комментариев . Код ошибки <br/>'.mysql_error();}

            } else {

echo '<div class="title"><form action="news.php?mod=del_all_komm&id=' .$id. '" method="post">
			Вы действительно желаете удалить все комментарии ?<br />
			<input type="submit" name="submit" value="Удалить"/>
			</form><br/>
			<a href="'.$settings['url'].'/news.php?mod=view&id='.$id.'">Назад</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 ($setnews['komm'] == true || $allow) echo '<a href="news.php?mod=view&id='.$m['id'].'">Комментарии</a> ('.$m['count'].')</div>'; else echo '</div>';
     if ($allow) echo '<div class="min"><a href="news.php?mod=edit&id='.$m['id'].'">Редактировать</a>|<a href="news.php?mod=del&id='.$m['id'].'">Удалить</a></div>';   
}

if ($page != 1) $pervpage = ' <a href= "news.php?page='. ($page - 1) .'">Назад</a> '; 
// Проверяем нужны ли стрелки вперед 
if ($page != $total) $nextpage = ' <a href="news.php?page='. ($page + 1) .'">Вперед</a>'; 
if ($page !=1 AND $page != $total) $i = '|';
if ($page - 4 > 0) $first = '<a href="news.php?page=1">1</a>...';
if ($page + 4 <= $total) $last = '...<a href="news.php?page='.$total.'">'.$total.'</a>';
// Находим две ближайшие станицы с обоих краев, если они есть 
if($page - 2 > 0) $page2left = ' <a href= "news.php?page='. ($page - 2) .'">'. ($page - 2) .'</a> '; 
if($page - 1 > 0) $page1left = '<a href= "news.php?page='. ($page - 1) .'">'. ($page - 1) .'</a> '; 
if($page + 2 <= $total) $page2right = ' <a href= "news.php?page='. ($page + 2) .'">'. ($page + 2) .'</a>'; 
if($page + 1 <= $total) $page1right = ' <a href="news.php?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="news.php?mod=add">Дабавить новость</a></div>';
echo '<div class="zag">Всего новостей : '.$posts.'</div>';
}
echo '<div class="main"><a href="'.$settings['url'].'">Главная</a></div>';
require_once ('inc/foot.php');
?>