<?php
error_reporting
(E_ALL);

# die seite ist nicht! objectorientiert gestaltet, weil es sich nicht lohnt, vom ding
# her sucht das php nämlich nur die entsprechenden HTML files und liefert sie aus! 

# das hier ist weit oben, da dann der ganze rest nicht mehr berechnet werden muss :)
# htaccess anzeigen
if(isset($_GET['pleaseShowMeTheHtaccess'])){
    
header('Content-Type:text/html;charset=utf-8');
    
highlight_file(dirname(__FILE__) . '/.htaccess');
    exit;
}
# index anzeigen
if(isset($_GET['pleaseShowMeTheIndex'])){
    
header('Content-Type:text/html;charset=utf-8');
    
highlight_file(dirname(__FILE__) . '/index.php');
    exit;
}

# contact anzeigen
if(isset($_GET['pleaseShowMeTheContact']) && is_file(dirname(__FILE__) . '/contact.php')){
    
header('Content-Type:text/html;charset=utf-8');
    
highlight_file(dirname(__FILE__) . '/contact.php');
    exit;
}


# ist nur eine Sicherheit, falls der Server nicht von sich aus in utf-8 ausliefert,
# ist manchmal leider so!
preg_match('/\bapplication\/xhtml\+xml\b/'$_SERVER['HTTP_ACCEPT'], $type);
$type = isset($type[0]) ? $type[0] : 'text/html';
header('Content-Type:'.$type.';charset=utf-8');

# eine kleine Konstante für den absoluten Pfad im HTML
define('RES_PATH'str_replace($_SERVER['DOCUMENT_ROOT'], ''dirname(__FILE__)));
# sowie eine Konstante für die internen Pfade
define('ROOT_PATH'dirname(__FILE__) . '/');


# alle Inhalte, die es geben können soll, inkl. title-zusatz, oder true,
# weil die Werte der Schlüssel (der Datein) als Überprüfung dient, ob die Inhalte
# gezeigt werden dürfen, oder error 404 ausgegeben werden soll!
$tableOfContents = array(
    
'index.html' => true,
    
'about.html' => 'Über die Hintergründe der Seite',
    
'author.html' => 'Ein paar Angaben zum Autor',
    
'kontakt.html' => 'Kontakt',
    
'comments.html' => 'Komentare',
    
'das-verb.html' => 'Das Verb',
    
'das-verb-zeiten.html' => 'Die Zeiten',
    
'das-nomen.html' => 'Das Nomen',
    
'das-adjektiv.html' => 'Das Adjektiv',
    
'das-adverb.html' => 'Das Adverb',
    
'das-pronomen.html' => 'Das Pronomen',
    
'die-konjunktion.html' => 'Die Konjunktion',
    
'die-wortstellung.html' => 'Die Wortstellung',
    
'zaehlwoerter.html' => 'Zählwörter / Mengenbezeichnungen'
);
$interactiveContents = array(
    
'kontakt.html' => ROOT_PATH 'contact.php',
    
'comments.html' => ROOT_PATH 'comments.php'
);

# diese Datei wird angezeigt, fals der Request nicht angezeigt werden kann
$notFound ROOT_PATH 'error404.html';

# den request in eine einheitliche Form bringen: ('dateinname.html' | '')
$request preg_replace("@/(.*?/)*@"""$_SERVER['REQUEST_URI']);
$request str_replace('?' $_SERVER['QUERY_STRING'], ''$request);
$request preg_replace("/\..*/"".html"$request);

# falls der ajax parameter gesetzt ist, wird nur das nötigste HTML gesendet
# (kein header, kein footer, kein menu, nur der content)!
$ajax = isset($_GET['ajax']);
# index ist true, wenn keine Datei oder so übergeben wurde!
$index = (trim($request) == '');

# dem request .html anhängen, wenn es nicht da ist!
if(!preg_match("/\.html/"$request))
    
$request .= '.html';

# wenn index, dann bekommt request die entsprechende Datei übergeben
if($index){
    
$request ROOT_PATH 'index.html';
# ansonsten, oder wenn die Datei nicht angezeigt werden darf, dann wird
# error 404 gesendet und der request wird das Fehler-dokument
}elseif(isset($interactiveContents[$request]) && is_file($interactiveContents[$request])){
    
$interactive true;
    require_once(
$interactiveContents[$request]);
}elseif(!isset(
$tableOfContents[$request]) || !is_file(ROOT_PATH $request)){
    
$request $notFound;
    
header('HTTP/1.1 404 Not Found');
}else{
    
$request ROOT_PATH $request;
}
# falls ajax!
if($ajax){
    require_once(
$request);
    exit;
}

# hier wird überprüft, ob sich die Datei sich seit der letzten Anfrage geändert hat,
# sofern sie noch im Browser-cache liegt, ist das der Fall wird 304 gesendet und
# danach der request beendet, das spart Traffic! 
if($request != $notFound && !isset($interactive)){
    
$etag md5(filemtime(__FILE__).filemtime($request));
    if(isset(
$_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] === $etag && empty($_POST)){
        
header('HTTP/1.1 304 Not Modified');
        exit();
    }
    
header('ETag: '.$etag);
}

# hier beginnt die Ausgabe, in der Ausgabe werden die Datein wie zuvor definiert
# eingebunden (witer unten!)
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-DE" lang="de-DE">
<!--[if IE]><![endif]--><!-- Just a hack for IE performance view: http://www.phpied.com/conditional-comments-block-downloads -->
<head>
    <meta http-equiv="Content-Type"        content="<?php echo $type;?>; charset=utf-8" />
    <meta http-equiv="Content-Language"    content="de-DE" />
    <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <meta http-equiv="Content-Style-Type"  content="text/css" />
    <?php if($index){ ?><meta name="description" content="Auf dieser Seite möchte ich ein paar Übungen zur Englischen Grammatik online stellen, welche aus meiner Schulzeit stammen." />
    <?php ?><title>Englische Grammatik lernen<?php if(isset($tableOfContents[$request]) && is_string($tableOfContents[$request])) echo ' ('.$tableOfContents[$request].')';?></title>
    <style type="text/css">@import url('<?php echo RES_PATH;?>/layout.css');</style>
</head>
<!--[if lt IE 7]><body class="ie ie6"><![endif]-->
<!--[if IE 7]><body class="ie ie7"><![endif]-->
<!--[if IE 8]><body class="ie ie8"><![endif]-->
<!--[if !IE]><!--><body class="no-ie"><!-- <![endif]-->
    <script type="text/javascript">/*<![CDATA[*/document.body.className += ' js';/*]]>*/</script>
    <div id="wrapper">
        <h1 id="header">
            <a href="<?php echo RES_PATH;?>/">Englische Grammatik</a>
        </h1>
        <ul id="keyboard-nav">
            <li><a href="#content">Inhalt</a></li>
            <li><a href="#main-nav">Hauptmenü</a></li>
            <li><a href="#footer">Seitenende</a></li>
        </ul>
        <div id="main" class="clearfix">
        <!-- All these conditional-comments are only for IE-flyout-rendering -->
            <ul class="menu" id="main-nav">
                <li><a href="<?php echo RES_PATH;?>/das-verb.html">Das Verb<!--[if gte IE 7]><!--></a><!--<![endif]--><!--[if lte IE 6]><table><tr><td><![endif]--><ul>
                    <li><a href="<?php echo RES_PATH;?>/das-verb-active.html">Active<!--[if gte IE 7]><!--></a><!--<![endif]--><!--[if lte IE 6]><table><tr><td><![endif]--><ul>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-active.html#gegenwart">Präsens / Gegenwart</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-active.html#imperfekt">Imperfekt / Vergangenheit</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-active.html#perfekt">Perfekt / vollendete Gegenwart</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-active.html#imperfekt-perfekt">Imperfekt und Perfekt im Vergleich</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-active.html#plusquamperfekt">Plusquamperfekt / vollendete Vergangenheit</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-active.html#futur1">Futur I</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-active.html#going-to">"Going-to" Futur</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-active.html#futur2">Futur II</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-active.html#konditional1">Konditional I</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-active.html#konditional2">Konditional II</a></li>
                    </ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li>
                    <li><a href="<?php echo RES_PATH;?>/das-verb-passive.html">Passive<!--[if gte IE 7]><!--></a><!--<![endif]--><!--[if lte IE 6]><table><tr><td><![endif]--><ul>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-passive.html#gegenwart">Präsens / Gegenwart</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-passive.html#imperfekt">Imperfekt / Vergangenheit</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-passive.html#perfekt">Perfekt / vollendete Gegenwart</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-passive.html#imperfekt-perfekt">Imperfekt und Perfekt im Vergleich</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-passive.html#plusquamperfekt">Plusquamperfekt / vollendete Vergangenheit</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-passive.html#futur1">Futur I</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-passive.html#going-to">"Going-to" Futur</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-passive.html#futur2">Futur II</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-passive.html#konditional1">Konditional I</a></li>
                        <li><a href="<?php echo RES_PATH;?>/das-verb-passive.html#konditional2">Konditional II</a></li>
                    </ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li>
                    <li><a href="<?php echo RES_PATH;?>/das-verb.html#indirekte-rede">Indirekte Rede</a></li>
                    <li><a href="<?php echo RES_PATH;?>/das-verb.html#hilfsverben">Hilfsverben</a></li>
                    <li><a href="<?php echo RES_PATH;?>/das-verb.html#gerundium">Gerundium</a></li>
                    <li><a href="<?php echo RES_PATH;?>/das-verb.html#if">If-Sätze</a></li>
                </ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li>
                <li><a href="<?php echo RES_PATH;?>/das-nomen.html">Das Nomen<!--[if gte IE 7]><!--></a><!--<![endif]--><!--[if lte IE 6]><table><tr><td><![endif]--><ul>
                    <li><a href="<?php echo RES_PATH;?>/das-nomen.html#plural">Plural</a></li>
                    <li><a href="<?php echo RES_PATH;?>/das-nomen.html#genitiv">Der Genitiv</a></li>
                    <li><a href="<?php echo RES_PATH;?>/das-nomen.html#artikel">Der Artikel</a></li>
                </ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li>
                <li><a href="<?php echo RES_PATH;?>/das-adjektive.html">Das Adjektive</a></li>
                <li><a href="<?php echo RES_PATH;?>/das-adverb.html">Das Adverb</a></li>
                <li><a href="<?php echo RES_PATH;?>/das-pronomen.html">Das Pronomen</a></li>
                <li><a href="<?php echo RES_PATH;?>/die-konjunktion.html">Die Konjunktion</a></li>
                <li><a href="<?php echo RES_PATH;?>/die-wortstellung.html">Die Wortstellung</a></li>
                <li><a href="<?php echo RES_PATH;?>/unbestimmte-zahlworter.html">Zählwörter / Mengenbezeichnungen</a></li>
            </ul>
            <div id="content" class="clearfix">
<?php
# info ausgabe, dass die Seite noch nicht fertig ist!
if($request != $notFound){
?><p class="add information">Viele Seiten sind noch nicht verfügbar, weil ich Sie noch nicht fertig geschrieben und kontrolliert habe!</p>
<?php }
# die passende Datei ausgeben 
require_once($request);
?>
            </div>
        </div>
        <address id="footer"><a href="<?php echo RES_PATH;?>/comments.html">Kommentare</a> | <a href="<?php echo RES_PATH;?>/about.html">Über diese Seite</a> | <a href="<?php echo RES_PATH;?>/author.html">Über den Autor</a> | <a href="<?php echo RES_PATH;?>/kontakt.html">Kontakt aufnehmen</a></address>
    </div>
    <script type="text/javascript" charset="utf-8" src="js.js"></script>
</body>
</html>