getAuthInfo()->getPerms('global')->check(Perm::G_CL_TAGS_MANAGE)) Template::throwError(403); $urls = $msz->getURLs(); $changelog = $msz->getChangelog(); $tagId = (string)filter_input(INPUT_GET, 't', FILTER_SANITIZE_NUMBER_INT); $loadTagInfo = fn() => $changelog->getTag($tagId); if(empty($tagId)) $isNew = true; else try { $isNew = false; $tagInfo = $loadTagInfo(); } catch(RuntimeException $ex) { Template::throwError(404); } if($_SERVER['REQUEST_METHOD'] === 'GET' && !empty($_GET['delete'])) { if(!CSRF::validateRequest()) Template::throwError(403); $changelog->deleteTag($tagInfo); $msz->createAuditLog('CHANGELOG_TAG_DELETE', [$tagInfo->getId()]); Tools::redirect($urls->format('manage-changelog-tags')); return; } while($_SERVER['REQUEST_METHOD'] === 'POST' && CSRF::validateRequest()) { $name = trim((string)filter_input(INPUT_POST, 'ct_name')); $description = trim((string)filter_input(INPUT_POST, 'ct_desc')); $archive = !empty($_POST['ct_archive']); if($isNew) { $tagInfo = $changelog->createTag($name, $description, $archive); } else { if($name === $tagInfo->getName()) $name = null; if($description === $tagInfo->getDescription()) $description = null; if($archive === $tagInfo->isArchived()) $archive = null; if($name !== null || $description !== null || $archive !== null) $changelog->updateTag($tagInfo, $name, $description, $archive); } $msz->createAuditLog( $isNew ? 'CHANGELOG_TAG_CREATE' : 'CHANGELOG_TAG_EDIT', [$tagInfo->getId()] ); if($isNew) { Tools::redirect($urls->format('manage-changelog-tag', ['tag' => $tagInfo->getId()])); return; } else $tagInfo = $loadTagInfo(); break; } Template::render('manage.changelog.tag', [ 'tag_new' => $isNew, 'tag_info' => $tagInfo ?? null, ]);