View file index.php

File size: 15.34Kb
<?php 
// by mides, 1da.su

$title = 'Новости';
require_once 'sys.php';
require_once 'header.php';

switch ($_GET['act']) {
	default:
		$order = intval($_REQUEST['order']) ? abs($_REQUEST['order']) : 0;
		switch ($order) {
			case '1': $order_by = 'rating'; break;
			case '2': $order_by = 'views'; break;
			default: $order_by = 'time'; break;
		}
		echo '<div class="title">Новости</div><div class="list">';
		$all_news = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `news`"), 0);
		if ($all_news > 0) {
			$pages = ceil($all_news / $set['onpage']);
			$page = intval($_GET['p']) ? abs($_GET['p']) : 1;
			$begin = ($page - 1) * $set['onpage'];
			
			$news_r = mysql_query("SELECT * FROM `news` ORDER BY $order_by DESC LIMIT $begin, $set[onpage]");
			while ($news = mysql_fetch_assoc($news_r)) {
				if (!isset($num) ) $num = 1;  
				$num++;
				$row_class = (!($num % 2)) ? 'row1' : 'row2';	
				
				if (iconv_strlen($news['text'], 'utf-8') > $set['symbol']) $dots = '...';
				
				mb_internal_encoding('UTF-8');
				echo '<div class="'.$row_class.'"><a href="index.php?act=view&amp;id='.$news['id'].'"><b>'.$news['title'].'</b></a>: '.date('d.m.Y, H:i', $news['time']).'<br />'.bb(mb_substr($news['text'], 0, $set['symbol'])).$dots.'<br />';
				if ($set['comm'] == 1) {
					$comm = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `news_comm` WHERE `id_news` = '$news[id]'"), 0);
					echo '<a href="index.php?act=comm&amp;id='.$news['id'].'">Комментарии</a> ('.$comm.')';
				}
				echo '</div>';
			}
		} else {
			echo 'Новостей еще нет<br />';
		}
		echo '<br />Сортировать по: <a href="index.php?order=1">рейтингу</a> / <a href="index.php?order=2">просмотру</a><br />';
		if ($set['comm'] == 1) echo '<a href="index.php?act=last">Последние комментарии</a><br />';
		if ($ulogin) echo '<a href="a.php?act=main">Админка</a>';
		navig($page, 'index.php?order='.$order.'&amp;', $pages);
		nav_main();
	break;

	case 'comm':
		if ($set['comm'] == 0) header('location: ?');
		$id = abs(intval($_REQUEST['id']));
		$news = mysql_fetch_assoc(mysql_query("SELECT * FROM `news` WHERE `id` = '$id'"));
		if ($news['id']) {
			echo '<div class="title">'.$news['title'].'</div><div class="list">';
			$count_comm = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `news_comm` WHERE `id_news` = '$id'"), 0);
			if ($count_comm > 0) {
				$pages = ceil($count_comm / $set['onpage']);
				$page = intval($_REQUEST['p']) ? abs($_REQUEST['p']) : 1;
				$begin = ($page - 1) * $set['onpage'];
				
				$comm_r = mysql_query("SELECT * FROM `news_comm` WHERE `id_news` = '$id' ORDER BY `time` DESC LIMIT $begin, $set[onpage]");
				while ($comm = mysql_fetch_assoc($comm_r)) {
					if (!isset($num) ) $num = 1;  
					$num++;
					$row_class = (!($num % 2)) ? 'row1' : 'row2';	
					echo '<div class="'.$row_class.'">';
				
					echo '<a href="index.php?act=info&amp;id='.$comm['id'].'">'.$comm['login'].'</a> '.date('d.m.y, H:i', $comm['time']).' <a href="?act=reply&amp;id='.$comm['id'].'">Отв</a>';
					if ($ulogin) echo '|<a href="?act=edit&amp;id='.$comm['id'].'">Ред</a>|<a href="?act=del&amp;id='.$comm['id'].'">Уд</a>';
					echo '<br />'.bb($comm['text']);
					if ($comm['edit_time']) echo '<br />_______<br /><span style="font-size: 10px;">отредактировано: '.$ulogin.' ('.date('d.m.y, H:i', $comm['edit_time']).' )</span>';
					echo '</div>';
				}
				navig($page, '?act=comm&amp;id='.$id.'&amp;', $pages);
			} else {
				echo 'Комментарий к этой новости еще нет.';
			}
			echo '</div>';
			
			if ($set['comm'] == 1) {
				echo '<div class="main">';
				if (empty($news['closed'])) {
					echo '<form action="?act=add&amp;id='.$id.'" method="post">';
					if (!$ulogin) echo 'Имя(max20):<br /><input name="login" type="text" maxlength="20" /><br />';
					echo 'Текст(max250)*:<br /><textarea name="msg" cols="" rows="3"></textarea>';
					if (!$ulogin) {
						echo 'Введите <img src="code.php?'.session_name().'='.session_id().'" alt="" />*:<br/>
						<input name="code" maxlength="5" size="12" /><br />';
					}
					echo '<input name="" type="submit" value="Написать">
					</form>';
				} else {
					echo 'Комментирование этой новости закрыто.';
				}
				echo '</div>';
			}
		} else {
			error('Новость не существует или она была удалена.');
		}
		nav2('?act=view&amp;id='.$id, 'Вернуться к новости');
	break;
	
	case 'add':
		if ($set['comm'] == 0) header('location: ?');
		$id = abs(intval($_REQUEST['id']));
		$news = mysql_fetch_assoc(mysql_query("SELECT * FROM `news` WHERE `id` = '$id'"));
		if ($news['id']) {
			if ($news['closed'] == 1) header('location: ?');
			$msg = check($_POST['msg']);
			$agent = check($_SERVER['HTTP_USER_AGENT']);
			$ip = check($_SERVER['REMOTE_ADDR']);
			if ($ulogin) {
				if ($_POST['msg']) {
					$msg = check($_POST['msg']);
					mysql_query("INSERT INTO `news_comm` SET `id_news` = '$id', `login` = '$ulogin', `text` = '$msg', `time` = '".time()."', `agent` = '$agent', `ip` = '$ip'");
					header('location: ?act=comm&id='.$id);
				} else {
					error('Вы не заполнили поле.');
					nav('?act=comm&amp;id='.$id);
				}
			} else {
				if ($_POST['msg'] and $_POST['code']) {
					$login = check($_POST['login']);
					$code = intval($_POST['code']);
					if ($_SESSION['checkcode'] == $code) {
						if (time() > $_SESSION['antispam']) {
							if ($set['alternate'] == 0) {
								$prev_comm_r = mysql_query("SELECT `text` FROM `news_comm` WHERE `id_news` = '$id' ORDER BY `time` DESC LIMIT 1");
								$prev_comm = mysql_fetch_assoc($prev_comm_r);
							}
							if ($prev_comm['text'] != $msg) {
								if (empty($login)) $login = 'Гость';
								mysql_query("INSERT INTO `news_comm` SET `id_news` = '$id', `login` = '$login', `text` = '$msg', `time` = '".time()."', `agent` = '$agent', `ip` = '$ip'");
								$_SESSION['antispam'] = time() + $set['antispam'];
								header('location: ?act=comm&id='.$id);
							} else {
								error('Нельзя дублировать сообщения.');
								nav('?act=comm&amp;id='.$id);
							}
						} else {
							error('Антиспам. Разрешено писать раз в '.$set['antispam'].' сек.');
							nav('?act=comm&amp;id='.$id);
						}
					} else {
						error('Неверный код.');
						nav('?act=comm&amp;id='.$id);
					}
				} else {
					error('Вы не заполнили поля.');
					nav('?act=comm&amp;id='.$id);
				}
			}
		} else {
			error('Новость не существует или она была удалена.');
			nav2('?', 'К новостям');
		}
	break;
	
	case 'reply':
		if ($set['comm'] == 0) header('location: ?');
		$id = intval($_REQUEST['id']);
		$comm_r = mysql_query("SELECT * FROM `news_comm` WHERE `id` = '$id'");
		$comm = mysql_fetch_assoc($comm_r);
		
		// if closed, redirect to ?
		$news = mysql_fetch_assoc(mysql_query("SELECT `closed` FROM `news` WHERE `id` = '$comm[id_news]'"));
		if ($news['closed'] == 1) header('location: ?');
		
		if ($comm['id']) {
			if ($_REQUEST['ok']) {
				if ($ulogin) {
					if ($_POST['text']) {
						$text = check($_POST['text']);
						mysql_query("INSERT INTO `news_comm` SET `id_news` = '$comm[id_news]', `login` = '$ulogin', `text` = '$text', `time` = '".time()."'");
						header('location: ?act=comm&id='.$comm['id_news']);
					} else {
						error('Вы не заполнили поле.');
						nav('?act=reply&amp;id='.$id);
					}
				} else {
					if (time() > $_SESSION['antispam']) {
						if ($_POST['text'] and $_POST['code']) {
							$login = check($_POST['login']);
							if (empty($login)) $login = 'Гость';
							$text = check($_POST['text']);
							$code = check($_POST['code']);
							$agent = check($_SERVER['HTTP_USER_AGENT']);
							$ip = check($_SERVER['REMOTE_ADDR']);
							if ($_SESSION['checkcode'] == $code) {
								if ($set['alternate'] == 0) {
									$prev_comm_r = mysql_query("SELECT `text` FROM `news_comm` WHERE `id_news` = '$id' ORDER BY `time` DESC LIMIT 1");
									$prev_comm = mysql_fetch_assoc($prev_comm_r);
								}
								if ($prev_comm['text'] != $text) {
									mysql_query("INSERT INTO `news_comm` SET `id_news` = '$comm[id_news]', `login` = '$login', `text` = '$text', `time` = '".time()."', `agent` = '$agent', `ip` = '$ip'");
									$_SESSION['antispam'] = time() + $config['antispam'];
									header('location: ?act=comm&id='.$comm['id_news']);
								} else {
									error('Нельзя дублировать сообщения.');
									nav('?act=reply&amp;id='.$id);
								}
							} else {
								error('Неверный код.');
								nav('?act=reply&amp;id='.$id);
							}
						} else {
							error('Вы не заполнили поля.');
							nav('?act=reply&amp;id='.$id);
						}
					} else {
						error('Антиспам. Разрешено писать раз в '.$config['antispam'].' сек.');
						nav('?act=comm&amp;id='.$comm['id_news']);
					}
				}
			} else {
				tp('Ответ на сообщение');
				echo '<form action="?act=reply&amp;id='.$id.'&amp;ok=1" method="post">';
				if (!$ulogin) echo 'Имя(max20):<br /><input name="login" type="text" maxlength="20" /><br />';
				echo 'Сообщение(max250)*:<br /><textarea name="text" cols="" rows="3">[b]'.$comm['login'].'[/b], </textarea><br />';
				if (!$ulogin) {
					echo 'Введите <img src="code.php?'.session_name().'='.session_id().'" alt="" />*:<br/>
					<input name="code" maxlength="5" size="12" /><br />';
				}
				echo '<input name="submit" type="submit" value="Ok" />
				</form>';
				nav('?act=comm&amp;id='.$comm['id_news']);
			}
		} else {
			error('Комментарий, на которое вы хотите ответить, не существует.');
			nav2('?', 'К новостям');
		}
	break;
	
	case 'edit':
		if ($ulogin) {
			$id = intval($_REQUEST['id']);
			$comm_r = mysql_query("SELECT * FROM `news_comm` WHERE `id` = '$id'");
			$comm = mysql_fetch_assoc($comm_r);
			if ($comm['id_news']) {
				tp('Редактирование комментария');
				if (empty($_REQUEST['ok'])) {
					echo '<form action="?act=edit&amp;id='.$id.'&amp;ok=1" method="post">
					Сообщение(max250):<br /><textarea name="text" cols="" rows="3">'.$comm['text'].'</textarea>
					<input name="submit" type="submit" value="Ok" />
					</form>';
					nav('?act=comm&amp;id='.$comm['id_news']);
				} else {
					if ($_POST['text']) {
						$text = check($_POST['text']);
						mysql_query("UPDATE `news_comm` SET `id_news` = '$comm[id_news]', `text` = '$text', `edit_time` = '".time()."' WHERE `id` = '$id'");
						header('location: ?act=comm&id='.$comm['id_news']);
					} else {
						echo 'Вы не заполнили поле.';
						nav('?act=edit&amp;id='.$id);
					}
				}
			} else {
				error('Комментарий не существует.');
				nav2('?', 'К новостям');
			}
		} else {
			header('location: ?');
		}
	break;
	
	case 'del':
		if ($ulogin) {
			$id = intval($_REQUEST['id']);
			$comm_r = mysql_query("SELECT `id_news` FROM `news_comm` WHERE `id` = '$id'");
			$comm = mysql_fetch_assoc($comm_r);
			if ($comm['id_news']) {
				mysql_query("DELETE FROM `news_comm` WHERE `id` = '$id'");
				header('location: ?act=comm&id='.$comm['id_news']);
			} else {
				header('location: ?');
			}
		} else {
			header('location: ?');
		}
	break;	
	
	case 'main':
		header('location: http://'.$set['main']);
	break;
	
	case 'info':
		$id = abs(intval($_REQUEST['id']));
		$comm_r = mysql_query("SELECT `id_news`, `login`, `agent`, `ip` FROM `news_comm` WHERE `id` = '$id'");
		$comm = mysql_fetch_assoc($comm_r);
		if ($comm['id_news'] and $comm['login'] != $set['login'] or isset($ulogin)) {
			tp('Инфо о авторе комментария');
			echo '<b>Agent:</b><br />'.$comm['agent'].'<br /><b>IP:</b> '.$comm['ip'].'<br />';
			nav('?act=comm&amp;id='.$comm['id_news']);
		} else {
			error('Комментарий не существует или информация недоступна.');
			nav2('?', 'К новостям');
		}
	break;
	
	case 'view':
		$id = abs(intval($_REQUEST['id']));
		$news_r = mysql_query("SELECT * FROM `news` WHERE `id` = '$id'");
		$news = mysql_fetch_assoc($news_r);
		if ($news['id']) {
			if (empty($_SESSION['views'.$id])) {
				$_SESSION['views'.$id] = $id;
				mysql_query("UPDATE `news` SET `views` = (`views` + 1) WHERE `id` = '$id'");
			}
			if ($ulogin) $edit = ' (<a href="a.php?act=edit&amp;id='.$id.'">ред</a>)';
			tp($news['title'].$edit);
			echo bb($news['text']).'<br />
			<i>Добавлено: '.date('d.m.y, H:i', $news['time']).'</i><br /><br />
			Рейтинг: <a href="?act=rating&amp;id_news='.$news['id'].'&amp;id=1"><img src="thumb-up.gif"></a> '.$news['rating'].' <a href="?act=rating&amp;id_news='.$news['id'].'&amp;id=2"><img src="thumb-down.gif"></a><br />
			Просмотров: '.$news['views'].'<br />';
			if ($set['comm'] == 1) {
				$comm = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `news_comm` WHERE `id_news` = '$news[id]'"), 0);
				echo '<a href="?act=comm&amp;id='.$id.'">Комментарии</a> ('.$comm.')';
			}
		} else {
			error('Выбранная новость не существует.');
		}
		nav2('?', 'К новостям');
	break;
	
	case 'rating':
		$id_news = abs(intval($_REQUEST['id_news']));
		$id = abs(intval($_REQUEST['id']));
		if (empty($_SESSION['rating'.$id_news])) {
			if ($id == 1) {
				mysql_query("UPDATE `news` SET `rating` = (`rating` + 1) WHERE `id` = '$id_news'");
			} elseif ($id == 2) {
				mysql_query("UPDATE `news` SET `rating` = (`rating` - 1) WHERE `id` = '$id_news'");
			}
			$_SESSION['rating'.$id_news] = $id_news;
			header('location: ?act=view&id='.$id_news);
		} else {
			error('Вы уже голосовали за эту новость.');
			nav('?act=view&amp;id='.$id_news);
		}
	break;
	
	case 'last':
		echo '<div class="title">Последнии комментарии</div><div class="list">';
		$allcomm = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `news_comm`"), 0);
		if ($allcomm > 0) {
			$pages = ceil($allcomm / $set['onpage']);
			$page = intval($_GET['p']) ? abs($_GET['p']) : 1;
			$begin = ($page - 1) * $set['onpage'];
			
			$comm_r = mysql_query("SELECT * FROM `news_comm` ORDER BY `time` DESC LIMIT $begin, $set[onpage]");
			while ($comm = mysql_fetch_assoc($comm_r)) {
				if (!isset($num) ) $num = 1;  
				$num++;
				$row_class = (!($num % 2)) ? 'row1' : 'row2';	
				
				if (iconv_strlen($comm['text'], 'utf-8') > 25) $dots = '...';
				
				mb_internal_encoding('UTF-8');
				echo '<div class="'.$row_class.'">'.$comm['login'].': '.bb(mb_substr($comm['text'], 0, 15)).$dots.' ('.date('d.m.Y, H:i', $comm['time']).')<a href="?act=comm&amp;id='.$comm['id_news'].'">&raquo;</a></div>';
			}
		} else {
			echo 'Комментарий еще нет<br />';
		}
		navig($page, '?act=last&amp;', $pages);
		nav2('?', 'К новостям');
	break;
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
}

require_once 'tail.php';
?>