<?
session_start();
include("./config.inc.php");
IF($_SESSION['logged']!='1') {header("Location: ./auth.php"); exit;};

$tpl=new Template();
$tpl->define(array(
	"head"=>"head.tpl",
	"index"=>"adm_index.tpl",
	"edit_index"=>"adm_edit_index.tpl",
	"users_index"=>"adm_us_index.tpl",
	"edit_mes"=>"adm_edit_mes.tpl",
	"edit_rep"=>"adm_edit_rep.tpl",
	"edit_us"=>"adm_edit_us.tpl",
	"list_mes"=>"adm_list_mes.tpl",
	"list_rep"=>"adm_list_rep.tpl",
	"list_us"=>"adm_list_us.tpl",
	"error"=>"error.tpl",
	"foot"=>"foot.tpl"
));
$start=$tpl->utime();
$tpl->assign("{SCRIPT}", $PHP_SELF);
$tpl->assign("{ADM_MENU}", "--- [ <a href='./'>гостевая</a> ] [ <a href='".$PHP_SELF."'>main menu</a> ]");

SWITCH($_GET['mode']) {
	default:
	$tpl->assign("{TITLE}", "- admin section");
	$tpl->parse("HEAD", "head");
	$tpl->parse("INDEX", "index");
	$tpl->FastPrint("HEAD");
	$tpl->FastPrint("INDEX");
	break;

	case 'mass':
		SWITCH($_POST['act']) {
			default:
			header("Location: ".$PHP_SELF."?mode=edit"); exit;
			break;

			case 'del':
				if(!is_array($_POST['ids'])) {
					header("Location: ".$PHP_SELF."?mode=edit"); exit;
				} else{
					$m=sql();
						for($i=0;$i<count($_POST['ids']);$i++) {
						mysql_query("DELETE FROM ".$GLOBALS['tbl_posts']." WHERE id='".$_POST['ids'][$i]."'") or die(mysql_error());
						};
					mysql_close($m);
					header("Location: ".$PHP_SELF."?mode=edit"); exit;
				};
			break;

			case 'show':
				if(!is_array($_POST['ids'])) {
					header("Location: ".$PHP_SELF."?mode=edit"); exit;
				} else{
					$m=sql();
						for($i=0;$i<count($_POST['ids']);$i++) {
						mysql_query("UPDATE ".$GLOBALS['tbl_posts']." SET flag='1' WHERE id='".$_POST['ids'][$i]."'") or die(mysql_error());
						};
					mysql_close($m);
					header("Location: ".$PHP_SELF."?mode=edit"); exit;
				};
			break;

			case 'hide':
				if(!is_array($_POST['ids'])) {
					header("Location: ".$PHP_SELF."?mode=edit"); exit;
				} else{
					$m=sql();
						for($i=0;$i<count($_POST['ids']);$i++) {
						mysql_query("UPDATE ".$GLOBALS['tbl_posts']." SET flag='0' WHERE id='".$_POST['ids'][$i]."'") or die(mysql_error());
						};
					mysql_close($m);
					header("Location: ".$PHP_SELF."?mode=edit"); exit;
				};
			break;
		};
	break;

	case 'reply':
	IF(!isset($_GET['id'])) {
		header("Location: ".$PHP_SELF."?mode=edit"); exit;
	} ELSE{
		$m=sql();
		$q=mysql_query("SELECT poster,email,text FROM ".$GLOBALS['tbl_posts']." WHERE id='".$_GET['id']."' LIMIT 1") or die(mysql_error());
		list($author,$email,$text)=mysql_fetch_row($q);
		mysql_free_result($q);
		$q=mysql_query("SELECT id,reply,poster FROM ".$GLOBALS['tbl_replies']." WHERE parent='".$_GET['id']."' AND poster='".$_SESSION['id']."' LIMIT 1") or die(mysql_error());
			if(mysql_num_rows($q)!='0') {
				list($_id,$_reply,$_poster)=mysql_fetch_row($q);
					$c=mysql_query("SELECT login FROM ".$GLOBALS['tbl_users']." WHERE id='".$_poster."' LIMIT 1") or die(mysql_error());
					list($_login)=mysql_fetch_row($c);
					mysql_free_result($c);
				if(!isset($_POST['submit'])) {
						$tpl->assign("{TITLE}", "- admin section - Replying");
						$tpl->assign("{ID}", $_GET['id']);
						$tpl->assign("{REP_ID}", $_id);
						$tpl->assign("{POSTER}", $author);
						$tpl->assign("{EMAIL}", $email);
						$tpl->assign("{TEXT}", $text);
						$tpl->assign("{REP_POSTER}", $_login);
						$tpl->assign("{REPLY}", $_reply);
						$tpl->parse("HEAD", "head");
						$tpl->parse("INDEX", "edit_rep");
						$tpl->FastPrint("HEAD");
						$tpl->FastPrint("INDEX");
				} else{
					mysql_query("UPDATE ".$GLOBALS['tbl_replies']." SET reply='".$_POST['reply']."',create_time='".time()."' WHERE id='".$_POST['rep_id']."'") or die(mysql_error());
					header("Location: ".$PHP_SELF."?mode=edit"); exit;
				};
			} else{
				$c=mysql_query("SELECT login FROM ".$GLOBALS['tbl_users']." WHERE id='".$_SESSION['id']."' LIMIT 1") or die(mysql_error());
				list($_login)=mysql_fetch_row($c);
				mysql_free_result($c);
				if(!isset($_POST['submit'])) {
					$tpl->assign("{TITLE}", "- admin section - Replying");
					$tpl->assign("{ID}", $_GET['id']);
					$tpl->assign("{REP_ID}", "");
					$tpl->assign("{POSTER}", $author);
					$tpl->assign("{EMAIL}", $email);
					$tpl->assign("{TEXT}", $text);
					$tpl->assign("{REP_POSTER}", $_login);
					$tpl->assign("{REPLY}", "");
					$tpl->parse("HEAD", "head");
					$tpl->parse("INDEX", "edit_rep");
					$tpl->FastPrint("HEAD");
					$tpl->FastPrint("INDEX");
				} else{
					if(empty($_POST['reply'])) {
						$tpl->assign("{ERROR}", "Вы ничего не ввели в поле 'Ответ'.");
						$tpl->parse("ERROR", "error");
						$tpl->FastPrint("ERROR");
						exit;
					};
					mysql_query("INSERT INTO ".$GLOBALS['tbl_replies']." VALUES('','".$_GET['id']."','".$_SESSION['id']."','".$_POST['reply']."','".time()."')") or die(mysql_error());
					header("Location: ".$PHP_SELF."?mode=edit"); exit;
				};
			};
		mysql_free_result($q);
		mysql_close($m);
	};
	break;

	case 'show':
	IF(!isset($_GET['id'])) {
		header("Location: ".$PHP_SELF."?mode=edit"); exit;
	} ELSE{
		$m=sql();
		mysql_query("UPDATE ".$GLOBALS['tbl_posts']." SET flag='1' WHERE id='".$_GET['id']."'") or die(mysql_error());
		mysql_close($m);
		header("Location: ".$PHP_SELF."?mode=edit"); exit;
	};
	break;

	case 'hide':
	IF(!isset($_GET['id'])) {
		header("Location: ".$PHP_SELF."?mode=edit"); exit;
	} ELSE{
		$m=sql();
		mysql_query("UPDATE ".$GLOBALS['tbl_posts']." SET flag='0' WHERE id='".$_GET['id']."'") or die(mysql_error());
		mysql_close($m);
		header("Location: ".$PHP_SELF."?mode=edit"); exit;
	};
	break;

	case 'del':
	IF(!isset($_GET['id'])) {
		header("Location: ".$PHP_SELF."?mode=edit"); exit;
	} ELSE{
		$m=sql();
		mysql_query("DELETE FROM ".$GLOBALS['tbl_posts']." WHERE id='".$_GET['id']."'") or die(mysql_error());
		mysql_close($m);
		header("Location: ".$PHP_SELF."?mode=edit"); exit;
	};
	break;

	case 'edit':
	IF(!isset($_GET['id'])) {
		$m=sql();
		$q=mysql_query("SELECT * FROM ".$GLOBALS['tbl_posts']." ORDER BY create_time DESC") or die(mysql_error());
		$tpl->assign("{TITLE}", "- admin section - Editing");
		$tpl->parse("HEAD", "head");
		$tpl->FastPrint("HEAD");
		while($row=mysql_fetch_array($q)) {
			$c=mysql_query("SELECT * FROM ".$GLOBALS['tbl_replies']." WHERE parent='".$row['id']."' ORDER BY create_time DESC") or die(mysql_error());
				if(mysql_num_rows($c)>0) {
					while($rep=mysql_fetch_array($c)) {
						$u=mysql_query("SELECT login FROM ".$GLOBALS['tbl_users']." WHERE id='".$rep['poster']."' LIMIT 1") or die(mysql_error());
						list($poster)=mysql_fetch_row($u);
						mysql_free_result($u);
					$tpl->assign("{REP_AUTHOR}", $poster);
					$tpl->assign("{REPLY}", nl2br(htmlspecialchars($rep['reply'], ENT_QUOTES)));
					$tpl->parse("{REPLIES}", ".list_rep");
					$tpl->clear("{REPLIES}");
					};
					mysql_free_result($c);
				} else{
					$tpl->assign("{REPLIES}", "Ответов на это сообщение пока нет.");
				};
			if($row['flag']=='1') {
				$tpl->assign("{TD_STYLE}", "show");
				$tpl->assign("{SHOW_HIDE}", "<a href='".$PHP_SELF."?mode=hide&id=".$row['id']."'>спрятать</a>");
			} else{
				$tpl->assign("{TD_STYLE}", "hide");
				$tpl->assign("{SHOW_HIDE}", "<a href='".$PHP_SELF."?mode=show&id=".$row['id']."'>показать</a>");
			};
			$tpl->assign("{ID}", $row['id']);
			$tpl->assign("{POSTER}", $row['poster']);
			$tpl->assign("{EMAIL}", $row['email']);
			$tpl->assign("{TEXT}", nl2br(htmlspecialchars($row['text'], ENT_QUOTES)));
			$tpl->assign("{IP}", $row['ip']);
			$tpl->assign("{CREATE_TIME}", date('@ H:i:s o\n d-m-Y', $row['create_time']));
			
			$tpl->parse("{LISTING}", ".list_mes");
		};
		$tpl->parse("INDEX", "edit_index");
		$tpl->FastPrint("INDEX");
		mysql_free_result($q);
		mysql_close($m);
	} ELSE{
		if(!isset($_POST['submit'])) {
			$m=sql();
			$q=mysql_query("SELECT poster,text,email,flag FROM ".$GLOBALS['tbl_posts']." WHERE id='".$_GET['id']."' LIMIT 1") or die(mysql_error());
				if(mysql_num_rows($q)=='0') {
					$tpl->assign("{ERROR}", "Сообщения с таким ID не существует.");
					$tpl->parse("ERROR", "error");
					$tpl->FastPrint("ERROR");
					exit;
				} else{
					list($poster,$text,$email,$flag)=mysql_fetch_row($q);
						($flag=='1' ? $status="видимо" : $status="скрыто");
					$tpl->assign("{TITLE}", "- admin section - Editing msg #".$_GET['id']);
					$tpl->parse("HEAD", "head");
					$tpl->assign("{ID}", $_GET['id']);
					$tpl->assign("{POSTER}", $poster);
					$tpl->assign("{EMAIL}", $email);
					$tpl->assign("{TEXT}", $text);
					$tpl->assign("{STATUS}", $status);
					$tpl->parse("INDEX", "edit_mes");
					$tpl->FastPrint("HEAD");
					$tpl->FastPrint("INDEX");
				};
			mysql_free_result($q);
			mysql_close($m);
		} else{
			if(empty($_POST['nick'])) {
				$tpl->assign("{ERROR}", "Поле 'Nick' является обязательным. Вернитесь и заполните.");
				$tpl->parse("ERROR", "error");
				$tpl->FastPrint("ERROR");
				exit;
			};
			if(empty($_POST['mess'])) {
				$tpl->assign("{ERROR}", "Поле 'Message' является обязательным. Вернитесь и заполните.");
				$tpl->parse("ERROR", "error");
				$tpl->FastPrint("ERROR");
				exit;
			};
			$m=sql();
			mysql_query("UPDATE ".$GLOBALS['tbl_posts']." SET poster='".$_POST['nick']."',text='".$_POST['mess']."',email='".$_POST['email']."',flag='".$_POST['flag']."' WHERE id='".$_GET['id']."'") or die(mysql_error());
			mysql_close($m);
			header("Location: ".$PHP_SELF."?mode=edit"); exit;
		};
	};
	break;
	
	case 'users':
		SWITCH($_GET['act']) {
			case 'edit':
				IF(empty($_GET['id'])) {
					header("Location: ".$PHP_SELF."?mode=".$_GET['mode']); exit;
				} ELSE{
					if($_SESSION['id']!=$_GET['id'] && $_SESSION['id']!='1') {
						$tpl->assign("{ERROR}", "Вы не имеете права изменять данные этого пользователя!");
						$tpl->parse("ERROR", "error");
						$tpl->FastPrint("ERROR");
						exit;
					};

					if(!isset($_POST['submit'])) {
						$m=sql();
						$q=mysql_query("SELECT login,email FROM ".$GLOBALS['tbl_users']." WHERE id='".$_GET['id']."' LIMIT 1") or die(mysql_error());
						list($_login,$_email)=mysql_fetch_row($q);
						mysql_free_result($q);
						mysql_close($m);
						$tpl->assign("{TITLE}", "- admin section - Users - Создание нового модератора");
						$tpl->parse("HEAD", "head");
						$tpl->FastPrint("HEAD");
						$tpl->assign("{LOGIN}", $_login);
						$tpl->assign("{EMAIL}", $_email);
						$tpl->assign("{TEXT}", "Этот раздел для изменения данных уже существующих модераторов. Если вы желаете изменить пароль, то введите его два раза - если нет, оставьте поля пустыми.");
						$tpl->assign("{FORM}", $PHP_SELF."?mode=".$_GET['mode']."&act=".$_GET['act']."&id=".$_GET['id']);
						$tpl->assign("{PASS_TEXT}", "Если вы не собираетесь менять пароль, оставьте оба поля пустыми");
						$tpl->parse("INDEX", "edit_us");
						$tpl->FastPrint("INDEX");
					} else{
							if(empty($_POST['login'])) {
								$tpl->assign("{ERROR}", "Поле 'Login' является обязательным. Вернитесь и заполните.");
								$tpl->parse("ERROR", "error");
								$tpl->FastPrint("ERROR");
								exit;
							};
							
							if(empty($_POST['email'])) {
								$tpl->assign("{ERROR}", "Поле 'E-mail' является обязательным. Вернитесь и заполните.");
								$tpl->parse("ERROR", "error");
								$tpl->FastPrint("ERROR");
								exit;
							};

							if($_POST['p_1']!=$_POST['p_2']) {
								$tpl->assign("{ERROR}", "Введенные пароли не совпадают!");
								$tpl->parse("ERROR", "error");
								$tpl->FastPrint("ERROR");
								exit;
							};
							
							$m=sql();							
							if(empty($_POST['p_1'])) {
								mysql_query("UPDATE ".$GLOBALS['tbl_users']." SET login='".$_POST['login']."',email='".$_POST['email']."' WHERE id='".$_GET['id']."'") or die(mysql_error());
							} else{
								mysql_query("UPDATE ".$GLOBALS['tbl_users']." SET login='".$_POST['login']."',email='".$_POST['email']."' WHERE id='".$_GET['id']."',pass='".md5($_POST['p_1'])."'") or die(mysql_error());
							};
							mysql_close($m);
							header("Location: ".$PHP_SELF); exit;
					};
				};
			break;
			
			case 'del':
				IF(empty($_GET['id'])) {
					header("Location: ".$PHP_SELF."?mode=".$_GET['mode']); exit;
				} ELSE{
					$m=sql();
					$q=mysql_query("SELECT login FROM ".$GLOBALS['tbl_users']." WHERE id='1' LIMIT 1") or die(mysql_error());
					list($_login)=mysql_fetch_row($q);
					mysql_free_result($q);
					if($_SESSION['id']!='1') {
						$tpl->assign("{ERROR}", "Правом удаления пользователей обладает только <b>".$_login."</b>.");
						$tpl->parse("ERROR", "error");
						$tpl->FastPrint("ERROR");
						exit;
					};
					
					if($_GET['id']=='1') {
						$tpl->assign("{ERROR}", "Первая учетная запись не может быть удалена.");
						$tpl->parse("ERROR", "error");
						$tpl->FastPrint("ERROR");
						exit;
					};
						
					mysql_query("DELETE FROM ".$GLOBALS['tbl_users']." WHERE id='".$_GET['id']."'") or die(mysql_error());
					mysql_close($m);
					header("Location: ".$PHP_SELF); exit;
				};
			break;
			
			case 'new':
				if($_SESSION['id']!='1') {
					$m=sql();
					$q=mysql_query("SELECT login FROM ".$GLOBALS['tbl_users']." WHERE id='1' LIMIT 1") or die(mysql_error());
					list($_login)=mysql_fetch_row($q);
					mysql_free_result($q);
					$tpl->assign("{ERROR}", "Правом создания пользователей обладает только <b>".$_login."</b>.");
					$tpl->parse("ERROR", "error");
					$tpl->FastPrint("ERROR");
					exit;
				};

				if(!isset($_POST['submit'])) {
					$tpl->assign("{TITLE}", "- admin section - Users - Создание нового модератора");
					$tpl->parse("HEAD", "head");
					$tpl->FastPrint("HEAD");
					$tpl->assign("{LOGIN}", "");
					$tpl->assign("{EMAIL}", "");
					$tpl->assign("{TEXT}", "Здесь вы можете создать нового модератора. Все поля надо заполнить обязательно. Для пароля два поля - оба надо заполнить одинаково :)");
					$tpl->assign("{FORM}", $PHP_SELF."?mode=".$_GET['mode']."&act=".$_GET['act']);
					$tpl->assign("{PASS_TEXT}", "Заполните, пожалуйста, оба поля и запомните пароль. Ибо восстановить потом из базы забытый пароль не представляется возможным");
					$tpl->parse("INDEX", "edit_us");
					$tpl->FastPrint("INDEX");
				} else{
					if(empty($_POST['login'])) {
						$tpl->assign("{ERROR}", "Поле 'Login' является обязательным. Вернитесь и заполните.");
						$tpl->parse("ERROR", "error");
						$tpl->FastPrint("ERROR");
						exit;
					};
							
					if(empty($_POST['email'])) {
						$tpl->assign("{ERROR}", "Поле 'E-mail' является обязательным. Вернитесь и заполните.");
						$tpl->parse("ERROR", "error");
						$tpl->FastPrint("ERROR");
						exit;
					};

					if(empty($_POST['p_1'])) {
						$tpl->assign("{ERROR}", "Поля для пароля являются обязательными. Вернитесь и заполните.");
						$tpl->parse("ERROR", "error");
						$tpl->FastPrint("ERROR");
						exit;
					};

					if($_POST['p_1']!=$_POST['p_2']) {
						$tpl->assign("{ERROR}", "Введенные пароли не совпадают!");
						$tpl->parse("ERROR", "error");
						$tpl->FastPrint("ERROR");
						exit;
					};
					
					$m=sql();
					$q=mysql_query("SELECT * FROM ".$GLOBALS['tbl_users']." WHERE login='".$_POST['login']."' LIMIT 1");
					if(mysql_num_rows($q)>0) {
						$tpl->assign("{ERROR}", "Такая учетная запись уже существует в базе данных.");
						$tpl->parse("ERROR", "error");
						$tpl->FastPrint("ERROR");
						exit;					
					};
					mysql_query("INSERT INTO ".$GLOBALS['tbl_users']." VALUES('','".$_POST['login']."','".md5($_POST['pass'])."','".$_POST['email']."')");
					mysql_close($m);
					header("Location: ".$PHP_SELF); exit;
				};
			break;
			
			default:
				$tpl->assign("{TITLE}", "- admin section - Users");
				$tpl->parse("HEAD", "head");
				$tpl->FastPrint("HEAD");
				$m=sql();
				$q=mysql_query("SELECT id,login,email FROM ".$GLOBALS['tbl_users']." ORDER BY id ASC");
					while($row=mysql_fetch_array($q)) {
						$tpl->assign("{ID}", $row['id']);
						$tpl->assign("{LOGIN}", $row['login']);
						$tpl->assign("{EMAIL}", $row['email']);
							if($_SESSION['id']=='1') {
								$tpl->assign("{NEW_LINK}", "<a href='".$PHP_SELF."?mode=".$_GET['mode']."&act=new'>добавить нового модератора</a>");
								$tpl->assign("{DEL_LINK}", "<a href='".$PHP_SELF."?mode=".$_GET['mode']."&act=del&id=".$row['id']."'>удалить</a>");
							} else{
								$tpl->assign("{NEW_LINK}", "");
								$tpl->assign("{DEL_LINK}", "вы не имеете права удалять пользователей");
							};
						$tpl->assign("{EDIT_LINK}", "<a href='".$PHP_SELF."?mode=".$_GET['mode']."&act=edit&id=".$row['id']."'>изменить данные</a>");
						$tpl->parse("{LIST_USERS}", ".list_us");
					};
				mysql_free_result($q);
				mysql_close($m);
				$tpl->parse("INDEX", "users_index");
				$tpl->FastPrint("INDEX");
			break;
		};
	break;
};

$end=$tpl->utime();
$tpl->assign("{GEN_TIME}", sprintf("%01.3f ", ($end-$start)));
$tpl->parse("FOOT", "foot");
$tpl->FastPrint("FOOT");
?>