Размер файла: 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' ); ?>