<?php
/**
* @author David Däster und Simon Däster
* @package JClubCMS
* Index.php
* License: GPL
*
* Diese Seite ist für die Anzeig der Navigation veranwortlich
* und lädt die notwendigen Module
*/
/* Verbindung zur Datenbank*/
include ("include/config.php");
$mysql->query("SELECT menu_ID, menu_name FROM menu WHERE menu_topid=0 ORDER BY menu_position ASC");
$nav_array = array();
$i = 0;
while ($nav_data = $mysql->fetcharray()) {
$nav_array[$i] = array('menu_ID'=>$nav_data["menu_ID"], 'menu_name'=>$nav_data["menu_name"]);
$i++;
}
//$smarty->assign("nav", $nav_array);
/** Kontrolle der Get-Variable $_GET['nav_id']. Zur Vereinfachung in $nav_id gespeichert*/
$nav_id = (int) $_GET["nav_id"];
if ($nav_id <= 0) {
$nav_id = $nav_array[0]['menu_ID'];
}
/**
* Hier werden alle Verweise ausgelesen: ID, höhere Navigation (topid), Position, Name,
* zugehörige Seite (page) und ob Modul oder Page £
*/
$mysql->query("SELECT * FROM menu WHERE menu_ID = $nav_id");
$page_data = $mysql->fetcharray();
$page_id = $page_data["menu_page"];
/**
* Hier folgt das
* ***************M E N U ***************
* ES wird kompliziert
*/
/**
* Der gerade aktive Navigationslink und alle direkt darüberliegende Links
* werden im Array $root_array gespeichert.
*
* Aufbau:
* topid: 0 -Gallery
* -Gästebuch
* Und dann gehts weiter nach unten
* Info: Einträge mit 'menu_display' = 0 werden nicht angezeigt
*
*/
$child_array = array();
$root_array = array();
//Die Stufe beginnt von unten zu zählen, statt von oben. Wird am Schluss umgerechnet
$invlevel = 1;
//Alle Einträge unterhalb des $nav_id Eintrags werden gelesen
//Sie haben den $invlevel 1
$mysql->query("SELECT menu_ID, menu_topid, menu_name FROM menu WHERE menu_topid = $nav_id and `menu_display` != '0' ORDER BY menu_position");
$i = 0;
while ($subnav_data = $mysql->fetcharray()) {
$child_array[$i] = array('menu_ID'=>$subnav_data["menu_ID"], 'menu_name'=>$subnav_data["menu_name"], 'menu_topid'=>$subnav_data["menu_topid"], 'level'=>$invlevel);
$i++;
}
//Die nächsthöhere TopID
$next_topid = $page_data["menu_topid"];
//Solange durchlaufen lassen bis obersten Navitationsteile erreicht sind (top_id == 0)
while (($next_topid != 0 || $next_topid != false)) {
$i = 0;
// $top_id kann aus dem Array $child_array herausgelesen werden
// beim 1. Durchgang kann das Child-Array leer sein, man kann dafür die $nav_id nehmen
if(empty($child_array[0]["menu_topid"])) {
$top_id = $nav_id;
} else {
$top_id = $child_array[0]["menu_topid"];
}
//Erhöhung des $invlevels, da eine Stufe weiter Richtung oben
$invlevel++;
$mysql->query("SELECT menu_ID, menu_topid, menu_name FROM menu WHERE menu_topid = $next_topid and `menu_display` != '0' ORDER BY menu_position ASC");
//Die Tabelle auslesen
while($subnav_data = $mysql->fetcharray()) {
$root_array[$i] = array('menu_ID'=>$subnav_data["menu_ID"], 'menu_name'=>$subnav_data["menu_name"], 'menu_topid'=>$subnav_data["menu_topid"], 'level'=>$invlevel);
/**
* //Wenn die menu_ID die Top_id des Child-Array ist, heisst das,
* menu_ID liegt direkt darüber
* Z.B Eintrag 2.1
* Eintrag 2.1.1
* Eintrag 2.1.2
*
* Eintrag 2.1 und Eintrag 2.1.1 liegen gerade übereinander
*
* Array werden zusammengefügt.
* Anzahl der Elemente wird in $i gespeichert, damit weder überschrieben wird noch sich eine Lücke bildet
*/
if($root_array[$i]["menu_ID"] == $top_id) {
$root_array = array_merge($root_array, $child_array);
//Minus 1, weil es sonst einen Zwischenraum gibt. Z.B. $root_array[2], dann $root_array[4]
$i = count($root_array) - 1;
}
$i++;
}
$child_array = $root_array;
$root_array = array();
/**
* Naechste top_id herausfinden
*/
//Hier wird noch mit der alten $next_topid gerechnet. Die Topid vom höheren Menu wird gelesen
$mysql->query("SELECT menu_topid FROM menu WHERE menu_ID = $next_topid and `menu_display` != '0' LIMIT 1");
$subnav_data = $mysql->fetcharray();
//Neues $next_topid
$next_topid = $subnav_data["menu_topid"];
}
//Ende Whileschleife
/**
* Die $invlevels müssen noch umgekehrt werden. Momentan ist der tiefste Eintrags-Lebel 1,
* aber der höchste Eintragslevel soll 1 werden
*/
//Das Anzahl Level wird abgespeichtert
$anzlevel = $invlevel;
$invlevel = 0;
$number = count($child_array);
//Die Umrechnunsschleife, die Levels werden neu gesetzt: Das Höchste jetzt das Tiefste und umgekehrt
for($i = 0; $i < $number; $i++) {
$invlevel = $child_array[$i]['level'];
$child_array[$i]['level'] = $anzlevel - $invlevel + 1;
}
//Die Subnav_array mit dem vollständigen child_array füllen
$subnav_array = $child_array;
/**
* Das komplizierte ist jetzt vorbei
* ************** Menu Ende ***********
*
*/
$mysql->query("SELECT * FROM content WHERE content_ID = $page_id");
$data = $mysql->fetcharray();
$content_title = $data["content_title"];
$content_text = $data["content_text"];
?>