84 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
use Nickyeoman\Validation;
 | 
						|
$v = new Nickyeoman\Validation\Validate();
 | 
						|
 | 
						|
$url_error = '/novaconium/page/edit/' . $post->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 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;
 | 
						|
 | 
						|
// Validate required fields
 | 
						|
if (empty($title) || empty($slug) || empty($body)) {
 | 
						|
    $messages->error('Title, Slug, and Body are required.');
 | 
						|
    $redirect->url($url_error);
 | 
						|
    makeitso();
 | 
						|
}
 | 
						|
 | 
						|
try {
 | 
						|
    if (!empty($id)) {
 | 
						|
        // 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');
 | 
						|
    } else {
 | 
						|
        // 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; // Get new page ID
 | 
						|
        $messages->notice('Page Created');
 | 
						|
    }
 | 
						|
} catch (Exception $e) {
 | 
						|
    $messages->error($e->getMessage());
 | 
						|
    $redirect->url($url_error);
 | 
						|
    makeitso();
 | 
						|
}
 | 
						|
 | 
						|
// Redirect to edit page
 | 
						|
$redirect->url('/novaconium/page/edit/' . $id);
 |