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

?>

1)
$displayedPagesStart + $displayedPagesMax) > sizeof( $pageData
2)
$displayedPagesEnd - $displayedPagesStart) < (sizeof($pageData) - 1