<?php

ob_start(function($content) {
	$headers = strtolower(implode("\n", headers_list()));
	// TODO: Bei problemen weitere Bedingungen hinzufügen
	$has_redirect = (strpos($headers, "location:") > 0 ? true : false);
	$has_content_type = (strpos($headers, "content-type:") > 0 ? true : false);
	$is_html = ( !$has_content_type || (strpos($headers, "content-type: text/html") > 0) ? true : false);
	if (!$is_html || $has_redirect) {
		// Leave output untouched
		return $content;
	}
	$result = "";
	$dom_result = new DOMDocument('1.0', 'UTF-8');
	if ($dom_result->loadHTML($content)) {
		// Initialize kernel
		if (($param_start = strpos($_SERVER["REQUEST_URI"], "?")) > 0) {
			// Remove parameters from URL
			$_SERVER["REQUEST_URI"] = substr($_SERVER["REQUEST_URI"], 0, $param_start-1);
		}
		// TODO: Gewünschte parameter in $_REQUEST eintragen statt in die REQUEST_URI (mein Kernel wertet die ebenfalls aus)
		$_SERVER["REQUEST_URI"] .= "?page=forum&mode=page";
		switch ($_REQUEST["lang"]) {
			case "de":
				$_SERVER["REQUEST_URI"] .= "&lang=ger";
				break;
			case "en":
				$_SERVER["REQUEST_URI"] .= "&lang=eng";
				break;
		}
		// TODO: ggf. Pfad anpassen: ."/website"
		chdir($_SERVER["DOCUMENT_ROOT"]);
		//
		// TODO: Änderung an der index.php nötig!
		/**
		 * Unter anderem Namen eine Kopie der index.php anlegen und hier angeben.
		 * Darin wird alles gemacht wie gewohnt AUSSER das template zu parsen.
		 * In der index.php wird diese Kopie dann einfach includiert und anstließend das template geparsed und ausgegeben.
		 */
		include "index_base.php";
		$dom_header = new DOMDocument();
		$dom_body = new DOMDocument();
		// Read forum output (header)
		// TODO: Bei problemen um ungewünschte tags erweitern
		$header_tags_forbidden = array("a"); 	// Do not allow these tags in the "head" area
		$header_tags_forbidden_move = true;		// Move forbidden tags to body instead
		$dom_header_elements = $dom_result->getElementsByTagName("head")->item(0)->childNodes;
		for ($cur = 0; $cur < $dom_header_elements->length; $cur++) {
			if (!in_array($dom_header_elements->item($cur)->nodeName, $header_tags_forbidden)) {
				$dom_header->appendChild(
					$dom_header->importNode($dom_header_elements->item($cur), true)
				);
			} else if ($header_tags_forbidden_move) {
				$dom_body->appendChild(
					$dom_body->importNode($dom_header_elements->item($cur), true)
				);
			}
		}
		// Read forum output (body)
		// TODO: Bei problemen um ungewünschte tags erweitern
		$body_tags_forbidden = array(); 		// Do not allow these tags in the "body" area
		$body_tags_forbidden_move = true;		// Move forbidden tags to head instead
		$dom_body_elements = $dom_result->getElementsByTagName("body")->item(0)->childNodes;
		for ($cur = 0; $cur < $dom_body_elements->length; $cur++) {
			if (!in_array($dom_body_elements->item($cur)->nodeName, $body_tags_forbidden)) {
				$dom_body->appendChild(
					$dom_body->importNode($dom_body_elements->item($cur), true)
				);
			} else if ($header_tags_forbidden_move) {
				$dom_header->appendChild(
					$dom_header->importNode($dom_body_elements->item($cur), true)
				);
			}
		}

		$html_header = $dom_header->saveHTML();
		$html_body = $dom_body->saveHTML();

		// TODO: Hier den header und body des Forums an die entsprechenden Stellen einfügen, parsen und das Ergebnis in $result ablegen
		$tpl->AddVar("forum_header", $html_header);
		$tpl->AddVar("content", $html_body);
		$result = $tpl->Parse(true);
	}
	return $result;
});

?>