<?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>';
?>