<?php
require_once("./admin/common.php");
require_once("./admin/libs/smarty/Smarty.class.php");
	$smarty = new Smarty;
	//$smarty->compile_check = true;
	//$smarty->debugging = true;
	$smarty->template_dir = './templates/';
	$smarty->compile_dir =  './admin/libs/smarty/templates_c/';
	$smarty->config_dir =   './templates/';
	$smarty->cache_dir =    './admin/libs/smarty/cache/';
	$smarty->assign("sitename", $sitename);
$err=0;
/* */
$max_news=3;
/*
// Обращаться реферал должен так: index.php?from=referal_id&status=...
if(isset($from)){print "<h1>From: $from</h1>";} 
	else {print"<h1>From: Nowhere</h1>"; }
*/

    global $sape;
    if (!defined('_SAPE_USER')){
        define('_SAPE_USER', '0daebc2b44aae95f85c4bf5cdbdea49b'); 
    }
    require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); 
    $sape = new SAPE_client();

$status = @$_REQUEST["status"];
$id = @$_REQUEST["id"];
$page = @$_REQUEST["page"];

if (!isset($status) || $status=="") 
	$status = "index";

switch($status) {
	// ###########################################################################
	// ###########################################################################
	case "articles":
		// Отдаем Smarty статус=articles
		$smarty->assign("status", "articles");
		$smarty->assign("header", "Статьи");
		// Заголовок, титул и описание страницы
		$smarty->assign("title", "Статьи : $sitename");
		$smarty->assign("keywords", "Статьи : $sitename");
		$smarty->assign("description", "Статьи : $sitename");
		
		// Чтение, выбор и назначение статей
		$articles = array();
		$query    = "SELECT id, description, keywords, header, filename, pageorder from $gdsitepages where visible='Y' and isarticle='Y' order by pageorder desc";
		$result=mysql_query($query);
		while($row=mysql_fetch_array($result))
			{
			$id=$row["id"];
			$description=$row["description"];
			$keywords=$row["keywords"];
			$header=$row["header"];
			$filename=$row["filename"];
			$pageorder=$row["pageorder"];
			$articles[] = array("id" => "$id", "description" => "$description", "keywords" => "$keywords", "header" => "$header", "filename" => "$filename", "pageorder" => "$pageorder");
			}
		$smarty->assign("articles", $articles);
	break;

	case "index":
		$page="index";
		// Отдаем Smarty статус
		$smarty->assign("status", "index");
		
		// Проверка, что такая страница есть.
		if (count_items("$gdsitepages where filename='$page'") == 0) {
			header("HTTP/1.0 404 Not Found");
			header("Status: 404 Not Found"); 
			header("Location: /");				
			exit;
			}
		
		$query="select id, name, title, description, keywords, header, menuname, filename, pageorder, parent, visible from $gdsitepages where filename='$page'";
		$result=mysql_query($query);
		if (mysql_num_rows($result)==0) {$query="select id, name, title, description, keywords, header, menuname, filename, pageorder, parent, visible from $gdsitepages where filename='notfound404'";$result=mysql_query($query);}
		if (mysql_num_rows($result)>1) 
			{
			// Страница не найдена!
			// Выдаем ошибку 404
			header("HTTP/1.0 404 Not Found");
			header("Status: 404 Not Found");
			header("Location: /");
			exit;
			}
		if ($err == 0) {
			$row=mysql_fetch_array($result);
			$id=$row["id"];
			$name=$row["name"];
			$title=$row["title"];
			$description=$row["description"];
			$keywords=$row["keywords"];
			$header=$row["header"];
			$menuname=$row["menuname"];
			$filename=$row["filename"];
			$pageorder=$row["pageorder"];
			$parent=$row["parent"];
			$visible=$row["visible"];
			$smarty->assign("title", $title);
			$smarty->assign("description", $description);
			$smarty->assign("keywords", $keywords);
			$smarty->assign("header", $header);
			$smarty->assign("contentfile", "../content/" . $filename . ".inc");
			$smarty->assign("filename", $filename);
			//Отдаем KeyVisual пра- пра- ... родителя
			$tmp_parent = getrootparent_pages($id);
			$smarty->assign("rootparent", $tmp_parent);
			// $tmp_kv = getfieldbyquery($gdsitepages,"filename","id='$tmp_parent'");
			// откусываем приставку языка
			// if ((substr($tmp_kv,-4) == "_eng") || (substr($tmp_kv,-4) == "_dch")) {$tmp_kv = substr($tmp_kv,0,-4);}
			// $smarty->assign("keyvisual", $tmp_kv);
			}
		// Формируем массив анонсов
		$tmparr = array();
		$query="SELECT id, name, title, descr, pic, link, announceorder, visible from $gdannouncements where visible='Y' order by announceorder";
		$result=mysql_query($query);
		while($row=mysql_fetch_array($result)) {
			$id=$row["id"];
			$name=$row["name"];
			$title=$row["title"];
			$descr=$row["descr"];
			$pic=$row["pic"];
			$link=$row["link"];
			$announceorder=$row["announceorder"];
			$visible=$row["visible"];
			$tmparr[] = array(
				"id" => "$id", 
				"name" => "$name",
				"title" => "$title",
				"descr" => "$descr",
				"pic" => "$pic",
				"link" => "$link",
				"announceorder" => "$announceorder",
				"visible" => "$visible");
			}
		$smarty->assign("announces", $tmparr);
	break;
	
	
	
	case "announces":
		// Отдаем Smarty статус
		$smarty->assign("status", "announces");
		$smarty->assign("header", "Анонсы");
		$smarty->assign("title", "Анонсы");
	// Формируем массив анонсов
		$tmparr = array();
		$query="SELECT id, name, title, descr, pic, link, announceorder, visible from $gdannouncements where visible='Y' order by announceorder";
		$result=mysql_query($query);
		while($row=mysql_fetch_array($result)) {
			$id=$row["id"];
			$name=$row["name"];
			$title=$row["title"];
			$descr=$row["descr"];
			$pic=$row["pic"];
			$link=$row["link"];
			$announceorder=$row["announceorder"];
			$visible=$row["visible"];
			$tmparr[] = array(
				"id" => "$id", 
				"name" => "$name",
				"title" => "$title",
				"descr" => "$descr",
				"pic" => "$pic",
				"link" => "$link",
				"announceorder" => "$announceorder",
				"visible" => "$visible");
			}
		$smarty->assign("announces", $tmparr);
	break;
	
	
	
	
	
	
	
	
	case "news":
		// Отдаем Smarty статус=news
		$smarty->assign("status", "news");
		$smarty->assign("header", "Новости");
		$smarty->assign("title", "Новости");
		// Чтение, выбор и назначение новостей
		$news = array();
		$query    = "SELECT id, name, date, title, keywords, text, link, keyv, visible from $gdsitenews where visible='Y' order by date desc limit 7";
		$result=mysql_query($query);
		while($row=mysql_fetch_array($result))
			{
			$id=$row["id"];
			$name=$row["name"];
			$date=$row["date"];
			$title=$row["title"];
			$nkeywords=$row["keywords"];
			$text=$row["text"];
			$link=$row["link"];
			$keyv=$row["keyv"];
			$visible=$row["visible"];
			$date = date("d.m.Y",$date);
			$news[] = array("title" => "$title", "date" => "$date", "text" => "$text", "link" => "$link");
			}
		if ((!is_array($news)) or (count($news)==0)) {$news[] = array("title" => "Новостей нет", "date" => date("d.m.Y"), "text" => "Новостей для данного раздела нет.", "link" => "NULL");}
		$smarty->assign("news", $news);

		// Формируем массив анонсов
		$tmparr = array();
		$query="SELECT id, name, title, descr, pic, link, announceorder, visible from $gdannouncements where visible='Y' order by announceorder";
		$result=mysql_query($query);
		while($row=mysql_fetch_array($result)) {
			$id=$row["id"];
			$name=$row["name"];
			$title=$row["title"];
			$descr=$row["descr"];
			$pic=$row["pic"];
			$link=$row["link"];
			$announceorder=$row["announceorder"];
			$visible=$row["visible"];
			$tmparr[] = array(
				"id" => "$id", 
				"name" => "$name",
				"title" => "$title",
				"descr" => "$descr",
				"pic" => "$pic",
				"link" => "$link",
				"announceorder" => "$announceorder",
				"visible" => "$visible");
			}
		$smarty->assign("announces", $tmparr);
	break;	
	
	
	// ###########################################################################
	// ###########################################################################
	case "newsarchive":
		// Отдаем Smarty статус=newsarchive
		$smarty->assign("status", "newsarchive");
		$smarty->assign("header", "Архив новостей");
		$smarty->assign("title", "Архив новостей");
		// Чтение, выбор и назначение новостей
		$news = array();
		$query    = "SELECT id, name, date, title, keywords, text, link, keyv, visible from $gdsitenews where visible='Y' order by date desc";
		$result=mysql_query($query);
		while($row=mysql_fetch_array($result))
			{
			$id=$row["id"];
			$name=$row["name"];
			$date=$row["date"];
			$title=$row["title"];
			$nkeywords=$row["keywords"];
			$text=$row["text"];
			$link=$row["link"];
			$keyv=$row["keyv"];
			$visible=$row["visible"];
			$date = date("d.m.Y",$date);
			$news[] = array("title" => "$title", "date" => "$date", "text" => "$text", "link" => "$link");
			}
		if ((!is_array($news)) or (count($news)==0)) {$news[] = array("title" => "Новостей нет", "date" => date("d.m.Y"), "text" => "Новостей для данного раздела нет.", "link" => "NULL");}
		$smarty->assign("news", $news);
	break;
	
		// ###########################################################################
	case "advnewsarchive":
		// Отдаем Smarty статус=newsarchive
		$smarty->assign("status", "advnewsarchive");
		$smarty->assign("header", "Архив новостей");
		$smarty->assign("title", "Архив новостей");
		// Чтение, выбор и назначение новостей
		$advnewsarray = array();
		$query    = "SELECT id, name, title, descr, sdescr, pic, link, visible from $gdadvnews where visible='Y' order by id desc";
		$result=mysql_query($query);
		while($row=mysql_fetch_array($result))
			{
			$id=$row["id"];
			$name=$row["name"];
			$date=$row["date"];
			$title=$row["title"];
			$descr=$row["descr"];
			$sdescr=$row["sdescr"];
			$pic=$row["pic"];
			$link=$row["link"];
			$visible=$row["visible"];
			$date = date("d.m.Y",$date);
			$advnewsarray[] = array("title" => "$title", "date" => "$date", "sdescr" => "$sdescr", "descr" => "$descr", "id"=>"$id", "pic" => "$pic", "link" => "$link");
			}
		if ((!is_array($advnewsarray)) or (count($advnewsarray)==0)) {$advnewsarray[] = array("title" => "Новостей нет", "date" => date("d.m.Y"), "sdescr" => "Новостей нет. Однако.", "link" => "NULL");}
		$smarty->assign("advnewsarray", $advnewsarray);		
	break;
	
	// ###########################################################################
		case "nnews":
		// Отдаем Smarty статус=nnews
		$smarty->assign("status", "nnews");
		
		// Собираем данные
		if (!isset($id)) {$err=1;}
		$query="select id,name,descr,pic,link,visible from $gdadvnews where id='$id'";
		$result=mysql_query($query);

		if (mysql_num_rows($result)==0) {
$err=5;
get404($smarty);
}
		if (mysql_num_rows($result)>1) {$err=6;}
		if (!$err) {
			$row=mysql_fetch_array($result);
			$id=$row["id"];
			$name=$row["name"];
			$descr=$row["descr"];
			$pic=$row["pic"];
			$link=$row["link"];
			$visible=$row["visible"];
			
			// Отдаем данные Samrty
			$smarty->assign("id", $id);
			$smarty->assign("name", $name);
			$smarty->assign("descr", $descr);
			$smarty->assign("pic", $pic);
			$smarty->assign("link", $link);
			$smarty->assign("visible", $visible);
			//$srtpos=longlinkpath($link);
			} // end of if
	break;

	// ###########################################################################
	case "static":
		// Отдаем Smarty статус
		$smarty->assign("status", "static");
		
		if (!isset($page)){
			include "content/index.inc";
			exit();}
		// Проверка, что такая страница есть.
//		if (count_items("$gdsitepages where filename='$page'") == 0) {header("Status: 404 Not Found"); $page="err404";}
		if (count_items("$gdsitepages where filename='$page'") == 0) {
			header("HTTP/1.0 404 Not Found");
			header("Status: 404 Not Found"); 
			header("Location: /");				
			exit;
			}
		
		$query="select id, name, title, description, keywords, header, menuname, filename, pageorder, parent, visible from $gdsitepages where filename='$page'";
		$result=mysql_query($query);
		if (mysql_num_rows($result)==0) {$query="select id, name, title, description, keywords, header, menuname, filename, pageorder, parent, visible from $gdsitepages where filename='notfound404'";$result=mysql_query($query);}
		if (mysql_num_rows($result)>1) 
			{
			// Страница не найдена!
			header("HTTP/1.0 404 Not Found");
			header("Status: 404 Not Found"); 
			exit;
			}
		if ($err == 0) {
			$row=mysql_fetch_array($result);
			$id=$row["id"];
			$name=$row["name"];
			$title=$row["title"];
			$description=$row["description"];
			$keywords=$row["keywords"];
			$header=$row["header"];
			$menuname=$row["menuname"];
			$filename=$row["filename"];
			$pageorder=$row["pageorder"];
			$parent=$row["parent"];
			$visible=$row["visible"];
			$smarty->assign("title", $title);
			$smarty->assign("description", $description);
			$smarty->assign("keywords", $keywords);
			$smarty->assign("header", $header);
			$smarty->assign("contentfile", "../content/" . $filename . ".inc");
			$smarty->assign("filename", $filename);
			//Отдаем KeyVisual пра- пра- ... родителя
			$tmp_parent = getrootparent_pages($id);
			$smarty->assign("rootparent", $tmp_parent);
			// $tmp_kv = getfieldbyquery($gdsitepages,"filename","id='$tmp_parent'");
			// откусываем приставку языка
			// if ((substr($tmp_kv,-4) == "_eng") || (substr($tmp_kv,-4) == "_dch")) {$tmp_kv = substr($tmp_kv,0,-4);}
			// $smarty->assign("keyvisual", $tmp_kv);
			}
	break;
	
	
	// ###########################################################################
	// ###########################################################################
	case "dosearch":
		// Отдаем Smarty статус
		$smarty->assign("status", "dosearch");
		$smarty->assign("header", "Результаты поиска");
		$smarty->assign("title", "Результаты поиска");
		$smarty->assign("description", "Результаты поиска");
		$smarty->assign("keywords", "Результаты поиска");
		
		$articles = array();
		$searchtext = substr($searchtext,0,64);
		$searchtext = neutralize($searchtext);
		$searchtext = preg_replace("/[^-_a-zA-Zа-яА-Я0-9\s]/", " ", $searchtext);
		$searchtext = trim(preg_replace("/s([^s]{1,2})s/", " ", ereg_replace("[ ]+", "  "," $searchtext "))); 
		$searchtext = ereg_replace("[ ]+", " ", $searchtext);
		$searchtext = trim($searchtext);
		
		$stat = array();
		$found_pages = array();
		$word = explode(" ", $searchtext); 
		while (list($k, $v) = each($word)) {
		  if (strlen($v)>2){
		  	$v_count = 0;
			$v_p_count = 0;
		  	$result=mysql_query("SELECT id,page_id,word,count FROM $gdpageindex WHERE word LIKE '%$v%'");
			while (list ($c_id, $c_page_id, $c_word, $c_count) = mysql_fetch_row ($result)) {
				$v_count += $c_count;
				$v_p_count++;
				if (isset($found_pages[$c_page_id])){$found_pages[$c_page_id] += $c_count;}
					else {$found_pages[$c_page_id] = $c_count;}
				}
		    $stat[]="\"<em>$v</em>\" найдено в ". $v_count . " местах<br>"; 
			}
		  else {
		    $stat[]="\"<em>$v</em>\": <font color=#cc0000>Слово должно быть длиной не менее чем 3 символа.</font><br>"; 
			}
		  }
		$word_stats = "Всего страниц: " . count($found_pages) . "<br>&nbsp;<br><strong>Статистика слов:</strong><br>". implode("", $stat). "<br>";
		$fnd_pages = array();
		foreach($found_pages as $k => $v){
			$filename = getfieldbyquery("$gdsitepages","filename","id='$k'");
			$fullfilename = "http://$HTTP_HOST/$filename" . ".html";
			$title = getfieldbyquery("$gdsitepages","title","id='$k'");
			$descr = getfieldbyquery("$gdsitepages","description","id='$k'");
			$fnd_pages[] = array(
				"pid" => "$k",
				"title" => "$title",
				"filename" => "$filename",
				"fullfilename" => "$fullfilename",
				"descr" => "$descr",
				"count" => "$v");
			}
		
		//$smarty->assign("status", "debug");
		$smarty->assign("word_stats", $word_stats);
		//$smarty->assign("found_pages", $found_pages);
		if (count($fnd_pages)) {
			usort($fnd_pages,"fnd_pages_cmp");
			$smarty->assign("fnd_pages", $fnd_pages);
			}
		else {
			$fnd_pages = 0;
			$smarty->assign("fnd_pages", $fnd_pages);
			}
		unset($stat, $fnd_pages);
	break;
	
	
	
	
	
	
	
	
	
	
	
	
	
	// ###########################################################################
	// ###########################################################################
	case "sitemap":
	break;
	
	} // end of Switch


// Читаем дерево страниц со ссылками
/*
	$submenuarray["name"] = compilepagestree2select(0,"N","&nbsp;&nbsp;&nbsp;","&middot; ","menuname","No"); // Компилируем дерево в массив для Smarty
	foreach ($submenuarray["name"] as $menuid => $menuitem) {
    	$submenuarray["name"][$menuid] = substr($menuitem,18);
		}
	$submenuarray["link"] = compilepagestree2select(0,"N","","","filename","No");
	$smarty->assign("submenuarray", $submenuarray);
*/


// Чтение, выбор и назначение новостей
		$newsarray = array();
		$query    = "SELECT id, name, date, title, keywords, text, link, keyv, visible from $gdsitenews where visible='Y' order by date desc limit $max_news";
		$result=mysql_query($query);
		while($row=mysql_fetch_array($result))
			{
			$id=$row["id"];
			$name=$row["name"];
			$date=$row["date"];
			$title=$row["title"];
			$nkeywords=$row["keywords"];
			$text=$row["text"];
			$link=$row["link"];
			$keyv=$row["keyv"];
			$visible=$row["visible"];
			$date = date("d.m.Y",$date);
			$newsarray[] = array("title" => "$title", "date" => "$date", "text" => "$text", "link" => "$link");
			}
		if ((!is_array($newsarray)) or (count($newsarray)==0)) {$newsarray[] = array("title" => "Новостей нет", "date" => date("d.m.Y"), "text" => "Новостей для данного раздела нет.", "link" => "NULL");}
		$smarty->assign("newsarray", $newsarray);
		
// Чтение, выбор и назначение advновостей
		$advnewsarray = array();
		$query    = "SELECT id, name, title, descr, sdescr, pic, link, visible from $gdadvnews where visible='Y' order by id desc limit $max_news";
		$result=mysql_query($query);
		while($row=mysql_fetch_array($result))
			{
			$id=$row["id"];
			$name=$row["name"];
			$date=$row["date"];
			$title=$row["title"];
			$descr=$row["descr"];
			$sdescr=$row["sdescr"];
			$pic=$row["pic"];
			$link=$row["link"];
			$visible=$row["visible"];
			$date = date("d.m.Y",$date);
			$advnewsarray[] = array("title" => "$title", "date" => "$date", "sdescr" => "$sdescr", "descr" => "$descr", "id"=>"$id", "pic" => "$pic", "link" => "$link");
			}
		if ((!is_array($advnewsarray)) or (count($advnewsarray)==0)) {$advnewsarray[] = array("title" => "Новостей нет", "date" => date("d.m.Y"), "sdescr" => "Новостей нет. Однако.", "link" => "NULL");}
		$smarty->assign("advnewsarray", $advnewsarray);		
	
		$advnewsarrayal = array();
		$query    = "SELECT id, name, title, descr, sdescr, pic, link, visible from $gdadvnews where visible='Y' order by id desc";
		$result=mysql_query($query);
		while($row=mysql_fetch_array($result))
			{
			$id=$row["id"];
			$name=$row["name"];
			$date=$row["date"];
			$title=$row["title"];
			$descr=$row["descr"];
			$sdescr=$row["sdescr"];
			$pic=$row["pic"];
			$link=$row["link"];
			$visible=$row["visible"];
			$date = date("d.m.Y",$date);
			$advnewsarrayal[] = array("title" => "$title", "date" => "$date", "sdescr" => "$sdescr", "descr" => "$descr", "id"=>"$id", "pic" => "$pic", "link" => "$link");
			}
		if ((!is_array($advnewsarrayal)) or (count($advnewsarrayal)==0)) {$advnewsarrayal[] = array("title" => "Новостей нет", "date" => date("d.m.Y"), "sdescr" => "Новостей нет. Однако.", "link" => "NULL");}
		$smarty->assign("advnewsarrayal", $advnewsarrayal);		
		


	// Определяем строку положения страницы на сайте
	$strpos = "";
	if (!isset($parent)) {$parent=0;}
	$pparent = $parent;
	$quitflag = 0;
	while ($quitflag != 1) {
		$query = "SELECT id,menuname,filename,parent,visible from $gdsitepages where id='$pparent'";
		$result = mysql_query($query);
		$row=mysql_fetch_array($result);
		$pid = $row["id"];
		$pmenuname = $row["menuname"];
		$pfilename = $row["filename"];
		$pparent = $row["parent"];
		$pvisible = $row["visible"];
		if ($pid == 0) {$quitflag = 1;}
			else {$strpos = " &gt; <a href=\"$pfilename.html\">$pmenuname</a>" . $strpos;}
		} // of while
		
		$strpos = "<a href=\"index.html\">Главная</a>" . $strpos;
	// Передаем строку положения страницы на сайте Smarty
	$smarty->assign("strpos", $strpos);





// Читаем меню
$menuarray = array();
/*
$menuarray[] = array(
			"id" => "0",
			"menuname" => "Наш анонс",
			"filename" => "announces",
			"parent" => "0"
			);
*/
$query    = "select id, name, title, description, keywords, header, menuname, filename, pageorder, parent, visible from $gdsitepages where visible='Y' order by pageorder";
$result=mysql_query($query);
	while($row=mysql_fetch_array($result)) {
		$id=$row["id"];
		$name=$row["name"];
		$title=$row["title"];
		$description=$row["description"];
		$keywords=$row["keywords"];
		$header=$row["header"];
		$menuname=$row["menuname"];
		$filename=$row["filename"];
		$pageorder=$row["pageorder"];
		$parent=$row["parent"];
		$visible=$row["visible"];
		if($parent == 0) {$menuname = strcut($menuname,25);}
		$menuarray[] = array(
			"id" => "$id",
			"menuname" => "$menuname",
			"filename" => "$filename",
			"parent" => "$parent"
			);
		}
$smarty->assign("menuarray", $menuarray);


// Функция сравнения страниц при поиске
function fnd_pages_cmp($a, $b) {
			// global $sort,$sortdir;
			$result = 0;
			if ($a["count"] == $b["count"]) 
				{$result = 0;}
			else {
				if($a["count"] < $b["count"]) {$result = 1;}
					else {$result = -1;}
			}
			return $result;
		} // end of fnd_pages_cmp function




// вывод ошибок
$strerr = "";
switch($err)
	{
	case "0": break;
	case "1": $strerr = "Страница не найдена."; break;
	case "5": $strerr = "Записей с таким ID не найдено."; break;
	default: send_crush_info("Непредвиденная ситуация, переменная \$err прияняла незарезервированное значение: $err."); break;
	}
$smarty->assign("strerr", $strerr);

// отправляем все в пасть Smarty
if ($status=="links" || $status=="addl" || $status=="addlinks") {$smarty->display("indexlinks.tpl");} else {$smarty->display("index.tpl");}
?>