Changed variables.

This commit is contained in:
2026-07-04 07:43:33 -07:00
parent 7ee47a0b1e
commit 4484f88d8d
21 changed files with 197 additions and 197 deletions
+3 -3
View File
@@ -1,11 +1,11 @@
<?php <?php
$data = array_merge($data, [ $ctx->withData([
'title' => 'Novaconium Login Page', 'title' => 'Novaconium Login Page',
'pageclass' => 'novaconium' 'pageclass' => 'novaconium'
]); ]);
// Don't come here if logged in // Don't come here if logged in
if ($session->get('username')) { if ($ctx->session->get('username')) {
$redirect->url('/novaconium/dashboard'); $ctx->redirect->url('/novaconium/dashboard');
makeitso(); makeitso();
} }
view('@novacore/auth/login'); view('@novacore/auth/login');
+3 -3
View File
@@ -1,5 +1,5 @@
<?php <?php
$session->kill(); $ctx->session->kill();
$log->info("Logout - Logout Success - " . $_SERVER['REMOTE_ADDR']); $ctx->log->info("Logout - Logout Success - " . ($_SERVER['REMOTE_ADDR'] ?? 'unknown'));
$redirect->url('/'); $ctx->redirect->url('/');
makeitso(); makeitso();
+24 -24
View File
@@ -8,63 +8,63 @@ $url_fail = '/novaconium/login';
// Don't go further if already logged in // Don't go further if already logged in
if ( !empty($session->get('username')) ) { if ( !empty($ctx->session->get('username')) ) {
$redirect->url($url_success); $ctx->redirect->url($url_success);
makeitso(); makeitso();
} }
// Make sure Session Token is correct // Make sure Session Token is correct
if ($session->get('token') != $post->get('token')) { if ($ctx->session->get('token') != $ctx->post->get('token')) {
$messages->addMessage('error', "Invalid Session."); $ctx->messages->addMessage('error', "Invalid Session.");
$log->error("Login Authentication - Invalid Session Token"); $ctx->log->error("Login Authentication - Invalid Session Token");
} }
// Handle Username // Handle Username
$rawUsername = $post->get('username', null); $rawUsername = $ctx->post->get('username', null);
$cleanUsername = $v->clean($rawUsername); // Clean the input $cleanUsername = $v->clean($rawUsername); // Clean the input
$username = strtolower($cleanUsername); // Convert to lowercase $username = strtolower($cleanUsername); // Convert to lowercase
if (!$username) { if (!$username) {
$messages->addMessage('error', "No Username given."); $ctx->messages->addMessage('error', "No Username given.");
} }
// Handle Password // Handle Password
$password = $v->clean($post->get('password', null)); $password = $v->clean($ctx->post->get('password', null));
if ( empty($password) ) { if ( empty($password) ) {
$messages->addMessage('error', "Password Empty."); $ctx->messages->addMessage('error', "Password Empty.");
} }
/************************************************************************************************************* /*************************************************************************************************************
* Query Database * Query Database
************************************************************************************************************/ ************************************************************************************************************/
if ($messages->count('error') === 0) { if ($ctx->messages->count('error') === 0) {
$query = "SELECT id, username, email, password, blocked FROM users WHERE username = ? OR email = ?"; $query = "SELECT id, username, email, password, blocked FROM users WHERE username = ? OR email = ?";
$matched = $db->getRow($query, [$username, $username]); $matched = $ctx->db->getRow($query, [$username, $username]);
if (empty($matched)) { if (empty($matched)) {
$messages->addMessage('error', "User or Password incorrect."); $ctx->messages->addMessage('error', "User or Password incorrect.");
$log->warning("Login Authentication - Login Error, user doesn't exist"); $ctx->log->warning("Login Authentication - Login Error, user doesn't exist");
} }
} }
if ($messages->count('error') === 0) { if ($ctx->messages->count('error') === 0) {
// Re-apply pepper // Re-apply pepper
$peppered = hash_hmac('sha3-512', $password, $config['secure_key']); $peppered = hash_hmac('sha3-512', $password, $ctx->config['secure_key']);
// Verify hashed password // Verify hashed password
if (!password_verify($peppered, $matched['password'])) { if (!password_verify($peppered, $matched['password'])) {
$messages->addMessage('error', "User or Password incorrect."); $ctx->messages->addMessage('error', "User or Password incorrect.");
$log->warning("Login Authentication - Login Error, password wrong"); $ctx->log->warning("Login Authentication - Login Error, password wrong");
} }
} }
// Process Login or Redirect // Process Login or Redirect
if ($messages->count('error') === 0) { if ($ctx->messages->count('error') === 0) {
$query = "SELECT groupName FROM user_groups WHERE user_id = ?"; $query = "SELECT groupName FROM user_groups WHERE user_id = ?";
$groups = $db->getRow($query, [$matched['id']]); $groups = $ctx->db->getRow($query, [$matched['id']]);
$session->set('username', $cleanUsername); $ctx->session->set('username', $cleanUsername);
$session->set('group', $groups['groupName']); $ctx->session->set('group', $groups['groupName']);
$redirect->url($url_success); $ctx->redirect->url($url_success);
$log->info("Login Authentication - Login Success"); $ctx->log->info("Login Authentication - Login Success");
} else { } else {
$redirect->url($url_fail); $ctx->redirect->url($url_fail);
} }
+2 -2
View File
@@ -1,9 +1,9 @@
<?php <?php
$data = array_merge($data, [ $ctx->withData([
'title' => 'Coming Soon', 'title' => 'Coming Soon',
'heading' => 'Coming Soon', 'heading' => 'Coming Soon',
'countdown' => true, 'countdown' => true,
'launch_date' => '2026-01-01T00:00:00' 'launch_date' => '2026-01-01T00:00:00'
]); ]);
view('@novacore/coming-soon', $data); view('@novacore/coming-soon', $ctx->data);
+7 -7
View File
@@ -6,10 +6,10 @@ use Nickyeoman\Validation;
$validate = new Validation\Validate(); $validate = new Validation\Validate();
$valid = true; $valid = true;
$p = $post->all(); $p = $ctx->post->all();
// Check secure key // Check secure key
if (empty($p['secure_key']) || $p['secure_key'] !== $config['secure_key']) { if (empty($p['secure_key']) || $p['secure_key'] !== $ctx->config['secure_key']) {
$valid = false; $valid = false;
} }
@@ -31,7 +31,7 @@ if (empty($p['password'])) {
$valid = false; $valid = false;
} else { } else {
// Use pepper + Argon2id // Use pepper + Argon2id
$peppered = hash_hmac('sha3-512', $p['password'], $config['secure_key']); $peppered = hash_hmac('sha3-512', $p['password'], $ctx->config['secure_key']);
$hashed_password = password_hash($peppered, PASSWORD_ARGON2ID); $hashed_password = password_hash($peppered, PASSWORD_ARGON2ID);
} }
@@ -45,16 +45,16 @@ if ($valid) {
EOSQL; EOSQL;
$params = [$name, $hashed_password, $p['email']]; $params = [$name, $hashed_password, $p['email']];
$db->query($query, $params); $ctx->db->query($query, $params);
$userid = $db->lastid(); $userid = $ctx->db->lastid();
// Assign admin group // Assign admin group
$groupInsertQuery = <<<EOSQL $groupInsertQuery = <<<EOSQL
INSERT INTO `user_groups` (`user_id`, `groupName`) VALUES (?, ?); INSERT INTO `user_groups` (`user_id`, `groupName`) VALUES (?, ?);
EOSQL; EOSQL;
$db->query($groupInsertQuery, [$userid, 'admin']); $ctx->db->query($groupInsertQuery, [$userid, 'admin']);
} }
// Always redirect at end // Always redirect at end
$redirect->url('/novaconium'); $ctx->redirect->url('/novaconium');
+5 -5
View File
@@ -1,14 +1,14 @@
<?php <?php
$data = array_merge($data, [ $ctx->withData([
'title' => 'Novaconium Dashboard Page', 'title' => 'Novaconium Dashboard Page',
'pageclass' => 'novaconium', 'pageclass' => 'novaconium',
'pageid' => 'controlPanel' 'pageid' => 'controlPanel'
]); ]);
if ( empty($session->get('username'))) { if ( empty($ctx->session->get('username'))) {
$redirect->url('/novaconium/login'); $ctx->redirect->url('/novaconium/login');
$messages->error('You are not loggedin'); $ctx->messages->error('You are not loggedin');
makeitso(); makeitso();
} }
view('@novacore/dashboard', $data); view('@novacore/dashboard', $ctx->data);
+10 -10
View File
@@ -1,6 +1,6 @@
<?php <?php
$data = array_merge($data, [ $ctx->withData([
'title' => 'Novaconium Edit Page', 'title' => 'Novaconium Edit Page',
'pageclass' => 'novaconium', 'pageclass' => 'novaconium',
'pageid' => 'controlPanel', 'pageid' => 'controlPanel',
@@ -8,14 +8,14 @@ $data = array_merge($data, [
]); ]);
// Check if logged in // Check if logged in
if (empty($session->get('username'))) { if (empty($ctx->session->get('username'))) {
$messages->error('You are not logged in'); $ctx->messages->error('You are not logged in');
$redirect->url('/novaconium/login'); $ctx->redirect->url('/novaconium/login');
makeitso(); makeitso();
} }
// Get page ID from router parameters // Get page ID from router parameters
$pageid = $router->parameters['id'] ?? null; $pageid = $ctx->router->parameters['id'] ?? null;
if (!empty($pageid)) { if (!empty($pageid)) {
// Existing page: fetch from database // Existing page: fetch from database
@@ -51,23 +51,23 @@ WHERE p.id = ?
GROUP BY p.id; GROUP BY p.id;
EOSQL; EOSQL;
$data['rows'] = $db->getRow($query, [$pageid]); $ctx->data['rows'] = $ctx->db->getRow($query, [$pageid]);
// If no row is found, treat as new page // If no row is found, treat as new page
if (!$data['rows']) { if (!$ctx->data['rows']) {
$pageid = null; $pageid = null;
} }
} }
if (empty($pageid)) { if (empty($pageid)) {
// New page: set default values for all fields // New page: set default values for all fields
$data['rows'] = [ $ctx->data['rows'] = [
'id' => 'newpage', 'id' => 'newpage',
'title' => '', 'title' => '',
'heading' => '', 'heading' => '',
'description' => '', 'description' => '',
'keywords' => '', 'keywords' => '',
'author' => $session->get('username') ?? '', 'author' => $ctx->session->get('username') ?? '',
'slug' => '', 'slug' => '',
'path' => '', 'path' => '',
'intro' => '', 'intro' => '',
@@ -82,4 +82,4 @@ if (empty($pageid)) {
} }
// Render the edit page view // Render the edit page view
view('@novacore/editpage/index', $data); view('@novacore/editpage/index', $ctx->data);
+30 -30
View File
@@ -1,22 +1,22 @@
<?php <?php
$data = [ $ctx->data = [
'secure_key' => false, 'secure_key' => false,
'gen_key' => NULL, 'gen_key' => NULL,
'users_created' => false, 'users_created' => false,
'empty_users' => false, 'empty_users' => false,
'show_login' => false, 'show_login' => false,
'token' => $session->get('token'), 'token' => $ctx->session->get('token'),
'pageclass' => 'novaconium', 'pageclass' => 'novaconium',
'title' => 'Novaconium Admin' 'title' => 'Novaconium Admin'
]; ];
// Check if SECURE KEY is Set in // Check if SECURE KEY is Set in
if ($config['secure_key'] !== null && strlen($config['secure_key']) === 64) { if ($ctx->config['secure_key'] !== null && strlen($ctx->config['secure_key']) === 64) {
$data['secure_key'] = true; $ctx->data['secure_key'] = true;
} else { } else {
$data['gen_key'] = substr(bin2hex(random_bytes(32)), 0, 64); $ctx->data['gen_key'] = substr(bin2hex(random_bytes(32)), 0, 64);
$log->warn('secure_key not detected'); $ctx->log->warn('secure_key not detected');
} }
// Check if user table exists // Check if user table exists
@@ -26,7 +26,7 @@ FROM information_schema.tables
WHERE table_schema = DATABASE() WHERE table_schema = DATABASE()
AND TABLE_NAME = 'users'; AND TABLE_NAME = 'users';
EOSQL; EOSQL;
$result = $db->query($query); $result = $ctx->db->query($query);
if ($result->num_rows === 0) { if ($result->num_rows === 0) {
$query = <<<EOSQL $query = <<<EOSQL
@@ -46,9 +46,9 @@ if ($result->num_rows === 0) {
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
EOSQL; EOSQL;
$db->query($query); $ctx->db->query($query);
$data['users_created'] = true; $ctx->data['users_created'] = true;
$log->info('Users Table Created'); $ctx->log->info('Users Table Created');
} }
@@ -59,7 +59,7 @@ FROM information_schema.tables
WHERE table_schema = DATABASE() WHERE table_schema = DATABASE()
AND TABLE_NAME = 'user_groups'; AND TABLE_NAME = 'user_groups';
EOSQL; EOSQL;
$result = $db->query($query); $result = $ctx->db->query($query);
if ($result->num_rows === 0) { if ($result->num_rows === 0) {
$query = <<<EOSQL $query = <<<EOSQL
@@ -72,8 +72,8 @@ if ($result->num_rows === 0) {
EOSQL; EOSQL;
$db->query($query); $ctx->db->query($query);
$log->info('User_groups Table Created'); $ctx->log->info('User_groups Table Created');
} }
@@ -84,7 +84,7 @@ FROM information_schema.tables
WHERE table_schema = DATABASE() WHERE table_schema = DATABASE()
AND TABLE_NAME = 'pages'; AND TABLE_NAME = 'pages';
EOSQL; EOSQL;
$result = $db->query($query); $result = $ctx->db->query($query);
if ($result->num_rows === 0) { if ($result->num_rows === 0) {
$query = <<<EOSQL $query = <<<EOSQL
@@ -109,8 +109,8 @@ if ($result->num_rows === 0) {
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
EOSQL; EOSQL;
$db->query($query); $ctx->db->query($query);
$log->info('Pages Table Created'); $ctx->log->info('Pages Table Created');
} }
// Check ContactForm Table // Check ContactForm Table
@@ -120,7 +120,7 @@ FROM information_schema.tables
WHERE table_schema = DATABASE() WHERE table_schema = DATABASE()
AND TABLE_NAME = 'contactForm'; AND TABLE_NAME = 'contactForm';
EOSQL; EOSQL;
$result = $db->query($query); $result = $ctx->db->query($query);
if ($result->num_rows === 0) { if ($result->num_rows === 0) {
$query = <<<EOSQL $query = <<<EOSQL
@@ -135,20 +135,20 @@ if ($result->num_rows === 0) {
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
EOSQL; EOSQL;
$db->query($query); $ctx->db->query($query);
$log->info('ContactForm Table Created'); $ctx->log->info('ContactForm Table Created');
} }
// Check if a user exists // Check if a user exists
$result = $db->query("SELECT COUNT(*) as total FROM users"); $result = $ctx->db->query("SELECT COUNT(*) as total FROM users");
$row = $result->fetch_assoc(); $row = $result->fetch_assoc();
if ($row['total'] < 1) { if ($row['total'] < 1) {
$data['empty_users'] = true; $ctx->data['empty_users'] = true;
} else { } else {
$log->info('Init Run complete, all sql tables exist with a user.'); $ctx->log->info('Init Run complete, all sql tables exist with a user.');
// Everything is working, send them to login page // Everything is working, send them to login page
$redirect->url('/novaconium/login'); $ctx->redirect->url('/novaconium/login');
makeitso(); makeitso();
} }
@@ -159,7 +159,7 @@ FROM information_schema.tables
WHERE table_schema = DATABASE() WHERE table_schema = DATABASE()
AND TABLE_NAME = 'tags'; AND TABLE_NAME = 'tags';
EOSQL; EOSQL;
$result = $db->query($query); $result = $ctx->db->query($query);
if ($result->num_rows === 0) { if ($result->num_rows === 0) {
$query = <<<EOSQL $query = <<<EOSQL
CREATE TABLE IF NOT EXISTS `tags` ( CREATE TABLE IF NOT EXISTS `tags` (
@@ -170,8 +170,8 @@ CREATE TABLE IF NOT EXISTS `tags` (
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
EOSQL; EOSQL;
$db->query($query); $ctx->db->query($query);
$log->info('Tags Table Created'); $ctx->log->info('Tags Table Created');
} }
// Check Page Tags Junction Table (after tags table) // Check Page Tags Junction Table (after tags table)
@@ -181,7 +181,7 @@ FROM information_schema.tables
WHERE table_schema = DATABASE() WHERE table_schema = DATABASE()
AND TABLE_NAME = 'page_tags'; AND TABLE_NAME = 'page_tags';
EOSQL; EOSQL;
$result = $db->query($query); $result = $ctx->db->query($query);
if ($result->num_rows === 0) { if ($result->num_rows === 0) {
$query = <<<EOSQL $query = <<<EOSQL
CREATE TABLE IF NOT EXISTS `page_tags` ( CREATE TABLE IF NOT EXISTS `page_tags` (
@@ -195,8 +195,8 @@ CREATE TABLE IF NOT EXISTS `page_tags` (
FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
EOSQL; EOSQL;
$db->query($query); $ctx->db->query($query);
$log->info('Page Tags Junction Table Created'); $ctx->log->info('Page Tags Junction Table Created');
} }
view('@novacore/init', $data); view('@novacore/init', $ctx->data);
+7 -7
View File
@@ -1,15 +1,15 @@
<?php <?php
if ( empty($session->get('username'))) { if ( empty($ctx->session->get('username'))) {
$redirect->url('/novaconium/login'); $ctx->redirect->url('/novaconium/login');
$messages->error('You are not loggedin'); $ctx->messages->error('You are not loggedin');
makeitso(); makeitso();
} }
$messageid = $router->parameters['id']; $messageid = $ctx->router->parameters['id'];
$query="DELETE FROM contactForm WHERE `contactForm`.`id` = ?"; $query="DELETE FROM contactForm WHERE `contactForm`.`id` = ?";
$db->query($query, [$messageid]); $ctx->db->query($query, [$messageid]);
$redirect->url('/novaconium/messages'); $ctx->redirect->url('/novaconium/messages');
$messages->notice("Removed Message $messageid"); $ctx->messages->notice("Removed Message $messageid");
makeitso(); makeitso();
+8 -8
View File
@@ -1,19 +1,19 @@
<?php <?php
$data = array_merge($data, [ $ctx->withData([
'title' => 'Novaconium Message Page', 'title' => 'Novaconium Message Page',
'pageclass' => 'novaconium' 'pageclass' => 'novaconium'
]); ]);
if ( empty($session->get('username'))) { if ( empty($ctx->session->get('username'))) {
$redirect->url('/novaconium/login'); $ctx->redirect->url('/novaconium/login');
$messages->error('You are not loggedin'); $ctx->messages->error('You are not loggedin');
makeitso(); makeitso();
} }
$messageid = $router->parameters['id']; $messageid = $ctx->router->parameters['id'];
$query = "SELECT id, name, email, message, created, unread FROM contactForm WHERE id = '$messageid'"; $query = "SELECT id, name, email, message, created, unread FROM contactForm WHERE id = ?";
$data['themessage'] = $db->getRow($query); $ctx->withData(['themessage' => $ctx->db->getRow($query, [$messageid])]);
view('@novacore/editmessage', $data); view('@novacore/editmessage', $ctx->data);
+20 -20
View File
@@ -5,33 +5,33 @@ use Nickyeoman\Validation;
$v = new Nickyeoman\Validation\Validate(); $v = new Nickyeoman\Validation\Validate();
$url_success = '/novaconium/messages'; $url_success = '/novaconium/messages';
$url_error = '/novaconium/messages/edit/' . $post->get('id'); // Redirect back to the message edit form on error $url_error = '/novaconium/messages/edit/' . $ctx->post->get('id'); // Redirect back to the message edit form on error
// Check if logged in // Check if logged in
if (empty($session->get('username'))) { if (empty($ctx->session->get('username'))) {
$messages->error('You are not logged in'); $ctx->messages->error('You are not logged in');
$redirect->url('/novaconium/login'); $ctx->redirect->url('/novaconium/login');
makeitso(); makeitso();
} }
// Check CSRF token // Check CSRF token
if ($session->get('token') != $post->get('token')) { if ($ctx->session->get('token') != $ctx->post->get('token')) {
$messages->error('Invalid token'); $ctx->messages->error('Invalid token');
$redirect->url($url_success); $ctx->redirect->url($url_success);
makeitso(); makeitso();
} }
// Get POST data // Get POST data
$id = $post->get('id'); $id = $ctx->post->get('id');
$name = $post->get('name'); $name = $ctx->post->get('name');
$email = $post->get('email'); $email = $ctx->post->get('email');
$message = $post->get('message'); $message = $ctx->post->get('message');
$unread = !empty($post->get('unread')) ? 1 : 0; $unread = !empty($ctx->post->get('unread')) ? 1 : 0;
// Validate required fields // Validate required fields
if (empty($id) || empty($message) || empty($email)) { if (empty($id) || empty($message) || empty($email)) {
$messages->error('One of the required fields was empty.'); $ctx->messages->error('One of the required fields was empty.');
$redirect->url($url_error); $ctx->redirect->url($url_error);
makeitso(); makeitso();
} }
@@ -43,15 +43,15 @@ try {
$params = [$name, $email, $message, $unread, $id]; $params = [$name, $email, $message, $unread, $id];
$db->query($query, $params); $ctx->db->query($query, $params);
$messages->notice('Message updated successfully'); $ctx->messages->notice('Message updated successfully');
} catch (Exception $e) { } catch (\Exception $e) {
$messages->error('Error updating message: ' . $e->getMessage()); $ctx->messages->error('Error updating message: ' . $e->getMessage());
$redirect->url($url_error); $ctx->redirect->url($url_error);
makeitso(); makeitso();
} }
// Redirect to success page // Redirect to success page
$redirect->url($url_success); $ctx->redirect->url($url_success);
+7 -7
View File
@@ -1,22 +1,22 @@
<?php <?php
$data = array_merge($data, [ $ctx->withData([
'title' => 'Novaconium Messages', 'title' => 'Novaconium Messages',
'pageclass' => 'novaconium', 'pageclass' => 'novaconium',
'pageid' => 'controlPanel' 'pageid' => 'controlPanel'
]); ]);
if ( empty($session->get('username'))) { if ( empty($ctx->session->get('username'))) {
$redirect->url('/novaconium/login'); $ctx->redirect->url('/novaconium/login');
$messages->error('You are not loggedin'); $ctx->messages->error('You are not loggedin');
makeitso(); makeitso();
} }
// Get the pages // Get the pages
$query = "SELECT id, name, email, LEFT(message, 40) AS message, created, unread FROM contactForm"; $query = "SELECT id, name, email, LEFT(message, 40) AS message, created, unread FROM contactForm";
$matched = $db->getRows($query); $matched = $ctx->db->getRows($query);
$data['messages'] = $matched; $ctx->withData(['messages' => $matched]);
view('@novacore/messages', $data); view('@novacore/messages', $ctx->data);
+7 -7
View File
@@ -1,21 +1,21 @@
<?php <?php
$data = array_merge($data, [ $ctx->withData([
'title' => 'Novaconium Pages', 'title' => 'Novaconium Pages',
'pageclass' => 'novaconium', 'pageclass' => 'novaconium',
'pageid' => 'controlPanel' 'pageid' => 'controlPanel'
]); ]);
if ( empty($session->get('username'))) { if ( empty($ctx->session->get('username'))) {
$redirect->url('/novaconium/login'); $ctx->redirect->url('/novaconium/login');
$messages->error('You are not loggedin'); $ctx->messages->error('You are not loggedin');
makeitso(); makeitso();
} }
// Get the pages // Get the pages
$query = "SELECT id, title, created, updated, draft FROM pages"; $query = "SELECT id, title, created, updated, draft FROM pages";
$matched = $db->getRows($query); $matched = $ctx->db->getRows($query);
$data['pages'] = $matched; $ctx->withData(['pages' => $matched]);
view('@novacore/pages', $data); view('@novacore/pages', $ctx->data);
+2 -2
View File
@@ -10,7 +10,7 @@ $pt = '@novacore/samples'; //Define the view directory
//$pt = 'samples'; //drop the core for your project //$pt = 'samples'; //drop the core for your project
//Grab the slug //Grab the slug
$slug = $router->parameters['slug']; $slug = $ctx->router->parameters['slug'];
//build path //build path
$tmpl = $pt . '/' . $slug; $tmpl = $pt . '/' . $slug;
@@ -26,7 +26,7 @@ if (strpos($pt, '@novacore') !== false) {
$possibleFile = $baseDir . '/' . $slug . '.html.twig'; // add .twig extension if needed $possibleFile = $baseDir . '/' . $slug . '.html.twig'; // add .twig extension if needed
if (is_file($possibleFile) && is_readable($possibleFile)) { if (is_file($possibleFile) && is_readable($possibleFile)) {
view($tmpl, $data); view($tmpl, $ctx->data);
} else { } else {
http_response_code('404'); http_response_code('404');
header("Content-Type: text/html"); header("Content-Type: text/html");
+34 -34
View File
@@ -5,44 +5,44 @@ use Novaconium\Services\TagManager;
$v = new Nickyeoman\Validation\Validate(); $v = new Nickyeoman\Validation\Validate();
$url_error = '/novaconium/page/edit/' . $post->get('id'); // fallback for errors $url_error = '/novaconium/page/edit/' . $ctx->post->get('id'); // fallback for errors
// ------------------------- // -------------------------
// Check login // Check login
// ------------------------- // -------------------------
if (empty($session->get('username'))) { if (empty($ctx->session->get('username'))) {
$messages->error('You are not logged in'); $ctx->messages->error('You are not logged in');
$redirect->url('/novaconium/login'); $ctx->redirect->url('/novaconium/login');
makeitso(); makeitso();
} }
// ------------------------- // -------------------------
// Check CSRF token // Check CSRF token
// ------------------------- // -------------------------
if ($session->get('token') != $post->get('token')) { if ($ctx->session->get('token') != $ctx->post->get('token')) {
$messages->error('Invalid Token'); $ctx->messages->error('Invalid Token');
$redirect->url('/novaconium/pages'); $ctx->redirect->url('/novaconium/pages');
makeitso(); makeitso();
} }
// ------------------------- // -------------------------
// Gather POST data // Gather POST data
// ------------------------- // -------------------------
$id = $post->get('id'); $id = $ctx->post->get('id');
$title = $_POST['title'] ?? ''; $title = $ctx->post->get('title', '');
$heading = $_POST['heading'] ?? ''; $heading = $ctx->post->get('heading', '');
$description = $_POST['description'] ?? ''; $description = $ctx->post->get('description', '');
$keywords = $_POST['keywords'] ?? ''; $keywords = $ctx->post->get('keywords', '');
$author = $_POST['author'] ?? ''; $author = $ctx->post->get('author', '');
$slug = $_POST['slug'] ?? ''; $slug = $ctx->post->get('slug', '');
$path = $_POST['path'] ?? null; $path = $ctx->post->get('path');
$intro = $_POST['intro'] ?? ''; $intro = $ctx->post->get('intro', '');
$body = $_POST['body'] ?? ''; $body = $ctx->post->get('body', '');
$notes = $_POST['notes'] ?? ''; $notes = $ctx->post->get('notes', '');
$draft = !empty($post->get('draft')) ? 1 : 0; $draft = !empty($ctx->post->get('draft')) ? 1 : 0;
$changefreq = $_POST['changefreq'] ?? 'monthly'; $changefreq = $ctx->post->get('changefreq', 'monthly');
$priority = $_POST['priority'] ?? 0.0; $priority = $ctx->post->get('priority', 0.0);
$tags_json = $_POST['tags_json'] ?? '[]'; $tags_json = $ctx->post->get('tags_json', '[]');
// ------------------------- // -------------------------
// Decode & sanitize tags // Decode & sanitize tags
@@ -57,13 +57,13 @@ $tags = array_unique($tags);
// Validate required fields // Validate required fields
// ------------------------- // -------------------------
if (empty($title) || empty($slug) || empty($body)) { if (empty($title) || empty($slug) || empty($body)) {
$messages->error('Title, Slug, and Body are required.'); $ctx->messages->error('Title, Slug, and Body are required.');
$redirect->url($url_error); $ctx->redirect->url($url_error);
makeitso(); makeitso();
} }
try { try {
$tagManager = new TagManager(); $tagManager = new TagManager($ctx->db);
if ($id == 'newpage') { if ($id == 'newpage') {
// ------------------------- // -------------------------
@@ -79,9 +79,9 @@ try {
$slug, $path, $intro, $body, $notes, $slug, $path, $intro, $body, $notes,
$draft, $changefreq, $priority $draft, $changefreq, $priority
]; ];
$db->query($query, $params); $ctx->db->query($query, $params);
$id = $db->lastid; $id = $ctx->db->lastid;
$messages->notice('Page Created'); $ctx->messages->notice('Page Created');
} else { } else {
// ------------------------- // -------------------------
@@ -97,8 +97,8 @@ try {
$slug, $path, $intro, $body, $notes, $slug, $path, $intro, $body, $notes,
$draft, $changefreq, $priority, $id $draft, $changefreq, $priority, $id
]; ];
$db->query($query, $params); $ctx->db->query($query, $params);
$messages->notice('Page Updated'); $ctx->messages->notice('Page Updated');
} }
// ------------------------- // -------------------------
@@ -106,11 +106,11 @@ try {
// ------------------------- // -------------------------
$tagManager->setTagsForPage($id, $tags); $tagManager->setTagsForPage($id, $tags);
} catch (Exception $e) { } catch (\Exception $e) {
$messages->error($e->getMessage()); $ctx->messages->error($e->getMessage());
$redirect->url($url_error); $ctx->redirect->url($url_error);
makeitso(); makeitso();
} }
// Redirect back to edit page // Redirect back to edit page
$redirect->url('/novaconium/page/edit/' . $id); $ctx->redirect->url('/novaconium/page/edit/' . $id);
+5 -5
View File
@@ -1,15 +1,15 @@
<?php <?php
$data = array_merge($data, [ $ctx->withData([
'title' => 'Novaconium Settings', 'title' => 'Novaconium Settings',
'pageclass' => 'novaconium', 'pageclass' => 'novaconium',
'pageid' => 'controlPanel' 'pageid' => 'controlPanel'
]); ]);
if ( empty($session->get('username'))) { if ( empty($ctx->session->get('username'))) {
$redirect->url('/novaconium/login'); $ctx->redirect->url('/novaconium/login');
$messages->error('You are not loggedin'); $ctx->messages->error('You are not loggedin');
makeitso(); makeitso();
} }
view('@novacore/settings', $data); view('@novacore/settings', $ctx->data);
+3 -3
View File
@@ -10,7 +10,7 @@ $query=<<<EOSQL
AND draft = 0 AND draft = 0
ORDER BY updated DESC; ORDER BY updated DESC;
EOSQL; EOSQL;
$thepages = $db->getRows($query); $thepages = $ctx->db->getRows($query);
// Start the view // Start the view
echo '<?xml version="1.0" encoding="UTF-8"?>'; echo '<?xml version="1.0" encoding="UTF-8"?>';
@@ -25,9 +25,9 @@ if ( ! empty($thepages) ) {
echo "<url>"; echo "<url>";
if ( empty($v['path']) ) if ( empty($v['path']) )
echo "<loc>" . $config['base_url'] . '/page/' . $v['slug'] . "</loc>"; echo "<loc>" . $ctx->config['base_url'] . '/page/' . $v['slug'] . "</loc>";
else else
echo "<loc>" . $config['base_url'] . $v['path'] . "</loc>"; echo "<loc>" . $ctx->config['base_url'] . $v['path'] . "</loc>";
echo "<lastmod>" . $date . "</lastmod>"; echo "<lastmod>" . $date . "</lastmod>";
echo "<changefreq>" . $v['changefreq'] . "</changefreq>"; echo "<changefreq>" . $v['changefreq'] . "</changefreq>";
@@ -1,5 +1,5 @@
<?php <?php
$data = array_merge($data, [ $ctx->withData([
'title' => 'Welcome to Novaconium Index Page', 'title' => 'Welcome to Novaconium Index Page',
'pageclass' => 'novaconium' 'pageclass' => 'novaconium'
]); ]);
+8 -9
View File
@@ -1,5 +1,5 @@
<?php <?php
$slug = $router->parameters['slug']; $slug = $ctx->router->parameters['slug'];
$query=<<<EOSQL $query=<<<EOSQL
SELECT SELECT
id, id,
@@ -12,22 +12,21 @@ $query=<<<EOSQL
created, created,
updated updated
FROM pages FROM pages
WHERE slug = '$slug' WHERE slug = ?
EOSQL; EOSQL;
//$db->debugGetRow($query); $page = $ctx->db->getRow($query, [$slug]);
$data = $db->getRow($query); if(!$page) {
if(!$data) {
http_response_code('404'); http_response_code('404');
header("Content-Type: text/html"); header("Content-Type: text/html");
view('404'); view('404');
exit; exit;
} }
$data = array_merge($data, [ $ctx->withData(array_merge($page, [
'menuActive' => 'blog', 'menuActive' => 'blog',
'pageid' => 'page', 'pageid' => 'page',
'permissionsGroup' => $session->get('group') 'permissionsGroup' => $ctx->session->get('group')
]); ]));
view('page', $data); view('page', $ctx->data);
@@ -6,7 +6,7 @@ header('Content-Type: text/plain; charset=UTF-8');
header('Cache-Control: public, max-age=604800'); header('Cache-Control: public, max-age=604800');
// Use $config['base_url'] as-is // Use $config['base_url'] as-is
$baseUrl = $config['base_url']; $baseUrl = $ctx->config['base_url'];
echo <<<TXT echo <<<TXT
# robots.txt for sites powered by Novaconium framework # robots.txt for sites powered by Novaconium framework
+4 -3
View File
@@ -2,14 +2,15 @@
namespace Novaconium\Services; namespace Novaconium\Services;
use Novaconium\Database;
class TagManager class TagManager
{ {
protected $db; protected $db;
public function __construct() public function __construct(?Database $db = null)
{ {
global $db; $this->db = $db ?? ($GLOBALS['ctx']->db ?? null) ?? ($GLOBALS['db'] ?? null);
$this->db = $db;
} }
/** /**