<?php ###### Funktionsaufruf (alle Blog-Dateien finden, korrigieren und einbinden) ##################################################################################

$includedFiles = recursiveScan($convertedPath, $excludeArray);

//##### pruefe, ob zu der pagedata-Page eine Wiki-Page existiert
foreach ($includedFiles as $file) {
  //###### alle zu pagedata uebergeordneten Namespaces finden (noch mit Doppelungen)
  $allNamespacesAbovePagedata[] = str_replace(':pagedata:' . end(explode(':', $file)), '' , $file);
  $cutPagedataFromCurrentFile = phpConvertPageToFilesystemPath(str_replace('pagedata:', '' , $file));
  if (!(file_exists($cutPagedataFromCurrentFile))) {
    //###### Template fuer fehlende Wiki-Pages zu Produkttest
    $currentNamespaceTemplate = $unconvertedPath . ':vorlagen:nsp_tpl_' . str_replace(':' , '_', $unconvertedPath . str_replace($unconvertedPath , '' , str_replace(':pagedata:' . end(explode(':', $file)), '' , $file)));
    $pageFileContent = '
      ~~NOCACHE~~
      <phpwikify>
        include(phpConvertPageToFilesystemPath("' . $currentNamespaceTemplate  . '"));
      </phpwikify>
    ';
    file_put_contents( $cutPagedataFromCurrentFile, str_replace('  ', '', $pageFileContent) );
  } else {
  }
}

//##### pruefe, ob zu der Wiki-Page eine pagedata-Page existiert
$allNamespacesAbovePagedata = array_unique($allNamespacesAbovePagedata);
foreach ($allNamespacesAbovePagedata as $singleNamespaceAbovePagedata) {
  $filesInNamespace = glob(phpConvertNamespaceToFilesystemPath($singleNamespaceAbovePagedata) . '/*.txt');
  foreach ($filesInNamespace as $singleFileInNamespace) {
    $connectedPagedataFile = str_replace('/'. end(explode('/', $singleFileInNamespace)),'',$singleFileInNamespace) . '/pagedata/' . end(explode('/', $singleFileInNamespace));
    if ( (!(strpos('_template', $connectedPagedataFile))) && (!(file_exists($connectedPagedataFile))) ){
      unlink($singleFileInNamespace);
    }
  }
}
//##### inkludiere alle relevanten Blog-pagedata-Pages und passe Werte an
foreach ($includedFiles as $file) {
  include (phpConvertPageToFilesystemPath($file));
  $includedBlogArrayId = key(array_slice($blogPageData, -1, 1, true));
  //###### Setze den Pointer auf das letzte Array-Elelment
  //###### Inkludiere Blog-Daten, falls Blog auf Published steht UND eine zugehoerige Produktseite existiert
  if ( (!($blogPageData[$includedBlogArrayId]['blogPageReleaseState'] == 'published')) ){
    array_pop($blogPageData);
  } else {
    //###### sezte deutsches Zeitformat als Erstelldatum
    $blogPageData[$includedBlogArrayId]['blogPageCreationDate'] = date("d.m.Y",strtotime($blogPageData[$includedBlogArrayId]['blogPageCreationDate']));
    $blogPageData[$includedBlogArrayId]['blogPageCreationTimeStamp'] = strtotime("{$blogPageData[$includedBlogArrayId]['blogPageCreationDate']} {$blogPageData[$includedBlogArrayId]['blogPageCreationTime']}");
    //###### Füge dem Array die zugehörge Produkt-Test-Page und die pagedata-Page hinzu
    $blogPageData[$includedBlogArrayId]['includeFileBlogData'] = str_replace('pagedata:', '', $file);
    $blogPageData[$includedBlogArrayId]['blogPageDataFile'] = $file;
    
      //###### Dateinamen für Blog-Cover ermitteln
      if ( (!isset($blogPageData[$includedBlogArrayId]['blogPageCover'])) || (empty($blogPageData[$includedBlogArrayId]['blogPageCover'])) || (!file_exists(phpConvertPageToFilesystemPath($blogPageData[$includedBlogArrayId]['blogPageCover'])))) {
        $blogPageData[$includedBlogArrayId]['blogPageCover'] = 'blog_cover.jpg';
      }
  }
}
//###### alle validen Blog-Eintraege werden zeitlich sortiert
array_multisort(array_column($blogPageData, 'blogPageCreationTimeStamp'), SORT_DESC, $blogPageData );

###### Übergabe-Variabeln korrigieren ##################################################################################

$displayedPagesStart = 0;
$displayedPagesPerPage = $displayedPagesMax - $displayedPagesStart;
if ($displayedPagesPerPage == -1) { $displayedPagesPerPage = sizeof( $blogPageData ); }
if (isset($_GET['displayedPagesStart'])) { $displayedPagesStart = $_GET['displayedPagesStart']; }
if (isset($_GET['displayedPagesMax'])) { $displayedPagesMax = $_GET['displayedPagesMax']; }
if (($displayedPagesMax == -1)) {
  $displayedPagesMax = sizeof( $blogPageData );
}

###### Navigation ##################################################################################

if (!($displayedPagesPerPage == sizeof( $blogPageData ))) {
  echo 'Artikel-Index: ';
  echo '[[' . $_GET['id'] . '|[Neueste] ]]';
  if ($displayedPagesStart >= $displayedPagesPerPage) {
    echo '[[' . $_GET['id'] . '?displayedPagesStart=' . ( $displayedPagesStart - $displayedPagesPerPage )  . '&displayedPagesMax=' .  $displayedPagesStart . '|[<<] ]]';
  }
  if ($displayedPagesMax < sizeof( $blogPageData )) {
    echo '[[' . $_GET['id'] . '?displayedPagesStart=' . $displayedPagesStart . '&displayedPagesMax=' . ($displayedPagesMax + $displayedPagesPerPage) . '| [Ältere] ]]';
    echo '[[' . $_GET['id'] . '?displayedPagesStart=' . $displayedPagesMax  . '&displayedPagesMax=' . ( $displayedPagesMax + $displayedPagesPerPage ) . '|[>>] ]]';
  }
  if (($displayedPagesStart > 0) || ($displayedPagesMax < sizeof( $blogPageData ))) {
    echo '[[' . $_GET['id'] . '?displayedPagesStart=0&displayedPagesMax=-1|[Alle]]]';
  }
}

###### CSS-Datei inkludieren ##################################################################################

include($includeCss);

###### 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="contentbox-left"><!-- ###### Linke Spalte (öffnen) -->

';

if ($displayedPagesMax > sizeof( $blogPageData )) { $displayedPagesMax = sizeof( $blogPageData ); }
if ($displayedPagesStart < 0) { $displayedPagesStart = 0; }
for ($articleCounter=$displayedPagesStart; $articleCounter < $displayedPagesMax ; $articleCounter++) {
  if (array_key_exists($articleCounter, $blogPageData)) {
    if ( (!(empty($blogPageData[$articleCounter]['includeFileData']))) && (file_exists(phpConvertPageToFilesystemPath($blogPageData[$articleCounter]['includeFileData']))) ) {
      include(phpConvertPageToFilesystemPath($blogPageData[$articleCounter]['includeFileData']));
      $includedProductArrayId = key(array_slice($product, -1, 1, true));
      $namespaceOfProduct = str_replace(':pagedata', '', $blogPageData[$articleCounter]['includeFileData']);
      echo $namespaceOfProduct . '  \\\\  ';
      $namespaceOfProduct = phpCreateDokuWikiConformName('wiki:ernährung:marke:' . $product[$includedProductArrayId]['marke']['wert']);
      $namespaceOfProduct = 'wiki:ernaehrung:marke:' . phpCreateDokuWikiConformName($product[$includedProductArrayId]['marke']['wert']) . ':' . phpCreateDokuWikiConformName($product[$includedProductArrayId]['produktlinie']['wert'] . ' -' . (!empty($product[$includedProductArrayId]['produktname']['wert']) ? ' ' . $product[$includedProductArrayId]['produktname']['wert']:'') . (!empty($product[$includedProductArrayId]['produktnamenszusatz']['wert']) ? ' ' . $product[$includedProductArrayId]['produktnamenszusatz']['wert']:'') );
      echo $namespaceOfProduct . '  \\\\  ';
      $blogPageData[$articleCounter]['includedProductArrayId'] = $includedProductArrayId;
    }
    
    if (!(strstr($blogPageData[$articleCounter]['blogPageCover'],':'))) { $blogPageData[$articleCounter]['blogPageCover'] = $namespaceOfProduct . ':' . $blogPageData[$articleCounter]['blogPageCover']; }
    if ($articleCounter == 0) {
      echo "
        <br />
        <div>Aktuelles auf {$_SERVER['SERVER_NAME']}</div>
        <hr /><br />
      ";
    } elseif ( ($blogPageData[$articleCounter]['blogPageCreationDate'] != $blogPageData[$articleCounter - 1]['blogPageCreationDate']) || ($displayedPagesStart > 0) ){
      echo "
        <br />
        <div class='dateBox'>Beiträge vom {$blogPageData[$articleCounter]['blogPageCreationDate']}</div>
        <hr /><br />
      ";
    }
    echo '
        <div class="sectionbox-column"><!-- Blogeintrag (Zusammenfassung) (öffnen) -->
          <div class="titlebox"><!-- ###### Titel (öffnen) -->
            <div class="titlebox-top"></html>' . $product[$includedProductArrayId]['marke']['wert'] . '  \\\\  ' . $product[$includedProductArrayId]['produktlinie']['wert'] . '  \\\\  ' . $product[$includedProductArrayId]['produktname']['wert'] . ' ' . $product[$includedProductArrayId]['produktnamenszusatz']['wert'] . '<html></div>
            <div class="titlebox-bottom"></html>' . $blogPageData[$articleCounter]['blogPageCategories'] . '<html></div>
          </div><!-- ###### Titel (schließen) -->
          <div class="contentbox"><!-- ###### Titelbild (öffnen) -->
            <div class="contentbox-information"></html>{{' . $blogPageData[$articleCounter]['blogPageCover'] . '?nolink}}<html><br /><br /></div>
          </div><!-- ###### Titelbild (schließen) -->
          <div class="eyecatcherbox"><!-- ###### Eyecatcher (öffnen) -->
            <div class="eyecatcherbox-top"></html>' . $blogPageData[$articleCounter]['blogPageEyeCatcher'] . ' [[' . $blogPageData[$articleCounter]['includeFileBlogData'] . '|weiterlesen...]]<html></div>
            <div class="eyecatcherbox-bottom"></html>' . $blogPageData[$articleCounter]['blogPageCreationDate'] . ', ' .$blogPageData[$articleCounter]['blogPageCreationTime'] . '<html></div>
          </div><!-- ###### Eyecatcher (schließen) -->
        </div><!-- Blogeintrag (Zusammenfassung) (schließen) -->
    ';
}
}

echo'
      </div><!-- ###### Linke Spalte (schließen) -->
      <div class="contentbox-right"><!-- ###### Rechte Spalte (öffnen) -->
    ';
    include($sidebarRight);
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>';

?>