<?php
###### Funktionsaufruf (alle Blog-Dateien finden, validieren und einbinden) ################################################################################## $includedFiles = getAndValidateBlogEntries($findBlogContentInThisPath); ################################################################################## ###### Funktion: Rekursives durchsuchen nach Blog-Eintraegen ###### Hinweis: Wird durch die Funktion getAndValidateBlogEntries() aufgerufen ################################################################################## function scanForPages($givenFilePath, $recurse) { ###### Wenn Uebergabewert In DokuWiki-Pfad-Syntax, dann konvertiere zu File-System-Pfad-Syntax
if ((strpos($givenFilePath,':'))) { //###### String enthält : $tree = glob(rtrim(phpConvertNamespaceToFilesystemPath($givenFilePath), '/') . '/*'); } elseif (strpos($givenFilePath,'/') !== false ) { //###### String enthält / $tree = glob(rtrim($givenFilePath, '/') . '/*'); } else { //###### String enthält weder : noch / $tree = glob(rtrim(phpConvertNamespaceToFilesystemPath($givenFilePath), '/') . '/*'); }
global $includedFile; //###### Exclude-Liste (Verzeichnisse und Dateien) in Array umwandeln
if (is_array($tree)) { foreach($tree as $file) { echo "Gefunden: $file <br />";
//###### Falls ein Verzeichnis gefunden wird, auch dieses rekursiv durchsuchen if ( (is_dir($file)) && (!(strpos($file, 'pagedata'))) &&(!(strpos($file, 'vorlagen'))) ){ //echo "Verzeichnis gefunden: $file <br />"; if ($recurse) { scanForPages($file, $recurse); }; //###### Falls eine Datei gefunden wird, weitere Schritte vornehmen } elseif (is_file($file)) { if ( (!(strpos($file, 'pagedata'))) &&(!(strpos($file, 'vorlagen'))) && (!(strpos($file, '_template'))) && (!($file == phpConvertPageToFilesystemPath($_GET["id"]))) && (!(strpos($file, 'start.txt'))) ) { //###### Diese Datei einschliessen //echo "Datei $file einschliessen <br /> "; //###### UpperCase zu LowerCase umbenennen $filePathSplitArray = explode('/', $file); $fileName = end($filePathSplitArray); if (preg_match("/[A-Z]/", $fileName)) { $fileNameLower = strtolower($fileName); array_pop($filePathSplitArray); $filePath = implode('/', $filePathSplitArray); echo $filePath . '-' . $fileNameLower. '<><><><> //// '; copy("$filePath/$fileName","$filePath/$fileNameLower"); unlink("$filePath/$fileName"); } $dokuWikiConformPagePath= phpCreateDokuWikiConformName(substr(str_replace(realpath(dirname(__FILE__) . '/../../..'), '', $file),1));
echo "Test: " . $_SERVER["SCRIPT_NAME"] . " – " . realpath(dirname(FILE)) . " – " . str_replace(realpath(dirname(FILE) . '/../../..'), , $file). "<br />";
echo $dokuWikiConformPagePath . "<br />";
###### Datei dem Blog-Page-Array hinzufuegen
$includedFile[] = $dokuWikiConformPagePath;
}
}
}
}
###### globales Array uebergeben
return $includedFile;
}
$filePathOfCurrentPageSplit = explode(':', $_GET["id"]);
end($filePathOfCurrentPageSplit);
array_pop($filePathOfCurrentPageSplit);
$wikiPathOfCurrentPage = implode(':', $filePathOfCurrentPageSplit);
$filePathOfCurrentPage = phpConvertNamespaceToFilesystemPath($wikiPathOfCurrentPage);
$includedFiles = scanForPages($filePathOfCurrentPage, true);
Variablen bestimmen
###### URL zur Anzeige von Bildern über http/https
$dokuwikiMediaUrl = 'https:' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/lib/exe/fetch.php?media=';
Variablen der Blog-Startseite auslesen
$startPageData['variables']=phpGetWrappedVariables(htmlspecialchars($_GET["id"]));
###### Lese die Variablen der Blog-Seiten aus
foreach ($includedFiles as $currentFile) {
Variablen auslesen und korrigieren/ergänzen
$variableArrayExtractedWrapped = phpGetWrappedVariables($currentFile);
###### sezte deutsches Zeitformat als Erstelldatum
$variableArrayExtractedWrapped['pageCreationDate'] = date("d.m.Y",strtotime($variableArrayExtractedWrapped['pageCreationDate']));
$variableArrayExtractedWrapped['pageCreationTimeStamp'] = strtotime("{$variableArrayExtractedWrapped['pageCreationDate']} {$variableArrayExtractedWrapped['pageCreationTime']}");
###### Füge dem Array die zugehörge Produkt-Test-Page und die Blog-Page hinzu
$variableArrayExtractedWrapped['pageDataFile'] = $currentFile;
###### Inkludiere Blog-Daten, falls Blog auf Published steht und prüfe weiter
if ( $variableArrayExtractedWrapped['pageReleaseState'] == 'published' ) {
if (empty($hasToContainTagsArray)) {
$pageData[]['variables'] = $variableArrayExtractedWrapped;
} else {
$hasToContainTagsString =
;
foreach($hasToContainTagsArray as $TagToContain) {
$hasToContainTagsString .= '#' . $TagToContain . ' ';
if ( (strpos(strtolower($variableArrayExtractedWrapped['pageCategories']),strtolower($TagToContain))) || (strpos(strtolower($variableArrayExtractedWrapped['pageTags']),strtolower($TagToContain))) ) {
###### Setze Schalter: Behalte diesen Blog-Eintrag
$popThispage = 0;
}
}
if ($popThispage == 0) {
$pageData[]['variables'] = $variableArrayExtractedWrapped;
}
}
}
}
###### alle validen Blog-Eintraege werden zeitlich sortiert (ab PHP7 usort mit space ship operator)
array_multisort(array_column($pageData, 'pageCreationTimeStamp'), SORT_DESC, $pageData );
usort($pageData, function($a, $b) {
return $b['variables']['pageCreationTimeStamp'] ⇔ $a['variables']['pageCreationTimeStamp'];
});
###### Übergabe-Variabeln korrigieren
##################################################################################
###### Initial vorgegebener Start-Beitrag
$displayedPagesStart = $startPageData['variables']['displayedPagesStart'];
###### Falls ein Index für den ersten anzuzeigenden Beitrag übergeben wurde, nimm diesen
if (isset($_GET['displayedPagesStart'])) {
$displayedPagesStart = $_GET['displayedPagesStart'];
}
##### Falls der erste Beitrag die Anzahl an Beiträgen übersteigt, korrigiere das
if ($displayedPagesStart > (sizeof($pageData) - 1)) {
$displayedPagesStart = sizeof($pageData) - 1;
}
###### Initial vorgegebene Beiträge pro Seite
$displayedPagesMax = $startPageData['variables']['displayedPagesMax'];
###### Falls ein Index für Beiträge pro Seite übergeben wurde, nimm diesen
if (isset($_GET['displayedPagesMax'])) {
$displayedPagesMax = $_GET['displayedPagesMax'];
}
###### Falls der letzte anzuzeigende Beitrag die Anzahl an Beiträgen übersteigt, korrigiere das
if ( ($displayedPagesMax == -1) || 1) ){
$displayedPagesEnd = (sizeof($pageData) - 1);
} else {
$displayedPagesEnd = ($displayedPagesStart + $displayedPagesMax) - 1;
}
echo '<html>
Es werden Beiträge ' . ($displayedPagesStart + 1) . ' bis ' . ($displayedPagesEnd + 1) . ' angezeigt.
<br /></html>'; ###### Navigation ################################################################################## Falls nicht alle verfügbaren Beiträge auf einer Seite angezeigt werden, blende die Navigation ein if 2) { ###### Wenn der erste angezeigte Beitrag nicht der erste Beitrag ist, dann zeige "Zurück" an echo '<html>
0) ? 'visible' : 'hidden' ) . ';"></html><<
//###### Wenn der erste angezeigte Beitrag nicht der erste Beitrag ist, dann zeige "Neueste" an. echo '<html><div style="border: 2px solid lightgrey; border-radius: 10px; padding: 0.2vw; background: ghostwhite; display: inline-block; visibility: ' . ( ($displayedPagesStart > 0) ? 'visible' : 'hidden' ) . ';"></html>[[' . $_GET['id'] . '?displayedPagesStart=0|Neueste]]<html></div></html>'; echo '<html><div style="border: 2px solid lightgrey; border-radius: 10px; padding: 0.2vw; background: ghostwhite; display: inline-block;"></html>[[' . $_GET['id'] . '?displayedPagesStart=0&displayedPagesMax=-1|Alle]]<html></div></html>'; echo '<html><div style="border: 2px solid lightgrey; border-radius: 10px; padding: 0.2vw; background: ghostwhite; display: inline-block; visibility: ' . ( ($displayedPagesEnd < (sizeof( $pageData ) - 1)) ? 'visible' : 'hidden' ) . ';"></html>[[' . $_GET['id'] . '?displayedPagesStart=' . (sizeof($pageData) - $displayedPagesMax) . '|Älteste]]<html></div></html>'; echo '<html><div style="border: 2px solid lightgrey; border-radius: 10px; padding: 0.2vw; background: ghostwhite; display: inline-block; visibility: ' . ( ($displayedPagesEnd < (sizeof( $pageData ) - 1)) ? 'visible' : 'hidden' ) . ';"></html>[[' . $_GET['id'] . '?displayedPagesStart=' . ($displayedPagesEnd + 1) . '|>>]]<html></div></html>'; }
###### CSS-Datei inkludieren ##################################################################################
include(phpConvertPageToFilesystemPath($startPageData['variables']['pageCssStyle']));
###### HTML-Tag öffnen ##################################################################################
echo '<html>';
###### Darstellungsstruktur ##################################################################################
echo ' <div class="parentbox"><!-- ###### parentbox umspannender Inhalts-Container (öffnen) --> <div class="sectionbox-row"><!-- ###### Sectionbox für Spalten im umspannenden Inhalts-Container (öffnen) -->
<div class="parentbox-contentbox-left"><!-- ###### Linke Spalte (öffnen) -->
';
//##### Falls Such-Tags für anzuzeigende Artikel gesetzt wurden, liste sie hier if ( !(empty($hasToContainTagsString)) ) { echo " <br /> <div class='dateBox'><b>Tags: {$hasToContainTagsString}</b></div> <hr /><br /> "; }
for ($articleCounter=$displayedPagesStart; $articleCounter <= $displayedPagesEnd ; $articleCounter++) { if (array_key_exists($articleCounter, $pageData)) {
//###### Page-Preview ermitteln //##################################################################################
//###### Korrektur fehlerhafter Angaben / pürfe auf Existenz //################################################################################## //###### Es wurde eine Bild-Datei (jpg oder png) angegeben if ((strpos($pageData[$articleCounter]['variables']['pagePreview'],'.png')) || (strpos($pageData[$articleCounter]['variables']['pagePreview'],'.jpg'))) { //###### Es wurde ein vollständiger Wiki-Pfad angegeben if (strpos($pageData[$articleCounter]['variables']['pagePreview'],':')) { //###### Das angegebene Bild existiert nicht - lösche es aus der Variablen if (!(file_exists(str_replace('/data/pages/','/data/media/',phpConvertNamespaceToFilesystemPath($pageData[$articleCounter]['variables']['pagePreview']))))) { $pageData[$articleCounter]['variables']['pagePreview'] = ''; } //###### Es wurde nur eine Bild-Datei angegeben } else { //###### Das angegebene Bild existiert nicht - lösche es aus der Variablen $pageData[$articleCounter]['variables']['pagePreview'] = $pageData[$articleCounter]['variables']['pageDataFile'] . ':' . $pageData[$articleCounter]['variables']['pagePreview']; if (!(file_exists(str_replace('/data/pages/','/data/media/',phpConvertNamespaceToFilesystemPath($pageData[$articleCounter]['variables']['pagePreview']))))) { $pageData[$articleCounter]['variables']['pagePreview'] = ''; } } //###### Es wurde kein eBild-Datei angegeben - lösche den Variablen-Inhalt } else { $pageData[$articleCounter]['variables']['pagePreview'] = ''; }
//###### Fehlende Bild-Datei-Angabe korrigieren //################################################################################## //###### Es wurde keine Bild-Datei angegeben if ($pageData[$articleCounter]['variables']['pagePreview'] == ''){ if ( file_exists(str_replace('/data/pages/','/data/media/',phpConvertNamespaceToFilesystemPath($pageData[$articleCounter]['variables']['pageDataFile'] . ':page_preview.png'))) ) { //###### Falls page_preview.png existiert, weise dies zu $pageData[$articleCounter]['variables']['pagePreview'] = $pageData[$articleCounter]['variables']['pageDataFile'] . ':page_preview.png'; } elseif ( file_exists(str_replace('/data/pages/','/data/media/',phpConvertNamespaceToFilesystemPath($pageData[$articleCounter]['variables']['pageDataFile'] . ':page_preview.jpg'))) ) { //###### Falls page_preview.jpg existiert, weise dies zu $pageData[$articleCounter]['variables']['pagePreview'] = $pageData[$articleCounter]['variables']['pageDataFile'] . ':page_preview.jpg'; } else { //###### Es wurde keine Preview-Datei im zugehörigen Medien-Verzeichnis gefunden - Suche eine Ebene höher nach Standard-Bildern $wikiPathOfCurrentFileSplit = explode(':', $pageData[$articleCounter]['variables']['pageDataFile']); array_pop($wikiPathOfCurrentFileSplit); $pageData[$articleCounter]['variables']['pageDataFile'] = implode(':', $wikiPathOfCurrentFileSplit); //###### Falls page_preview.jpg nicht existiert, weise Standard-Image aus uebergeordnetem Verzeichnis zu $search = array('/data/pages/', '.txt'); $replace = array('/data/media/', ''); //###### Falls standard_page_preview.png existiert, weise dies zu if (file_exists(str_replace($search , $replace , phpConvertNamespaceToFilesystemPath($pageData[$articleCounter]['variables']['pageDataFile'] . ':standard_page_preview.png')))) { $pageData[$articleCounter]['variables']['pagePreview'] = str_replace(':pagedata:' , ':' , $pageData[$articleCounter]['variables']['pageDataFile']) . ':standard_page_preview.png'; //###### Falls page_preview.jpg existiert, weise dies zu } elseif (file_exists(str_replace($search , $replace , phpConvertNamespaceToFilesystemPath($pageData[$articleCounter]['variables']['pageDataFile'] . ':standard_page_preview.jpg')))) { $pageData[$articleCounter]['variables']['pagePreview'] = str_replace(':pagedata:' , ':' , $pageData[$articleCounter]['variables']['pageDataFile']) . ':standard_page_preview.jpg'; } } //################################################################################## }
//###### Datumsgruppierung und Datumsueberschrift der Blog-Pages //##################################################################################
//###### Anzahl Tage seit letzter Blog-Page $timestampNow = time(); // Input your date here e.g. strtotime("2014-01-02") $timestampPublished = strtotime($pageData[$articleCounter]['variables']['pageCreationDate']); $day_diff = floor(($timestampNow - $timestampPublished)/(60*60*24)); if (($articleCounter == 0) && ($day_diff <= 14)) { echo " <br /> <div>Aktuelles auf {$_SERVER['SERVER_NAME']}</div> <hr /><br /> "; } elseif ( ($pageData[$articleCounter]['variables']['pageCreationDate'] != $pageData[$articleCounter - 1]['variables']['pageCreationDate']) || ($displayedPagesStart > 0) ){ echo " <br /> <div class='dateBox'>Beiträge vom {$pageData[$articleCounter]['variables']['pageCreationDate']}</div> <hr /><br /> "; }
echo ' <div class="blog-preview-sectionbox"><!-- Blogeintrag (Zusammenfassung) (öffnen) --> <div class="titlebox"><!-- ###### Titel (öffnen) --> <div class="titlebox-title"></html>' . str_replace('\\\\', '\\\\ ', $pageData[$articleCounter]['variables']['pageTitleRow1']) . '<html></div> <div class="titlebox-categories"></html>' . $pageData[$articleCounter]['variables']['pageCategories'] . '<html></div> </div><!-- ###### Titel (schließen) --> <div class="contentbox-preview"><!-- ###### Titelbild (öffnen) --> <div class="blog-previewbox-image"><img src="' . $dokuwikiMediaUrl . $pageData[$articleCounter]['variables']['pagePreview'] . '"></div> </div><!-- ###### Titelbild (schließen) --> <div class="blog-previewbox"><!-- ###### Eyecatcher (öffnen) --> <div class="blog-previewbox-eyecatcher"></html>' . $pageData[$articleCounter]['variables']['pageEyeCatcher'] . ' [[' . $pageData[$articleCounter]['variables']['pageDataFile'] . '|weiterlesen...]]<html></div> <div class="eyecatcherbox-bottom">Erstellt von </html>' . $pageData[$articleCounter]['variables']['pageCreationUser'] . ' am ' . $pageData[$articleCounter]['variables']['pageCreationDate'] . ' um ' . $pageData[$articleCounter]['variables']['pageCreationTime'] . ' Uhr<html></div> </div><!-- ###### Eyecatcher (schließen) --> </div><!-- Blogeintrag (Zusammenfassung) (schließen) --> '; } } echo' </div><!-- ###### Linke Spalte (schließen) -->
<div class="parentbox-contentbox-right"><!-- ###### Rechte Spalte (öffnen) --> '; include(phpConvertPageToFilesystemPath($startPageData['variables']['pageSidebarRight'])); echo ' </div><!-- ###### Rechte Spalte (schließen) -->
</div><!-- ###### Sectionbox für Spalten im umspannenden Inhalts-Container (schließen) --> </div><!-- parentbox umspannender Inhalts-Container (schließen) --> ';
###### JavaScript - tatsächliche Größe der ParentBox bestimmen und festlegen ##################################################################################
echo ' <script language="javascript"> var biggestHeight = 0; // Loop through elements children to find & set the biggest height $(".parentbox*").each(function(){ // If this elements height is bigger than the biggestHeight if ($(this).height() > biggestHeight ) { // Set the biggestHeight to this Height biggestHeight = $(this).height(); } });
// Set the container height $(".parentbox").height(biggestHeight); </script> ';
###### HTML-Tag schließen ##################################################################################
echo '</html>';
?>