Sie haben nicht die Berechtigung, in dieser Kategorie zu erstellen.
"; exit; } } $canEditPost = true; // Berechtigung schon oben geprüft $postId = 0; $post = ['id' => 0]; $versionCount = 0; $currentVersion = [ 'id' => 0, 'title' => '', 'image' => '', 'teaser' => '', 'content' => '', 'version_number' => 0, 'created_at' => date("Y-m-d H:i:s") ]; } else { // Ermitteln der Post-ID aus dem Query-String if (!isset($_GET['id'])) { echo "Kein Beitrag ausgewählt.
"; exit; } $postId = (int) $_GET['id']; // Sicherheitscheck: Prüfe, ob der Nutzer auf diesen Beitrag zugreifen darf if (!userHasAccessForPost($postId)) { echo "Sie haben nicht die notwendigen Berechtigungen.
"; exit; } // Schreibrechte: Redakteur darf alles; Betriebsrat nur in freigegebenen Kategorien (inkl. Vererbung) $canEditPost = is_wiki_redakteur(); if (!$canEditPost && is_wiki_betriebsrat()) { $brCatRes = mysqli_query($GLOBALS['mysql_con'], "SELECT category_id FROM knowledgecenter_category_post WHERE post_id = $postId"); $canEditPost = false; while ($brCatRow = mysqli_fetch_assoc($brCatRes)) { if (is_category_betriebsrat_editable((int)$brCatRow['category_id'])) { $canEditPost = true; break; } } } // Beitrag aus der Haupttabelle abrufen $sqlPost = "SELECT * FROM knowledgecenter_posts WHERE id = $postId LIMIT 1"; $resPost = mysqli_query($GLOBALS['mysql_con'], $sqlPost); if (!$resPost || mysqli_num_rows($resPost) == 0) { echo "Beitrag nicht gefunden.
"; exit; } $post = mysqli_fetch_assoc($resPost); // Anzahl Dateien ermitteln $sqlCountFiles = "SELECT COUNT(*) AS fileCount FROM knowledgecenter_post_files WHERE post_id = $postId"; $resCountFiles = mysqli_query($GLOBALS['mysql_con'], $sqlCountFiles); if ($resCountFiles && mysqli_num_rows($resCountFiles) > 0) { $row = mysqli_fetch_assoc($resCountFiles); $fileCount = (int) $row['fileCount']; } else { $fileCount = 0; } // Anzahl Versionen für die aktuell ausgewählte Sprache ermitteln $sqlCountVersions = "SELECT COUNT(*) AS versionCount FROM knowledgecenter_post_versions WHERE post_id = $postId AND language_id = $languageId"; $resCountVersions = mysqli_query($GLOBALS['mysql_con'], $sqlCountVersions); if ($resCountVersions && mysqli_num_rows($resCountVersions) > 0) { $rowCountVersions = mysqli_fetch_assoc($resCountVersions); $versionCount = (int) $rowCountVersions['versionCount']; } else { $versionCount = 0; } // Anzahl Ansprechpartner ermitteln $sqlCountContacts = "SELECT COUNT(*) AS contactCount FROM knowledgecenter_post_contacts WHERE post_id = $postId"; $resCountContacts = mysqli_query($GLOBALS['mysql_con'], $sqlCountContacts); if ($resCountContacts && mysqli_num_rows($resCountContacts) > 0) { $row = mysqli_fetch_assoc($resCountContacts); $contactCount = (int) $row['contactCount']; } else { $contactCount = 0; } // Prüfe, ob ein spezieller Versionsparameter übergeben wurde if (isset($_GET['version']) && !empty($_GET['version'])) { $versionId = (int) $_GET['version']; // Versuche, die angeforderte Version zu laden – aber nur, wenn sie aktuell gültig ist: $sqlVersion = "SELECT kpv.*, mc.name AS author FROM knowledgecenter_post_versions AS kpv LEFT JOIN main_contact AS mc ON kpv.author_id = mc.id WHERE kpv.post_id = $postId AND kpv.language_id = $languageId AND kpv.id = $versionId LIMIT 1"; // var_dump($sqlVersion); $resVersion = mysqli_query($GLOBALS['mysql_con'], $sqlVersion); if ($resVersion && mysqli_num_rows($resVersion) > 0) { // Die angeforderte Version existiert und ist aktuell gültig $currentVersion = mysqli_fetch_assoc($resVersion); } else { // Die angeforderte Version ist entweder ungültig (z. B. noch in der Zukunft) oder existiert nicht // => Ladevorgang: Suche nach der neuesten gültigen Version $sqlVersion = "SELECT kpv.*, mc.name AS author FROM knowledgecenter_post_versions AS kpv LEFT JOIN main_contact AS mc ON kpv.author_id = mc.id WHERE kpv.post_id = $postId AND kpv.language_id = $languageId AND kpv.state = 1 AND (kpv.valid_from IS NULL OR kpv.valid_from <= NOW()) AND (kpv.valid_until IS NULL OR kpv.valid_until >= NOW()) ORDER BY kpv.version_number DESC LIMIT 1"; // var_dump($sqlVersion); $resVersion = mysqli_query($GLOBALS['mysql_con'], $sqlVersion); if ($resVersion && mysqli_num_rows($resVersion) > 0) { $currentVersion = mysqli_fetch_assoc($resVersion); } else { // Es gibt überhaupt keine aktuell gültige Version, also setze einen Standard-Platzhalter $currentVersion = [ 'id' => 0, 'title' => 'Keine gültige Version vorhanden', 'image' => '', 'teaser' => '', 'content' => '', 'version_number' => 0, 'created_at' => date("Y-m-d H:i:s"), 'author' => '' ]; } } } else { // Kein spezieller Versionsparameter übergeben – lade die neueste gültige Version $sqlVersion = "SELECT kpv.*, mc.name AS author FROM knowledgecenter_post_versions AS kpv LEFT JOIN main_contact AS mc ON kpv.author_id = mc.id WHERE kpv.post_id = $postId AND kpv.language_id = $languageId AND kpv.state = 1 AND (kpv.valid_from IS NULL OR kpv.valid_from <= NOW()) AND (kpv.valid_until IS NULL OR kpv.valid_until >= NOW()) ORDER BY kpv.version_number DESC LIMIT 1"; // var_dump($sqlVersion); $resVersion = mysqli_query($GLOBALS['mysql_con'], $sqlVersion); if ($resVersion && mysqli_num_rows($resVersion) > 0) { $currentVersion = mysqli_fetch_assoc($resVersion); } else { // Fallback: Falls keine aktuell gültige Version existiert, wird kein Draft geladen // (Alternativ kannst du hier einen Hinweis ausgeben) $currentVersion = [ 'id' => 0, 'title' => 'Keine gültige Version vorhanden', 'image' => '', 'teaser' => '', 'content' => '', 'version_number' => 0, 'created_at' => date("Y-m-d H:i:s"), 'author' => '' ]; } } } // Expose current post title to JS for setting the page H1 echo ""; // Alle Versionen für diesen Beitrag (absteigend sortiert) für die aktuell gewählte Sprache abrufen $sqlAllVersions = "SELECT kpv.*, mc.name AS author FROM knowledgecenter_post_versions AS kpv LEFT JOIN main_contact AS mc ON kpv.author_id = mc.id WHERE kpv.post_id = $postId AND kpv.language_id = $languageId ORDER BY kpv.version_number DESC"; $resAllVersions = mysqli_query($GLOBALS['mysql_con'], $sqlAllVersions); $versions = []; while ($v = mysqli_fetch_assoc($resAllVersions)) { $versions[] = $v; } // Lade translations für alle Sprachen: Für jede Sprache wird die neueste Version für diesen Beitrag geladen $translations = []; foreach ($allLanguages as $lang) { $langId = (int) $lang['id']; $sqlTrans = "SELECT * FROM knowledgecenter_post_versions WHERE post_id = $postId AND language_id = $langId ORDER BY version_number DESC LIMIT 1"; $resTrans = mysqli_query($GLOBALS['mysql_con'], $sqlTrans); if ($resTrans && mysqli_num_rows($resTrans) > 0) { $translations[$langId] = mysqli_fetch_assoc($resTrans); } else { $translations[$langId] = [ 'id' => 0, 'title' => '', 'image' => '', 'teaser' => '', 'content' => '', 'version_number' => 0, 'created_at' => '' ]; } } $linkedFormId = null; $sqlLinkedForm = "SELECT form_id FROM knowledgecenter_post_form WHERE post_id = $postId LIMIT 1"; $resLinkedForm = mysqli_query($GLOBALS['mysql_con'], $sqlLinkedForm); if ($resLinkedForm && mysqli_num_rows($resLinkedForm) > 0) { $rowLinkedForm = mysqli_fetch_assoc($resLinkedForm); $linkedFormId = (int) $rowLinkedForm['form_id']; } ?>