<?php
/*error_reporting(E_ALL);
ini_set("display_errors", 1);*/
session_start();
require_once("libs/smarty/Smarty.class.php");
require_once("libs/classes/MysqlMysqli.class.php");
require_once("configs/config.php");
require_once("functions.php");

$smarty = new Smarty;
$smarty->compile_check = true;

if($_GET["debug"] == "true") {
	$smarty->debugging = true;
}

$showMainsite = true;

function getDefaultSiteInformation() {
	
	global $db;
	
	$db->query("SELECT * FROM tab_settings WHERE dbf_int_index = 1");
	
	$info = $db->fetch_array_get_first();
	
	return $info;
}

/**
 * DELETE ME
 *
 * @param unknown_type $menuID
 * @return unknown
 */
function getMenu($menuID=1) {
	
	global $db;
	
	$db->query("SELECT mec.dbf_str_name, me.dbf_str_link, me.dbf_int_link_pageID, me.dbf_str_link_target FROM tab_menu_element_content AS mec, tab_menu_element AS me WHERE (mec.dbf_int_elementID = me.dbf_int_index) AND (mec.dbf_int_languageID = '".$_SESSION["languageID"]."') AND (me.dbf_int_menuID = '".(int) $menuID."') ORDER BY me.dbf_int_position");
	//echo "SELECT mec.* FROM tab_menu_element_content AS mec, tab_menu_element AS me WHERE (mec.dbf_int_elementID = me.dbf_int_index) AND (mec.dbf_int_languageID = '".$_SESSION["languageID"]."') AND (me.dbf_int_menuID = '".(int) $menuID."') ORDER BY mec.dbf_int_position";
	return $db->fetch_array();
	
}


/**
 * Enter description here...
 *
 * @param unknown_type $tpl_name
 * @param unknown_type $tpl_source
 * @param unknown_type $smarty_obj
 * @return unknown
 */
function dbpe_get_template ($tpl_name, &$tpl_source, &$smarty_obj) {
    
	global $db;
	/*$db->query("SELECT * FROM tab_page_content WHERE (dbf_int_pageID = '".(int) $tpl_name."') AND (dbf_int_languageID = '".$_SESSION["languageID"]."')");
	$page = $db->fetch_array_get_first();
	
	$tpl_source = $page["dbf_str_content"];*/
	$db->query("SELECT * FROM tab_page_element_content WHERE dbf_int_languageID = '".$_SESSION["languageID"]."' AND dbf_int_page_elementID = '".(int) $tpl_name."' LIMIT 1");
	$temp = $db->fetch_array_get_first();
	$tpl_source = $temp["dbf_str_content"];
	return true;
}

/**
 * Enter description here...
 *
 * @param unknown_type $tpl_name
 * @param unknown_type $tpl_timestamp
 * @param unknown_type $smarty_obj
 * @return unknown
 */
function dbpe_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj) {
    
	$tpl_timestamp = time();
	return true;
}

/**
 * Enter description here...
 *
 * @param unknown_type $tpl_name
 * @param unknown_type $smarty_obj
 * @return unknown
 */
function dbpe_get_secure($tpl_name, &$smarty_obj) {
    // assume all templates are secure
    return true;
}

/**
 * Enter description here...
 *
 * @param unknown_type $tpl_name
 * @param unknown_type $smarty_obj
 */
function dbpe_get_trusted($tpl_name, &$smarty_obj) {
    // not used for templates
}                                       
// register the resource name "dbpe"
/*$smarty->register_resource("dbpe", array("dbpe_get_template",
                                       "dbpe_get_timestamp",
                                       "dbpe_get_secure",
                                       "dbpe_get_trusted"));*/
$smarty->registerResource("dbpe", array("dbpe_get_template",
                                       "dbpe_get_timestamp",
                                       "dbpe_get_secure",
                                       "dbpe_get_trusted"));
                                       
                                       
                                       
$info = getDefaultSiteInformation();
$site["title"] = $info["dbf_str_site_title"];
$site["description"] = $info["dbf_str_site_description"];
$site["keywords"] = $info["dbf_str_site_keywords"];
$site["charset"] = $info["dbf_str_charset"];
$site["defaultLanguage"] = $info["dbf_int_languageID"];
$site["defaultPageID"] = $info["dbf_int_start_pageID"];
$site["google_analytics_uid"] = $info["dbf_str_analytics_uid"];
$site["google_maps_id"] = $info["dbf_str_googlemaps_id"];
$site["google_maps_address"] = $info["dbf_str_googlemaps_address"];
$site["load_cookieinfo_script"] = $info["dbf_int_cookieinfo"];
$site["copyright_start"] = $info["dbf_int_copyright_start"];
$site["copyright_info"] = $info["dbf_str_copyright_info"];

$settings = $info;
$smarty->assign("settings", $settings);

if($settings["dbf_int_smtp_active"] == "1") {
	require_once("libs/classes/SMTPMailer.class.php");
}

$smarty->assign("languages", getExistingLanguages());

/*if(!$_SESSION["languageID"]) {
	$_SESSION["languageID"] = $site["defaultLanguage"];
}*/

// Ist eine refererID gesetzt?
if(isset($_GET["rid"])) {
	
	// für spätere Verwendung (z.B. Kontaktformular) speichern
	$_SESSION["refererID"] = (int) $_GET["rid"];
	
	// Seitenaufruf für Referer speichern
	$db->query("INSERT INTO tab_log_referer (dbf_int_refererID, dbf_int_pageID, dbf_ts_creation) VALUES ('".$_SESSION["refererID"]."', '".(int) $_GET["pid"]."', NOW());");
	
}


$content = "start_content.tpl";
//header("Content-Type: text/html; charset=ISO-8859-1");

// realURL aktiviert?
if($settings["dbf_int_realurl"]) {
	
	$sitelocation = str_replace("index.php", "", $_SERVER['PHP_SELF']);
	
	$relativspokenurl = $_SERVER["REDIRECT_URL"];
	$relativspokenurl = str_replace("index.php/", "", $_SERVER["REDIRECT_URL"]);
	
	if($sitelocation != "/") {
		$relativspokenurl = str_replace($sitelocation,'', $relativspokenurl);
	}
	
	// ersten Slash aus URL entfernen
	$relativspokenurl = preg_replace("/^[\/]?(.*?)/","$1", $relativspokenurl);
	if($relativspokenurl) {
		
		$db->query("SELECT dbf_int_pageID, dbf_int_languageID FROM tab_page_content WHERE dbf_str_realurl LIKE '".$relativspokenurl."' OR dbf_str_realurl LIKE '".$relativspokenurl."/' LIMIT 1");
		if($db->getAffectedRows() == 1) {
			$temp_page = $db->fetch_array_get_first();
			
			$_GET["lid"] = $temp_page["dbf_int_languageID"];
			$_GET["action"] = "show";
			$_GET["pid"] = $temp_page["dbf_int_pageID"];
			
		}
		else {
			//echo "<!--".$settings["dbf_str_baseurl"]."-->";
			//header("Location:".$settings["dbf_str_baseurl"]);
			header("HTTP/1.0 404 Not Found");
			die();
		}
	}
}
// realURL

// Wurde eine Sprachauswahl übergeben?
if($_GET["lid"] || !$_SESSION["languageID"]) {
	
	if(!$_SESSION["languageID"]) {
		$_SESSION["languageID"] = $site["defaultLanguage"];
	}
	else {
		$_SESSION["languageID"] = (int) $_GET["lid"];
	}
	
	$db->query("SELECT l.*, c.dbf_str_name AS dbf_str_charset FROM tab_language AS l, tab_decode_charset AS c WHERE (l.dbf_int_charsetID = c.dbf_int_index) AND (l.dbf_int_index = '".$_SESSION["languageID"]."')");
	$lang = $db->fetch_array_get_first();
	
	$lang["translation"] = json_decode($lang["dbf_text_content"]);
	//print_r($lang["translation"]);
	
	$_SESSION["site_charset"] = $lang["dbf_str_charset"];
	
	$_SESSION["language"] = $lang;
}

if(!$_SESSION["tagcloud"]) {
	
	$_SESSION["tagcloud"] = generateSiteTagcloud();
	
}

// Statistik-Initialisierung
$id = 0;
if($_GET["pid"]) {
	$id = (int) $_GET["pid"];
}
// Statistik ~ENDE~


function getLocation() {
	
	global $db;
	$db->query("SELECT p.dbf_int_index, pc.dbf_str_name FROM tab_page AS p, tab_page_content AS pc WHERE (p.dbf_int_index = pc.dbf_int_pageID) AND (pc.dbf_int_languageID = '".$_SESSION["languageID"]."') AND p.dbf_int_index = '".$_GET["pid"]."'");
	$tmp_data = $db->fetch_array_get_first();
	
	$location[0]["name"] = $tmp_data["dbf_str_name"];
	$location[0]["pid"] = $tmp_data["dbf_int_index"];
	
	$location = getPageLocation($_GET["pid"], $location);
	return array_reverse($location);	
}

function getPageLocation($pageID, $location) {
	
	global $db;
	
	$tmp_data = getParentElement($pageID);
	
	$location = $location;
	
	$i = count($location);
	
	if($tmp_data != null) {
		$location[$i]["name"] = $tmp_data["dbf_str_name"];
		$location[$i]["pid"] = $tmp_data["dbf_int_index"];
		
		$location = getPageLocation($tmp_data["dbf_int_index"], $location);
	}
	
	return $location;
	
}

function getParentID($pageID) {
	global $db;
	$db->query("SELECT * FROM tab_page WHERE dbf_int_index = '".$pageID."' AND dbf_int_parentID IS NOT NULL");
	
	if($db->getAffectedRows() > 0) {
		$tmp_data = $db->fetch_array_get_first();
		return $tmp_data["dbf_int_parentID"];
	}
	
	return null;
}

function getParentElement($pageID) {
	
	global $db;
	
	if(getParentID($pageID) != null) {
		$db->query("SELECT p.dbf_int_index, pc.dbf_str_name FROM tab_page AS p, tab_page_content AS pc WHERE (p.dbf_int_index = pc.dbf_int_pageID) AND (pc.dbf_int_languageID) = '".$_SESSION["languageID"]."' AND p.dbf_int_index = '".getParentID($pageID)."'");
		
		if($db->getAffectedRows() > 0) {
			return $db->fetch_array_get_first();
		}
	}
	
	return null;	
}

function getSameLevelPages($pageID) {
	
	global $db;
	
	$db->query("SELECT * FROM tab_page WHERE dbf_int_index = '".$pageID."'");
	$tmp_data = $db->fetch_array_get_first();
	
	$db->query("SELECT p.dbf_int_index, pc.dbf_str_name FROM tab_page AS p, tab_page_content AS pc WHERE (p.dbf_int_index = pc.dbf_int_pageID) AND (p.dbf_int_parentID = '".$tmp_data["dbf_int_parentID"]."') AND (p.dbf_int_index <> '".$pageID."') AND (p.dbf_int_active = 1)");
	
	return $db->fetch_array();
	
}

function getNextLevelPages($pageID) {
	
	global $db;
	
	/*$db->query("SELECT * FROM tab_page WHERE dbf_int_index = '".$pageID."'");
	$tmp_data = $db->fetch_array_get_first();*/
	
	$db->query("SELECT p.dbf_int_index, pc.dbf_str_name FROM tab_page AS p, tab_page_content AS pc WHERE (p.dbf_int_index = pc.dbf_int_pageID) AND (p.dbf_int_parentID = '".$pageID."') AND (p.dbf_int_active = 1)");
	
	return $db->fetch_array();
	
}





switch($_GET["action"]) {
	
	case "contact_send":
	
		
	
		$settings["mail"]["mailto"] = "witte@cesario.de";

		$mail = new SMTPMailer($settings["mail"]["smtp"]["host"],$settings["mail"]["smtp"]["auth"],$settings["mail"]["smtp"]["username"],$settings["mail"]["smtp"]["password"]);

		$mailContent = "Test...";
	
		$mailSubject = "Test-Versand";
		$mailto = $settings["mail"]["mailto"];
					
					
		$headers = array('From' => $settings["mail"]["from"],
				  'To' => $mailto,
				  'Subject' => $mailSubject);
		
		$result = $mail->send($mailto, $mailSubject, $mailContent, $headers);
	
		break;
	case "contact_verify_captcha":
	
		$showMainsite = false;
		
		if($_SESSION["captcha"] == $_POST["captcha"]) {
			$verified = "TRUE";
		}
		else {
			$verified = "FALSE";
		}
		
		echo $verified;
		
		break;
	case "contact_service":
		
		//$settings["mail"]["mailto"] = "witte@cesario.de";
		
		$showMainsite = false;
	
		$formKey = "5xv453m3uhdnpwzt5ze7gyrp";
		
		if($formKey == $_POST["formKey"] && $_SESSION["captcha"] == $_POST["captcha"]) {
			
			//$mail = new SMTPMailer($settings["mail"]["smtp"]["host"],$settings["mail"]["smtp"]["auth"],$settings["mail"]["smtp"]["username"],$settings["mail"]["smtp"]["password"]);
			$mail = new SMTPMailer($settings["dbf_str_smtp_host"],(bool) $settings["dbf_str_smtp_auth"],$settings["dbf_str_smtp_username"],$settings["dbf_str_smtp_password"], $settings["dbf_int_smtp_port"]);

			$mailContent = "";
	
			foreach($_POST as $key => $value) {
				
				if($key != "formKey") {
					
					if($value != "") {
						$mailContent .= $key . ": " . utf8_decode( str_replace("\r\n", "<br>", $value) ) . "<br />";						
					}
					
				}
				
			}
			//echo $mailContent;
			if($mailContent != "") {
				
				
				$mailContent = "<br><br><br>" . $mailContent;
				
				$mailSubject = "Webseite: Kontakt-Seite";
				$mailto = $settings["dbf_str_contact_mail"];
							
							
				$headers = array('From' => $settings["dbf_str_smtp_mail"],
						  'To' => $mailto,
						  'Subject' => $mailSubject);
				
				$mail->send($mailto, $mailSubject, $mailContent, $headers);
				
			}
			
			
			echo "Formular empfangen...";
				
		}
		else {
			echo "FEHLER";
		}
	
		break;
	case "contact_apartment":
	
		
	
		//$settings["mail"]["mailto"] = "witte@cesario.de";
	
		$formKey = "vah7t7r4dceuzqt7utz8y2ms";
		
		if($formKey == $_POST["formKey"]) {
			
			//$mail = new SMTPMailer($settings["mail"]["smtp"]["host"],$settings["mail"]["smtp"]["auth"],$settings["mail"]["smtp"]["username"],$settings["mail"]["smtp"]["password"]);
			$mail = new SMTPMailer($settings["dbf_str_smtp_host"],(bool) $settings["dbf_str_smtp_auth"],$settings["dbf_str_smtp_username"],$settings["dbf_str_smtp_password"]);

			$mailContent = "";
	
			foreach($_POST as $key => $value) {
				
				if($key != "formKey") {
					
					if($value != "") {
						$mailContent .= $key . ": " . utf8_decode( str_replace("\r\n", "<br>", $value) ) . "<br />";						
					}
					
				}
				
			}
			//echo $mailContent;
			if($mailContent != "") {
				
				$db->query("SELECT * FROM tab_apartment WHERE dbf_int_index = '".(int) $_POST["apartmentID"]."' LIMIT 1");
				if($db->getAffectedRows() == 1) {
					$apartment = $db->fetch_array_get_first();
				}
				else {
					$apartment["dbf_str_title"] = "Wohnung";
				}
				
				$mailContent = "<b>".$apartment["dbf_str_title"]."</b><br><br><br>" . $mailContent;
				
				//$mailSubject = $settings["mail"]["subject"];
				/*$mailSubject = "Webseite: Interesse an Mietobjekt";
				$mailto = $settings["mail"]["mailto"];
							
							
				$headers = array('From' => $settings["mail"]["from"],
						  'To' => $mailto,
						  'Subject' => $mailSubject);
				
				$mail->send($mailto, $mailSubject, $mailContent, $headers);*/
				$mailSubject = "Webseite: Interesse an Mietobjekt";
				$mailto = $settings["dbf_str_contact_mail_apartment"];
							
							
				$headers = array('From' => $settings["dbf_str_smtp_mail"],
						  'To' => $mailto,
						  'Subject' => $mailSubject);
				
				$mail->send($mailto, $mailSubject, $mailContent, $headers);
				
			}
			
			
			echo "Formular empfangen...";
				
		}
		else {
			echo "FEHLER";
		}
	
		break;
	
	/* !Wohnung: Detail */
	case "detail_apartment":
	
		$apartmentID = (int) $_GET["apartmentID"];
		
		$db->query("SELECT a.dbf_int_index, 
						a.dbf_int_active, a.dbf_dec_rooms, 
						a.dbf_dec_livingSpace, a.dbf_dec_costs_net, 
						a.dbf_dec_costs_service, a.dbf_dec_costs_heating, 
						a.dbf_dec_costs_overall, a.dbf_str_address_street, 
						a.dbf_str_address_zipcode, a.dbf_str_address_city, 
						a.dbf_str_floor, a.dbf_str_floorMax, a.dbf_date_available, 
						ac.dbf_str_title, ac.dbf_str_description, ac.dbf_str_amenities 
					FROM tab_apartment_content AS ac, tab_apartment AS a WHERE (ac.dbf_int_apartmentID = a.dbf_int_index) AND (ac.dbf_int_apartmentID = '".$apartmentID."') AND (ac.dbf_int_languageID = '".$_SESSION["languageID"]."') AND (a.dbf_int_active = 1)");
		
		if($db->getAffectedRows() == 1) {
		
			$apartment = $db->fetch_array_get_first();
			
			$site["title"] = $apartment["dbf_str_title"];
			$site["description"] = $apartment["dbf_str_teaser"];
			$site["keywords"] = $apartment["dbf_str_keywords"];
		
			// Bilder ermitteln
			$db->query("SELECT * FROM tab_apartment_file WHERE dbf_int_apartmentID = '".$apartmentID."' AND dbf_int_extensionID IN (3,4,5) ORDER BY dbf_int_position ASC");
			$apartment["pictures"] = $db->fetch_array();
			
			// Dateien ermitteln
			$db->query("SELECT * FROM tab_apartment_file WHERE dbf_int_apartmentID = '".$apartmentID."' AND dbf_int_extensionID NOT IN (3,4,5) ORDER BY dbf_int_position ASC");
			$apartment["documents"] = $db->fetch_array();
		
			$smarty->assign("apartment", $apartment);			
			$content = "detail_apartment.tpl";
		}
		else {
		
			header("HTTP/1.0 404 Not Found");
		
			$content = "error_pagenotfound.tpl";
		}
	
		break;
	/* !News: Detail */
	case "detail_news":
	
		$newsID = (int) $_GET["newsID"];
		
		$db->query("SELECT nc.*, n.dbf_str_author, n.dbf_datetime_release FROM tab_news_content AS nc, tab_news AS n WHERE (nc.dbf_int_newsID = n.dbf_int_index) AND (nc.dbf_int_newsID = '".$newsID."') AND (nc.dbf_int_languageID = '".$_SESSION["languageID"]."') AND (n.dbf_int_active = 1) AND (dbf_datetime_release <= NOW())");
		
		if($db->getAffectedRows() == 1) {
		
			$news = $db->fetch_array_get_first();
			
			if($news["dbf_str_subtitle"]) {
				$site["title"] = $news["dbf_str_subtitle"] . ": " . $news["dbf_str_title"];
			}
			else {
				$site["title"] = $news["dbf_str_title"];
			}
			$site["description"] = $news["dbf_str_teaser"];
			$site["keywords"] = $news["dbf_str_keywords"];
		}
		
		$smarty->assign("news", $news);
		
		$content = "detail_news.tpl";
		break;
	/* !Page: Detail */
	case "show":
		
		$db->query("SELECT pc.*, p.dbf_int_parentID FROM tab_page_content AS pc, tab_page AS p WHERE (pc.dbf_int_pageID = p.dbf_int_index) AND (pc.dbf_int_pageID = '".(int) $_GET["pid"]."') AND (pc.dbf_int_languageID = '".$_SESSION["languageID"]."') AND (p.dbf_int_active = 1)");
		
		if($db->getAffectedRows() == 1) {
		
			$page = $db->fetch_array_get_first();
			
			if($page["dbf_str_site_title"]) {
				$site["title"] = $page["dbf_str_site_title"];
			}
			if($page["dbf_str_site_description"]) {
				$site["description"] = $page["dbf_str_site_description"];
			}
			if($page["dbf_str_site_keywords"]) {
				$site["keywords"] = $page["dbf_str_site_keywords"];
			}
			
			$pageID = $_GET["pid"];
			$smarty->assign("samelevelpages", getSameLevelPages($pageID));
			$smarty->assign("nextlevelpages", getNextLevelPages($pageID));
			
			$page["dbf_str_content"] = $smarty->fetch("string:".$page["dbf_str_content"]);
			
			if(!$page["dbf_str_header_image"] && $page["dbf_int_parentID"]) {
				
				$page["dbf_str_header_image"] = getHeaderImage($pageID);
			
				/*$tempParentPage = getParentPage($page["dbf_int_parentID"]);
			
				if($tempParentPage["dbf_str_header_image"]) {
					$page["dbf_str_header_image"] = $tempParentPage["dbf_str_header_image"];
				}*/
				
				/*
				//echo "kein header bild definiert";
				$db->query("SELECT pc.*, p.dbf_int_parentID FROM tab_page_content AS pc, tab_page AS p WHERE (pc.dbf_int_pageID = p.dbf_int_index) AND (pc.dbf_int_pageID = '".$page["dbf_int_parentID"]."') AND (pc.dbf_int_languageID = '".$_SESSION["languageID"]."') AND (p.dbf_int_active = 1)");
				//echo "SELECT pc.*, p.dbf_int_parentID FROM tab_page_content AS pc, tab_page AS p WHERE (pc.dbf_int_pageID = p.dbf_int_index) AND (pc.dbf_int_pageID = '".$page["dbf_int_parentID"]."') AND (pc.dbf_int_languageID = '".$_SESSION["languageID"]."') AND (p.dbf_int_active = 1)";
				if($db->getAffectedRows() == 1) {
					//echo "ja";
					$tempParentPage = $db->fetch_array_get_first();
					
					if($tempParentPage["dbf_str_header_image"]) {
						$page["dbf_str_header_image"] = $tempParentPage["dbf_str_header_image"];
					}
				}*/
				
			}
			
			
			// Wurde die Seite über die Suche aufgerufen?		
			if($_GET["q"]) {
				
				//$page["dbf_str_content"] = str_replace($_GET["q"],"<font class=\"highlight\">".$_GET["q"]."</font>", $page["dbf_str_content"]);
				//$page["dbf_str_content"] = preg_replace("@".$_GET["q"]."(?![^<]*>)@", "<font class=\"highlight\">".$_GET["q"]."</font>", $page["dbf_str_content"]);
				
				preg_match_all("@".htmlentities($_GET["q"])."(?![^<]*>)@i", $page["dbf_str_content"], $matchingElements);
				
				// Alle gefundenen Elemente hervorheben, hierbei werden alle Schreibweisen berücksichtigt
				// $matchingElements wird über preg_match_all in der oberen if-Bedingung gefüllt
				foreach($matchingElements[0] as $v) {
					
					$page["dbf_str_content"] = preg_replace("@".$v."(?![^<]*>)@", "<font class=\"highlight\">".$v."</font>", $page["dbf_str_content"]);
					
				}
			}
			
			
			$smarty->assign("page", $page);
			$smarty->assign("location", getLocation());
			
			// Seitenstatistik erstellen
			
			
			
			$content = "page.tpl";
		}
		else {
		
			header("HTTP/1.0 404 Not Found");
		
			$content = "error_pagenotfound.tpl";
		}
		
		break;
	/* !Suche */
	case "search":
		
		$searchKey = "";
		if($_GET["search_key"]) {
			
			$searchKey = htmlentities($_GET["search_key"]);
		}
		if($_POST["search_key"]) {
			$searchKey = htmlentities($_POST["search_key"]);
		}
		
		$searchTitle = "";
		if($_GET["search_name"]) {
			$searchName = " AND pc.dbf_str_name LIKE '".$_GET["search_name"]."%'";
		}
	
		if($searchKey != "") {
			$db->query("SELECT pc.* FROM tab_page_content AS pc, tab_page AS p WHERE p.dbf_int_index = pc.dbf_int_pageID AND p.dbf_int_searchable = 1 AND p.dbf_int_active = 1 AND pc.dbf_str_content LIKE '%".$searchKey."%' AND pc.dbf_int_languageID = '".$_SESSION["languageID"]."'".$searchName);
		
			
			//$smarty->assign("search_result_count", $db->getAffectedRows());
			
			$tmp_data = $db->fetch_array();
			
			if($db->getAffectedRows() > 0) {
				foreach($tmp_data as $key => $value) {
					
					$matchingElements = null;
					
					// Befindet sich der Suchbegriff nicht in HTML-Tags?
					if(preg_match_all("@".$searchKey."(?![^<]*>)@i", $tmp_data[$key]["dbf_str_content"], $matchingElements)) {
						
						// HTML-Tags entfernen
						$tmp_data[$key]["dbf_str_content"] = strip_tags($tmp_data[$key]["dbf_str_content"]);
					
						// Suchbegriff im Text hervorheben
						//$tmp_data[$key]["dbf_str_content"] = str_replace($_POST["search_key"],"<font class=\"highlight\">".$_POST["search_key"]."</font>", $tmp_data[$key]["dbf_str_content"]);
						
						//print_r($matchingElements[0]);
						
						// Doppelte Einträge entfernen durch key-value-Vertauschung
						$matchingElements = array_flip($matchingElements[0]);
						$matchingElements = array_flip($matchingElements);
						
						
						// Alle gefundenen Elemente hervorheben, hierbei werden alle Schreibweisen berücksichtigt
						// $matchingElements wird über preg_match_all in der oberen if-Bedingung gefüllt
						foreach($matchingElements as $v) {
							
							$tmp_data[$key]["dbf_str_content"] = preg_replace("@".$v."(?![^<]*>)@", "<font class=\"highlight\">".$v."</font>", $tmp_data[$key]["dbf_str_content"]);
							
						}
						
						// Eintrag als Suchergebnis speichern
						$data[] = $tmp_data[$key];					
					}
					
				}
			}
			
			$smarty->assign("search_key", $searchKey);
			$smarty->assign("search_result_count", count($data));
			$smarty->assign("search_result", $data);
		}
		
		$content = "list_search.tpl";
		
		break;
	/* !Kontaktformular */
	case "contact":
		
		$mail_text = "";
		$contactFormSubmit = true;
		
		foreach($_POST as $key => $value) {
			$mail_text .= "$key: $value ";
			
			// Handelt es sich um ein Pflichtfeld?
			if($_SESSION["contact"][$key] && $value == "") {
				//echo "FELD NICHT AUSGEFÜLLT!";
				
				$contactFormSubmit = false;
			}
			
			$mail_text .= "<br>";
		}
		
		//echo $mail_text;
		//if($_SESSION["captcha"]) {
				
			if($_SESSION["captcha"] != $_POST["captcha"]) {
				$contactFormSubmit = false;
			}
			
		//}
		
		
		// Sind alle Pflichtfelder ausgefüllt?
		if($contactFormSubmit) {
			//echo "abschicken";
			$smarty->assign("contact_message", $_SESSION["contact"]["msg_positive"]);
			
			$contact_submitted = true;
			$smarty->assign("contact_submitted", $contact_submitted);
			
			if($_SESSION["contactSaveMail"]) {
				foreach($_SESSION["contactSaveMail"] as $key => $m) {
					
					//echo $key . "|" . $m["mail"]  . "|" . $m["from"]  . "|" . $m["subject"] . "<br>";
					
					// Handelt es sich um eine gesetzte POST-Variable, wird der Absender auf den POST-Wert gesetzt
					if($_POST[$m["from"]]) {
						$m["from"] = $_POST[$m["from"]];					
					}
					
					// Mailversand über SMTP möglich?
					if($settings["dbf_int_smtp_active"] == "1" && $settings["dbf_str_smtp_host"] && $settings["dbf_str_smtp_auth"] && $settings["dbf_str_smtp_username"] && $settings["dbf_str_smtp_password"]) {
					
						// Mailversand
						$mail = new SMTPMailer($settings["dbf_str_smtp_host"], (bool) $settings["dbf_str_smtp_auth"],$settings["dbf_str_smtp_username"],$settings["dbf_str_smtp_password"], 587);
					
						$headers = array('From' => $m["from"],
								  'To' => $m["mail"],
								  'Subject' => $m["subject"]);
						
						$mail->send($m["mail"], $m["subject"], $mail_text, $headers);
						
					
					
					}
					else {
						$mail_header = "Content-Type:text/html\r\n";
						$mail_header .= "FROM:".$m["from"]."\r\n";
					
						@mail($m["mail"], $m["subject"], $mail_text, $mail_header);
					}
				}
			}
			
			// Gibt es eine DB, in die die Werte gespeichert werden sollen
			if($_SESSION["contactSaveDB"]) {
				
				// Vorhandene Datenbanken durchlaufen
				foreach($_SESSION["contactSaveDB"] as $k => $d) {
					
					//echo $k . "|" . $d["host"]  . "|" . $d["db"] . "|" . $d["user"]  . "|" . $d["password"]  . "<br>";
					
					// Verbindung zur Datenbank aufbauen
					$tmp_db = new Mysql($d["db"], $d["host"], $d["user"], $d["password"]);	
					$tmp_db->connect();
					
					$z = 0;
					$sql_entities = "";
					$sql_values = "";
					
					// Datenbankfelder durchlaufen
					foreach($d["field"] as $dbf_name => $value) {
						
						// Komma nur setzen, wenn es sich nicht um das erste Feld handelt
						if($z != 0) {
							$sql_entities .= ", ";
							$sql_values .= ", ";
						}
						
						$sql_entities .= $dbf_name;
						
						// Gibt es einen POST-Wert zu dem Value?
						if($_POST[$value]) {
							$sql_values .= "'" . $_POST[$value] . "'";
						}
						else $sql_values .= $value;
						
						// 
						$z++;
					}
					
					// Query zusammensetzen
					$sql = "INSERT INTO " . $d["table"] . " (" . $sql_entities . ") VALUES (" . $sql_values . ");";
					//echo $sql;
					$tmp_db->query($sql);
					
					$tmp_db->close();
				}
				
				// Connection zur eigentlichen Datenbank wieder herstellen
				$db->connect();
			}
			
			// Daten sollen per POST weitergeleitet werden
			if($_SESSION["contactSavePOST"]) {
				
				foreach($_SESSION["contactSavePOST"] as $k => $d) {
					
					/*$sendPOST = true;
					
					if($d["sendCondition"]) {
						
						//$sendPOST = eval($d["sendCondition"]);
						
					}*/
					
					$postVars = "";
					
					foreach($d["field"] as $post_var_name => $value) {
						
						if(is_array($_POST[$value])) {
							
							foreach($_POST[$value] as $arrayIndex => $arrayValue) {
								
								$postVars .= $post_var_name . "[" .$arrayIndex . "]=" . $arrayValue . "&";
								
							}
							
						}
						else $postVars .= $post_var_name . "=" . $_POST[$value] . "&";
						
						
					}
					
					//DEBUG
					//mail("witte@cesario.de", "DEBUG: Kontaktformular", $postVars, "FROM:info@cesario.de");
					
					$ch = curl_init($d["url"]);
		
					curl_setopt($ch, CURLOPT_POST, 1);
					curl_setopt($ch, CURLOPT_POSTFIELDS, $postVars);
					curl_exec($ch);
					curl_close($ch);
				}
			}
			
			// @deprecated
			if($_SESSION["contact"]["mail"]) {
				// Mail verschicken
				mail($_SESSION["contact"]["mail"], "Anfrage über Webseite", $mail_text, "Content-Type:text/html\r\n");
			}
			
			// Soll auf eine andere Seite weitergeleitet werden?
			if($_SESSION["contact"]["location_positive"]) {
				header("Location:". str_replace("&amp;", "&", $_SESSION["contact"]["location_positive"]));
			}

		}
		else {
			//echo "FEHLER";
			$smarty->assign("contact_message", $_SESSION["contact"]["msg_negative"]);
		}
		
		// @TODO auslagern (Dublikat siehe case "show")
		$db->query("SELECT * FROM tab_page_content WHERE (dbf_int_pageID = '".(int) $_GET["pid"]."') AND (dbf_int_languageID = '".$_SESSION["languageID"]."')");
		
		$page = $db->fetch_array_get_first();
		
		if($page["dbf_str_site_title"]) {
			$site["title"] = $page["dbf_str_site_title"];
		}
		
		//$pagecontent = $page["dbf_str_content"];
		$pageID = $_GET["pid"];
		$page["dbf_str_content"] = $smarty->fetch("db:$pageID");
		//$smarty->display("db:$pageID");
		$smarty->assign("page", $page);
		
		$content = "page.tpl";
		// @TODO auslagern ~ENDE~
		
		
		
		
		break;
	default:
		
		if($site["defaultPageID"]) {
			
			$db->query("SELECT pc.* FROM tab_page_content AS pc, tab_page AS p WHERE (pc.dbf_int_pageID = p.dbf_int_index) AND (pc.dbf_int_pageID = '". $site["defaultPageID"]."') AND (pc.dbf_int_languageID = '".$_SESSION["languageID"]."') AND (p.dbf_int_active = 1)");
		
			if($db->getAffectedRows() == 1) {
			
				$page = $db->fetch_array_get_first();
				
				if($page["dbf_str_site_title"]) {
					$site["title"] = $page["dbf_str_site_title"];
				}
				if($page["dbf_str_site_description"]) {
					$site["description"] = $page["dbf_str_site_description"];
				}
				if($page["dbf_str_site_keywords"]) {
					$site["keywords"] = $page["dbf_str_site_keywords"];
				}
				
				$pageID = $site["defaultPageID"];
				$smarty->assign("samelevelpages", getSameLevelPages($pageID));
				$smarty->assign("nextlevelpages", getNextLevelPages($pageID));
				
				//$page["dbf_str_content"] = $smarty->fetch("db:$pageID");
				$page["dbf_str_content"] = $smarty->fetch("string:".$page["dbf_str_content"]);
				
				$smarty->assign("page", $page);
				$smarty->assign("location", getLocation());
				
				$content = "page.tpl";
			}
		
		
		
			//header("Location:?action=show&pid=".$site["defaultPageID"]);
		}
		
		break;
}




$smarty->assign("site", $site);


// Soll der Textmodus angezeigt werden?
/*if($_GET["mobilemode"] == 1) {
	$_SESSION["mobilemode"] == 1;
	$smarty->display($content);
}
else {
	
	if($_GET["mobilemode"] == -1) {
		session_unregister("mobilemode");
	}
	
	$smarty->assign("content", $content);
	$smarty->display("mainsite.tpl");
}*/

if(isset($_GET["mobilemode"]) && $_GET["mobilemode"] == 1) {
	$_SESSION["mobilemode"] = 1;
}
elseif(isset($_GET["mobilemode"]) && $_GET["mobilemode"] == -1) {
	session_unregister("mobilemode");
}

if(isset($_SESSION["mobilemode"]) && $_SESSION["mobilemode"] == 1) {
	if($showMainsite) {
		$smarty->display($content);
	}
}
else {
	
	if($showMainsite) {

		$smarty->assign("content", $content);
		$smarty->display("mainsite.tpl");
	}
	
	
}


// Statistik ~START~
// Alle Aufrufe zählen
$db->query("SELECT * FROM tab_log_pagerequests WHERE (dbf_int_pageID = '".$id."') AND (DATE(dbf_ts_date) = DATE(NOW()))");
if($db->getAffectedRows() >= 1) { // Datensatz schon vorhanden
	$db->query("UPDATE tab_log_pagerequests SET dbf_int_requests = dbf_int_requests + 1 WHERE dbf_int_pageID = '".$id."' AND (DATE(dbf_ts_date) = DATE(NOW()))"); // Aufruf von index.php
}
else { // Datensatz noch nicht vorhanden; Anlegen
	$db->query("INSERT INTO tab_log_pagerequests (`dbf_int_pageID`, `dbf_int_requests`, `dbf_ts_date`) VALUES ('".$id."', 1, NOW())");
}
// Statistik ~END~



function getExistingLanguages() {
	
	global $db;
	
	$db->query("SELECT * FROM tab_language WHERE dbf_int_active = 1 ORDER BY dbf_int_position");
	
	return $db->fetch_array();
	
}

function getPageById($pid) {
	
	global $db;
	global $site;
	
	$db->query("SELECT * FROM tab_page_content WHERE (dbf_int_pageID = '".(int) $pid."') AND (dbf_int_languageID = '".$_SESSION["languageID"]."')");
	
	$page = $db->fetch_array_get_first();
	
	if($page["dbf_str_site_title"]) {
		$site["title"] = $page["dbf_str_site_title"];
	}
	
	return $page;
}

function getHeaderImage($pageID) {
	
	global $db;
	
	$db->query("SELECT pc.*, p.dbf_int_parentID FROM tab_page_content AS pc, tab_page AS p WHERE (pc.dbf_int_pageID = p.dbf_int_index) AND (pc.dbf_int_pageID = '".$pageID."') AND (pc.dbf_int_languageID = '".$_SESSION["languageID"]."') AND (p.dbf_int_active = 1)");
	
	if($db->getAffectedRows() == 1) {
		
		$tempPage = $db->fetch_array_get_first();
		
		if($tempPage["dbf_str_header_image"]) {
		
			return $tempPage["dbf_str_header_image"];
		
		}
		elseif($tempPage["dbf_int_parentID"]) {
		
			return getHeaderImage($tempPage["dbf_int_parentID"]);
		
		}
		else {
			return null;
		}
	}
	else {
		return null;
	}

}
?>