"; print_r($_REQUEST); echo ""; */ require_once("Language.php"); require_once("Properties.php"); require_once("SpecialChars.php"); require_once("Syntax.php"); require_once("Smileys.php"); require_once("Mail.php"); $language = new Language(); $mainconfig = new Properties("conf/main.conf"); $adminconfig = new Properties("admin/conf/basic.conf"); $specialchars = new SpecialChars(); $syntax = new Syntax(); $smileys = new Smileys("smileys"); $mailfunctions = new Mail(false); // Dateiendungen für Inhaltsseiten $EXT_PAGE = ".txt"; $EXT_HIDDEN = ".hid"; $EXT_DRAFT = ".tmp"; // Config-Parameter auslesen $LAYOUT_DIR = $mainconfig->get("cmslayout"); $TEMPLATE_FILE = "layouts/$LAYOUT_DIR/template.html"; $CSS_FILE = "layouts/$LAYOUT_DIR/css/style.css"; $FAVICON_FILE = "layouts/$LAYOUT_DIR/favicon.ico"; // Template für Kontaktformular $contactformconfig = new Properties("formular/formular.conf"); $WEBSITE_NAME = $mainconfig->get("websitetitle"); if ($WEBSITE_NAME == "") $WEBSITE_NAME = "Titel der Website"; $DEFAULT_CATEGORY = $mainconfig->get("defaultcat"); if ($DEFAULT_CATEGORY == "") $DEFAULT_CATEGORY = "10_Willkommen"; $DEFAULT_PAGE = $mainconfig->get("defaultpage"); if ($DEFAULT_PAGE == "") $DEFAULT_PAGE = "10_Willkommen"; $USE_CMS_SYNTAX = true; if ($mainconfig->get("usecmssyntax") == "false") $USE_CMS_SYNTAX = false; // Request-Parameter einlesen und dabei absichern $CAT_REQUEST = getRequestParam('cat', true); $PAGE_REQUEST = getRequestParam('page', true); $ACTION_REQUEST = getRequestParam('action', true); $QUERY_REQUEST = getRequestParam('query', true); $HIGHLIGHT_REQUEST = getRequestParam('highlight', true); $CONTENT_DIR_REL = "kategorien"; $CONTENT_DIR_ABS = getcwd() . "/$CONTENT_DIR_REL"; $CONTENT_FILES_DIR = "dateien"; $GALLERIES_DIR = "galerien"; $CONTENT = ""; $HTML = ""; // Überprüfen: Ist die Startkategorie vorhanden? Wenn nicht, nimm einfach die allererste als Standardkategorie if (!file_exists("$CONTENT_DIR_REL/$DEFAULT_CATEGORY")) { $contentdir = opendir($CONTENT_DIR_REL); while ($cat = readdir($contentdir)) { if (isValidDirOrFile($cat)) { $DEFAULT_CATEGORY = $cat; break; } } } // Dateiname der aktuellen Inhaltsseite (wird in getContent() gesetzt) $PAGE_FILE = ""; // Zuerst: Übergebene Parameter überprüfen checkParameters(); // Dann: HTML-Template einlesen und mit Inhalt füllen readTemplate(); // Zum Schluß: Ausgabe des fertigen HTML-Dokuments echo $HTML; // ------------------------------------------------------------------------------ // Parameter auf Korrektheit prüfen // ------------------------------------------------------------------------------ function checkParameters() { global $CONTENT_DIR_ABS; global $CONTENT_FILES_DIR; global $DEFAULT_CATEGORY; global $ACTION_REQUEST; global $CAT_REQUEST; global $PAGE_REQUEST; global $EXT_DRAFT; global $EXT_HIDDEN; global $EXT_PAGE; // Überprüfung der gegebenen Parameter if ( // Wenn keine Kategorie übergeben wurde... ($CAT_REQUEST == "") // ...oder eine nicht existente Kategorie... || (!file_exists("$CONTENT_DIR_ABS/$CAT_REQUEST")) // ...oder eine Kategorie ohne Contentseiten... || (getDirContentAsArray("$CONTENT_DIR_ABS/$CAT_REQUEST", true, true) == "") ) // ...dann verwende die Standardkategorie $CAT_REQUEST = $DEFAULT_CATEGORY; // Kategorie-Verzeichnis einlesen $pagesarray = getDirContentAsArray("$CONTENT_DIR_ABS/$CAT_REQUEST/", true, true); // Wenn Contentseite nicht explizit angefordert wurde oder nicht vorhanden ist... if ( ($PAGE_REQUEST == "") || (!file_exists("$CONTENT_DIR_ABS/$CAT_REQUEST/$PAGE_REQUEST$EXT_PAGE") && !file_exists("$CONTENT_DIR_ABS/$CAT_REQUEST/$PAGE_REQUEST$EXT_HIDDEN") && !file_exists("$CONTENT_DIR_ABS/$CAT_REQUEST/$PAGE_REQUEST$EXT_DRAFT")) ) { //...erste Contentseite der Kategorie setzen $PAGE_REQUEST = substr($pagesarray[0], 0, strlen($pagesarray[0]) - 4); } // Wenn ein Action-Parameter übergeben wurde: keine aktiven Kat./Inhaltts. anzeigen if (($ACTION_REQUEST == "sitemap") || ($ACTION_REQUEST == "search")) { $CAT_REQUEST = ""; $PAGE_REQUEST = ""; } } // ------------------------------------------------------------------------------ // HTML-Template einlesen und verarbeiten // ------------------------------------------------------------------------------ function readTemplate() { global $CSS_FILE; global $HTML; global $FAVICON_FILE; global $LAYOUT_DIR; global $TEMPLATE_FILE; global $USE_CMS_SYNTAX; global $WEBSITE_NAME; global $ACTION_REQUEST; global $HIGHLIGHT_REQUEST; global $CAT_REQUEST; global $language; global $syntax; global $mainconfig; global $smileys; // Template-Datei auslesen if (!$file = @fopen($TEMPLATE_FILE, "r")) die($language->getLanguageValue1("message_template_error_1", $TEMPLATE_FILE)); $template = fread($file, filesize($TEMPLATE_FILE)); fclose($file); // Platzhalter des Templates mit Inhalt füllen $pagecontentarray = array(); // getSiteMap, getSearchResult und getContent liefern jeweils ein Array: // [0] = Inhalt // [1] = Name der Kategorie (leer bei getSiteMap, getSearchResult) // [2] = Name des Inhalts $pagecontent = ""; $cattitle = ""; $pagetitle = ""; if ($ACTION_REQUEST == "sitemap") { $pagecontentarray = getSiteMap(); $pagecontent = $pagecontentarray[0]; $cattitle = $pagecontentarray[1]; $pagetitle = $pagecontentarray[2]; } elseif ($ACTION_REQUEST == "search") { $pagecontentarray = getSearchResult(); $pagecontent = $pagecontentarray[0]; $cattitle = $pagecontentarray[1]; $pagetitle = $pagecontentarray[2]; } elseif ($USE_CMS_SYNTAX) { $pagecontentarray = getContent(); $pagecontent = $syntax->convertContent($pagecontentarray[0], $CAT_REQUEST, true); $cattitle = $pagecontentarray[1]; $pagetitle = $pagecontentarray[2]; } else { $pagecontentarray = getContent(); $pagecontent = $pagecontentarray[0]; $cattitle = $pagecontentarray[1]; $pagetitle = $pagecontentarray[2]; } // Smileys ersetzen if ($mainconfig->get("replaceemoticons") == "true") $pagecontent = $smileys->replaceEmoticons($pagecontent); // Gesuchte Phrasen hervorheben if ($HIGHLIGHT_REQUEST <> "") { $pagecontent = highlight($pagecontent, html_entity_decode($HIGHLIGHT_REQUEST)); } $HTML = preg_replace('/{CSS_FILE}/', $CSS_FILE, $template); $HTML = preg_replace('/{FAVICON_FILE}/', $FAVICON_FILE, $HTML); $HTML = preg_replace('/{LAYOUT_DIR}/', $LAYOUT_DIR, $HTML); // Platzhalter ersetzen $HTML = replacePlaceholders($HTML); $HTML = preg_replace('/{WEBSITE_TITLE}/', getWebsiteTitle($WEBSITE_NAME, $cattitle, $pagetitle), $HTML); // Meta-Tag "keywords" $HTML = preg_replace('/{WEBSITE_KEYWORDS}/', $mainconfig->get("websitekeywords"), $HTML); // Meta-Tag "description" $HTML = preg_replace('/{WEBSITE_DESCRIPTION}/', $mainconfig->get("websitedescription"), $HTML); $HTML = preg_replace('/{CONTENT}/', $pagecontent, $HTML); $HTML = preg_replace('/{MAINMENU}/', getMainMenu(), $HTML); // Detailmenü nicht zeigen, wenn Submenüs aktiviert sind if ($mainconfig->get("usesubmenu") > 0) { $HTML = preg_replace('/{DETAILMENU}/', "", $HTML); } else { $HTML = preg_replace('/{DETAILMENU}/', getDetailMenu($CAT_REQUEST), $HTML); } $HTML = preg_replace('/{SEARCH}/', getSearchForm(), $HTML); $HTML = preg_replace('/{LASTCHANGE}/', getLastChangedContentPage(), $HTML); $HTML = preg_replace('/{SITEMAPLINK}/', "getLanguageValue0("tooltip_showsitemap_0")."\">".$language->getLanguageValue0("message_sitemap_0")."", $HTML); $HTML = preg_replace('/{CMSINFO}/', getCmsInfo(), $HTML); // Kontaktformular $HTML = preg_replace('/{CONTACT}/', buildContactForm(), $HTML); } // ------------------------------------------------------------------------------ // Zu einem Kategorienamen passendes Kategorieverzeichnis suchen und zurückgeben // Alle Kühe => 00_Alle-nbsp-K-uuml-he // ------------------------------------------------------------------------------ function nameToCategory($catname) { global $CONTENT_DIR_ABS; // Content-Verzeichnis einlesen $dircontent = getDirContentAsArray("$CONTENT_DIR_ABS", false, false); // alle vorhandenen Kategorien durchgehen... foreach ($dircontent as $currentelement) { // ...und wenn eine auf den Namen paßt... if (substr($currentelement, 3, strlen($currentelement)-3) == $catname){ // ...den vollen Kategorienamen zurückgeben return $currentelement; } } // Wenn kein Verzeichnis paßt: Leerstring zurückgeben return ""; } // ------------------------------------------------------------------------------ // Zu einer Inhaltsseite passende Datei suchen und zurückgeben // Müllers Kuh => 00_M-uuml-llers-nbsp-Kuh.txt // ------------------------------------------------------------------------------ function nameToPage($pagename, $currentcat) { global $CONTENT_DIR_ABS; global $CONTENT_FILES_DIR; global $EXT_DRAFT; global $EXT_HIDDEN; global $EXT_PAGE; // Kategorie-Verzeichnis einlesen $dircontent = getDirContentAsArray("$CONTENT_DIR_ABS/$currentcat", true, true); // alle vorhandenen Inhaltsdateien durchgehen... foreach ($dircontent as $currentelement) { // ...und wenn eine auf den Namen paßt... if ( (substr($currentelement, 3, strlen($currentelement) - 3 - strlen($EXT_PAGE)) == $pagename) || (substr($currentelement, 3, strlen($currentelement) - 3 - strlen($EXT_HIDDEN)) == $pagename) || (substr($currentelement, 3, strlen($currentelement) - 3 - strlen($EXT_DRAFT)) == $pagename) ) { // ...den vollen Seitennamen zurückgeben return $currentelement; } } // Wenn keine Datei paßt: Leerstring zurückgeben return ""; } // ------------------------------------------------------------------------------ // Kategorienamen aus komplettem Verzeichnisnamen einer Kategorie zurückgeben // 00_Alle-nbsp-K-uuml-he => Alle Kühe // ------------------------------------------------------------------------------ function catToName($cat, $rebuildnbsp) { global $specialchars; return $specialchars->rebuildSpecialChars(substr($cat, 3, strlen($cat)), $rebuildnbsp); } // ------------------------------------------------------------------------------ // Seitennamen aus komplettem Dateinamen einer Inhaltsseite zurückgeben // 00_M-uuml-llers-nbsp-Kuh.txt => Müllers Kuh // ------------------------------------------------------------------------------ function pageToName($page, $rebuildnbsp) { global $specialchars; return $specialchars->rebuildSpecialChars(substr($page, 3, strlen($page) - 7), $rebuildnbsp); } // ------------------------------------------------------------------------------ // Inhalt einer Content-Datei einlesen, Rückgabe als String // ------------------------------------------------------------------------------ function getContent() { global $CONTENT_DIR_ABS; global $CONTENT_FILES_DIR; global $CAT_REQUEST; global $PAGE_REQUEST; global $EXT_HIDDEN; global $EXT_PAGE; global $EXT_DRAFT; global $PAGE_FILE; global $ACTION_REQUEST; global $specialchars; // Entwurf if ( ($ACTION_REQUEST == "draft") && (file_exists("$CONTENT_DIR_ABS/$CAT_REQUEST/$PAGE_REQUEST$EXT_DRAFT")) ) { $PAGE_FILE = $PAGE_REQUEST.$EXT_HIDDEN; return array ( implode("", file("$CONTENT_DIR_ABS/$CAT_REQUEST/$PAGE_REQUEST$EXT_DRAFT")), catToName($CAT_REQUEST, true), pageToName($PAGE_REQUEST.$EXT_DRAFT, true) ); } // normale Inhaltsseite elseif (file_exists("$CONTENT_DIR_ABS/$CAT_REQUEST/$PAGE_REQUEST$EXT_PAGE")) { $PAGE_FILE = $PAGE_REQUEST.$EXT_PAGE; return array ( implode("", file("$CONTENT_DIR_ABS/$CAT_REQUEST/$PAGE_REQUEST$EXT_PAGE")), catToName($CAT_REQUEST, true), pageToName($PAGE_REQUEST.$EXT_PAGE, true) ); } // Versteckte Inhaltsseite elseif (file_exists("$CONTENT_DIR_ABS/$CAT_REQUEST/$PAGE_REQUEST$EXT_HIDDEN")) { $PAGE_FILE = $PAGE_REQUEST.$EXT_HIDDEN; return array ( implode("", file("$CONTENT_DIR_ABS/$CAT_REQUEST/$PAGE_REQUEST$EXT_HIDDEN")), catToName($CAT_REQUEST, true), pageToName($PAGE_REQUEST.$EXT_HIDDEN, true) ); } else return ""; } // ------------------------------------------------------------------------------ // Auslesen des Content-Verzeichnisses unter Berücksichtigung // des auszuschließenden File-Verzeichnisses, Rückgabe als Array // ------------------------------------------------------------------------------ function getDirContentAsArray($dir, $iscatdir, $showhidden) { global $CONTENT_FILES_DIR; global $EXT_DRAFT; global $EXT_HIDDEN; global $EXT_PAGE; $currentdir = opendir($dir); $i=0; $files = ""; // Einlesen des gesamten Content-Verzeichnisses außer dem // auszuschließenden Verzeichnis und den Elementen . und .. while ($file = readdir($currentdir)) { if ( // wenn Kategorieverzeichnis: Alle Dateien auslesen, die auf $EXT_PAGE oder $EXT_HIDDEN enden... ( (!$iscatdir) || (substr($file, strlen($file)-4, strlen($file)) == $EXT_PAGE) || ($showhidden && (substr($file, strlen($file)-4, strlen($file)) == $EXT_HIDDEN)) ) // ...und nicht $CONTENT_FILES_DIR && (($file <> $CONTENT_FILES_DIR) || (!$iscatdir)) // nicht "." und ".." && isValidDirOrFile($file) ) { $files[$i] = $file; $i++; } } // Rückgabe des sortierten Arrays if ($files <> "") sort($files); return $files; } // ------------------------------------------------------------------------------ // Aufbau des Hauptmenüs, Rückgabe als String // ------------------------------------------------------------------------------ function getMainMenu() { global $CONTENT_DIR_ABS; global $CONTENT_FILES_DIR; global $CAT_REQUEST; global $PAGE_REQUEST; global $specialchars; global $mainconfig; $mainmenu = "
"; } // ------------------------------------------------------------------------------ // Aufbau des Detailmenüs, Rückgabe als String // ------------------------------------------------------------------------------ function getDetailMenu($cat){ global $ACTION_REQUEST; global $QUERY_REQUEST; global $CONTENT_DIR_ABS; global $CONTENT_FILES_DIR; global $CAT_REQUEST; global $PAGE_REQUEST; global $EXT_DRAFT; global $language; global $specialchars; global $mainconfig; if ($mainconfig->get("usesubmenu") > 0) $cssprefix = "submenu"; else $cssprefix = "detailmenu"; $detailmenu = ""; } // ------------------------------------------------------------------------------ // Rückgabe des Suchfeldes // ------------------------------------------------------------------------------ function getSearchForm(){ global $language; global $mainconfig; $form = ""; return $form; } // ------------------------------------------------------------------------------ // Einlesen des Inhalts-Verzeichnisses, Rückgabe der zuletzt geänderten Datei // ------------------------------------------------------------------------------ function getLastChangedContentPage(){ global $CONTENT_DIR_REL; global $language; global $specialchars; $latestchanged = array("cat" => "catname", "file" => "filename", "time" => 0); $currentdir = opendir($CONTENT_DIR_REL); while ($file = readdir($currentdir)) { if (isValidDirOrFile($file)) { $latestofdir = getLastChangeOfCat($CONTENT_DIR_REL."/".$file); if ($latestofdir['time'] > $latestchanged['time']) { $latestchanged['cat'] = $file; $latestchanged['file'] = $latestofdir['file']; $latestchanged['time'] = $latestofdir['time']; } } } return $language->getLanguageValue0("message_lastchange_0")." getLanguageValue2("tooltip_link_page_2", $specialchars->rebuildSpecialChars(substr($latestchanged['file'], 3, strlen($latestchanged['file'])-7), true), $specialchars->rebuildSpecialChars(substr($latestchanged['cat'], 3, strlen($latestchanged['cat'])-3), true))."\" id=\"lastchangelink\">".$specialchars->rebuildSpecialChars(substr($latestchanged['file'], 3, strlen($latestchanged['file'])-7), true)." (".strftime($language->getLanguageValue0("_dateformat_0"), date($latestchanged['time'])).")"; } // ------------------------------------------------------------------------------ // Einlesen eines Kategorie-Verzeichnisses, Rückgabe der zuletzt geänderten Datei // ------------------------------------------------------------------------------ function getLastChangeOfCat($dir){ global $EXT_HIDDEN; global $EXT_PAGE; $latestchanged = array("file" => "filename", "time" => 0); $currentdir = opendir($dir); while ($file = readdir($currentdir)) { if (is_file($dir."/".$file) && (substr($file, strlen($file)-4, 4) == $EXT_PAGE) ) { if (filemtime($dir."/".$file) > $latestchanged['time']) { $latestchanged['file'] = $file; $latestchanged['time'] = filemtime($dir."/".$file); } } } return $latestchanged; } // ------------------------------------------------------------------------------ // Erzeugung einer Sitemap // ------------------------------------------------------------------------------ function getSiteMap() { global $CONTENT_DIR_ABS; global $CONTENT_FILES_DIR; global $language; global $specialchars; $sitemap = "