get('id'); // fallback for errors // ------------------------- // Check login // ------------------------- if (empty($session->get('username'))) { $messages->error('You are not logged in'); $redirect->url('/novaconium/login'); makeitso(); } // ------------------------- // Check CSRF token // ------------------------- if ($session->get('token') != $post->get('token')) { $messages->error('Invalid Token'); $redirect->url('/novaconium/pages'); makeitso(); } // ------------------------- // Gather POST data // ------------------------- $id = $post->get('id'); $title = $_POST['title'] ?? ''; $heading = $_POST['heading'] ?? ''; $description = $_POST['description'] ?? ''; $keywords = $_POST['keywords'] ?? ''; $author = $_POST['author'] ?? ''; $slug = $_POST['slug'] ?? ''; $path = $_POST['path'] ?? null; $intro = $_POST['intro'] ?? ''; $body = $_POST['body'] ?? ''; $notes = $_POST['notes'] ?? ''; $draft = !empty($post->get('draft')) ? 1 : 0; $changefreq = $_POST['changefreq'] ?? 'monthly'; $priority = $_POST['priority'] ?? 0.0; $tags_json = $_POST['tags_json'] ?? '[]'; // ------------------------- // Decode & sanitize tags // ------------------------- $tags = json_decode($tags_json, true); if (!is_array($tags)) $tags = []; $tags = array_map('trim', $tags); $tags = array_filter($tags, fn($t) => $t !== ''); $tags = array_unique($tags); // ------------------------- // Validate required fields // ------------------------- if (empty($title) || empty($slug) || empty($body)) { $messages->error('Title, Slug, and Body are required.'); $redirect->url($url_error); makeitso(); } try { $tagManager = new TagManager(); if ($id == 'newpage') { // ------------------------- // Create new page // ------------------------- $query = "INSERT INTO `pages` (`title`, `heading`, `description`, `keywords`, `author`, `slug`, `path`, `intro`, `body`, `notes`, `draft`, `changefreq`, `priority`, `created`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())"; $params = [ $title, $heading, $description, $keywords, $author, $slug, $path, $intro, $body, $notes, $draft, $changefreq, $priority ]; $db->query($query, $params); $id = $db->lastid; $messages->notice('Page Created'); } else { // ------------------------- // Update existing page // ------------------------- $query = "UPDATE `pages` SET `title` = ?, `heading` = ?, `description` = ?, `keywords` = ?, `author` = ?, `slug` = ?, `path` = ?, `intro` = ?, `body` = ?, `notes` = ?, `draft` = ?, `changefreq` = ?, `priority` = ?, `updated` = NOW() WHERE `id` = ?"; $params = [ $title, $heading, $description, $keywords, $author, $slug, $path, $intro, $body, $notes, $draft, $changefreq, $priority, $id ]; $db->query($query, $params); $messages->notice('Page Updated'); } // ------------------------- // Save tags (for both new and existing pages) // ------------------------- $tagManager->setTagsForPage($id, $tags); } catch (Exception $e) { $messages->error($e->getMessage()); $redirect->url($url_error); makeitso(); } // Redirect back to edit page $redirect->url('/novaconium/page/edit/' . $id);