<?php
// ### INFOS ###
// 1. Ordner ohne index.php datei werden nicht aufgelistet
// 2. Ordner selbst werden auf /ordner/index.php verlinkt
// 3. Vorraussetzung ist, dass die Pfade bzw. Verzeichnisse genau so benannt sind wie die GET_Parameter
// 4. Es sind nur .php Datein zum includen über die GET Parameter vorgesehen
// Config
$index_path = "index.php?"; // (Pfad/)Datei, an welche die GET_Parameter der Links geschickt werden (z.B. "index.php?" , die Links sind dann "index.php?a=xxx&b=yyy" )
$parameter = array ( // $_GET Parameter zum includen in die Datei "$index_path" ( z.B. ?a=xxx&b=yyy&c=index ). Es sind 4 hirachische Stufen vorgesehen.
"para0"=>"a=",
"para1"=>"&b=",
"para2"=>"&c=",
"para3"=>"&d=");
$dir_start_map = "content/"; // Verzeichniss welches Ausgelesen wird (relativ zu dieser Datei, mit Slash am Ende (z.B. "dir/" )
$listed_extensions = array( // Dateiendungen welche ausgelesen werden (z.B. "php", "xml"); ohne Punkt vor Endung
"php", "xml" , "pdf");
$unlisted_suffix = ".inc"; // Teil des Dateinamens von Dateien welche nicht mit gelistetet werden sollen (z.B. ".inc" für "menu.inc.php")
// lädt Array zum Umformen der Dateinamen in den ausgegebenen Text der Links. Wird in der Funktion text() verwendet. Beides kann ggf. gelöscht werden.
require_once("config/confic_breadcrump.php");
// End Cofig
// Prüft, ob dateityp ausgegeben wird
function file_extension($file){
global $listed_extensions;
$path_parts = pathinfo($file);
if(in_array($path_parts["extension"] , $listed_extensions ) ){
return true;
}else{
return false;
}
}
// Filtert Dateien mit speziellem Namen bzw. Namensteil (z.B. inhalt.inc.php -> .inc Dateien werden nicht ausgelesen)
function file_name($file){
global $unlisted_suffix;
$list_file = strpos($file, $unlisted_suffix);
$path_parts = pathinfo($file); // verhindert das listen der index.php's
if($path_parts["basename"] == "index.php"){
$list_indexfile = true;
}
if($list_file === false and $list_indexfile == false){
return true;
}else{
return false;
}
}
// Erzeugt Pfade
function url($path){
global $parameter;
global $index_path;
global $dir_start_map;
$clean_path = ereg_replace($dir_start_map."/", "", $path);
$path_parts = pathinfo($path); // nur wenn es eine .php Datei ist, wird Pfad mit Parametern umgebaut, sonst bleibt er
if($path_parts["extension"] != "php" and !is_dir($path)){ // !is_dir, damit Pfad auf Ordner nicht betroffen ist
$url = $dir_start_map.$clean_path;
return $url;
exit;
}
// Pfad für .php Dateien
$url_parts = explode("/" , $clean_path);
if(is_dir($path) ){ // erweitet die Pfade der Verzeichnisse um /index um auf die darin liegende index-Datei zu verwisen
$url_parts[] = "index";
}
for($i=0; $i < count($url_parts); $i++){
$url .= "para".$i.$url_parts[$i];
}
$parameter[".php"] = ""; // fügt "php"=>"" dem Array hinzu um .php zu entfernen
$url = strtr($index_path.strtr($url, $parameter), array("?a=index"=>"")); // entf. a=index, startseite nicht includen
return $url;
}
// Formt Dateinamen in Text der Links um. Benötigt "config/confic_breadcrump.php"
function text($txt){
global $_show;
$_show[".php"]= "";
return ucwords(strtr($txt, $_show ));
}
// Liest Verzeichnisse aus (ruft sich selbst auf um Unterverzeichnisse mitzunehmen)
function get_dir ($dir) {
//global $index_path;
$fp=opendir($dir);
while($datei=readdir($fp)) {
$path = "$dir/$datei";
if (is_dir($path) && $datei!="." && $datei!=".." and file_exists($path."/index.php")) { // wenn es ein Verzeichnis mit index.php ist
echo "<li><a href=\"".url($path)."\"class=\"parent\">".text($datei)."</a> \n";
echo "<ul> \n";
get_dir("$dir/$datei");
echo "</li>\n</ul>\n";
}elseif( ($datei!="." && $datei!="..") and file_extension($datei) == true and file_name($datei)== true){ // wenn es eine erlaubte datei ist
echo "<li><a href=\"".url($path)."\">".text($datei)."</a></li> \n";
}
}
closedir($fp);
}
echo "<ul class=\"sitemap\"> \n";
get_dir($dir_start_map);
echo "</ul>\n";
?>