155 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
$data = [
 | 
						|
    'secure_key' => false,
 | 
						|
    'gen_key' => NULL,
 | 
						|
    'users_created' => false,
 | 
						|
    'empty_users' => false,
 | 
						|
    'show_login' => false,
 | 
						|
    'token' => $session->get('token'),
 | 
						|
    'title' => 'Novaconium Admin'
 | 
						|
];
 | 
						|
 | 
						|
// Check if SECURE KEY is Set in 
 | 
						|
if ($config['secure_key'] !== null && strlen($config['secure_key']) === 64) {
 | 
						|
    $data['secure_key'] = true;
 | 
						|
} else {
 | 
						|
    $data['gen_key'] = substr(bin2hex(random_bytes(32)), 0, 64);
 | 
						|
    $log->warn('secure_key not detected');
 | 
						|
}
 | 
						|
 | 
						|
// Check if user table exists
 | 
						|
$query = <<<EOSQL
 | 
						|
SELECT TABLE_NAME
 | 
						|
FROM information_schema.tables
 | 
						|
WHERE table_schema = DATABASE()
 | 
						|
  AND TABLE_NAME = 'users';
 | 
						|
EOSQL;
 | 
						|
$result = $db->query($query);
 | 
						|
 | 
						|
if ($result->num_rows === 0) {
 | 
						|
    $query = <<<EOSQL
 | 
						|
    CREATE TABLE `users` (
 | 
						|
        `id` int(11) NOT NULL AUTO_INCREMENT,
 | 
						|
        `username` varchar(30) NOT NULL,
 | 
						|
        `password` varchar(255) NOT NULL,
 | 
						|
        `email` varchar(255) NOT NULL,
 | 
						|
        `validate` varchar(32) DEFAULT NULL,
 | 
						|
        `confirmationToken` varchar(255) DEFAULT NULL,
 | 
						|
        `reset` varchar(32) DEFAULT NULL,
 | 
						|
        `created` datetime NOT NULL,
 | 
						|
        `updated` datetime DEFAULT NULL,
 | 
						|
        `confirmed` tinyint(1) NOT NULL DEFAULT 0,
 | 
						|
        `blocked` tinyint(1) NOT NULL DEFAULT 0,
 | 
						|
        PRIMARY KEY (`id`)
 | 
						|
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
 | 
						|
EOSQL;
 | 
						|
 | 
						|
    $db->query($query);
 | 
						|
    $data['users_created'] = true;
 | 
						|
    $log->info('Users Table Created');
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// Check Usergroup
 | 
						|
$query = <<<EOSQL
 | 
						|
SELECT TABLE_NAME
 | 
						|
FROM information_schema.tables
 | 
						|
WHERE table_schema = DATABASE()
 | 
						|
  AND TABLE_NAME = 'user_groups';
 | 
						|
EOSQL;
 | 
						|
$result = $db->query($query);
 | 
						|
 | 
						|
if ($result->num_rows === 0) {
 | 
						|
    $query = <<<EOSQL
 | 
						|
        CREATE TABLE `user_groups` (
 | 
						|
            `id` INT(11) NOT NULL AUTO_INCREMENT,
 | 
						|
            `user_id` INT(11) UNSIGNED NOT NULL,
 | 
						|
            `groupName` VARCHAR(40) NOT NULL,
 | 
						|
            PRIMARY KEY (`id`)
 | 
						|
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
 | 
						|
EOSQL;
 | 
						|
 | 
						|
 | 
						|
    $db->query($query);
 | 
						|
    $log->info('User_groups Table Created');
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// Check Pages Table
 | 
						|
$query = <<<EOSQL
 | 
						|
SELECT TABLE_NAME
 | 
						|
FROM information_schema.tables
 | 
						|
WHERE table_schema = DATABASE()
 | 
						|
  AND TABLE_NAME = 'pages';
 | 
						|
EOSQL;
 | 
						|
$result = $db->query($query);
 | 
						|
 | 
						|
if ($result->num_rows === 0) {
 | 
						|
    $query = <<<EOSQL
 | 
						|
    CREATE TABLE `pages` (
 | 
						|
        `id` int(11) NOT NULL AUTO_INCREMENT,
 | 
						|
        `title` varchar(255) NOT NULL,
 | 
						|
        `heading` varchar(255) NOT NULL,
 | 
						|
        `description` varchar(255) NOT NULL,
 | 
						|
        `keywords` varchar(255) NOT NULL,
 | 
						|
        `author` varchar(255) NOT NULL,
 | 
						|
        `slug` varchar(255) NOT NULL,
 | 
						|
        `path` varchar(255) DEFAULT NULL,
 | 
						|
        `intro` text DEFAULT NULL,
 | 
						|
        `body` text DEFAULT NULL,
 | 
						|
        `notes` text DEFAULT NULL,
 | 
						|
        `created` datetime NOT NULL,
 | 
						|
        `updated` datetime DEFAULT NULL,
 | 
						|
        `draft` tinyint(1) NOT NULL DEFAULT 1,
 | 
						|
        `changefreq` varchar(7) NOT NULL DEFAULT 'monthly',
 | 
						|
        `priority` float(4,1) NOT NULL DEFAULT 0.0,
 | 
						|
        PRIMARY KEY (`id`)
 | 
						|
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
 | 
						|
EOSQL;
 | 
						|
 | 
						|
    $db->query($query);
 | 
						|
    $log->info('Pages Table Created');
 | 
						|
}
 | 
						|
 | 
						|
// Check ContactForm Table
 | 
						|
$query = <<<EOSQL
 | 
						|
SELECT TABLE_NAME
 | 
						|
FROM information_schema.tables
 | 
						|
WHERE table_schema = DATABASE()
 | 
						|
  AND TABLE_NAME = 'contactForm';
 | 
						|
EOSQL;
 | 
						|
$result = $db->query($query);
 | 
						|
 | 
						|
if ($result->num_rows === 0) {
 | 
						|
    $query = <<<EOSQL
 | 
						|
    CREATE TABLE `contactForm` (
 | 
						|
        `id` int(11) NOT NULL AUTO_INCREMENT,
 | 
						|
        `name` varchar(255) NOT NULL,
 | 
						|
        `email` varchar(255) NOT NULL,
 | 
						|
        `message` text DEFAULT NULL,
 | 
						|
        `created` datetime NOT NULL DEFAULT current_timestamp(),
 | 
						|
        `unread` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Unread is true by default',
 | 
						|
        PRIMARY KEY (`id`)
 | 
						|
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
 | 
						|
EOSQL;
 | 
						|
 | 
						|
    $db->query($query);
 | 
						|
    $log->info('ContactForm Table Created');
 | 
						|
}
 | 
						|
 | 
						|
// Check if a user exists
 | 
						|
$result = $db->query("SELECT COUNT(*) as total FROM users");
 | 
						|
$row = $result->fetch_assoc();
 | 
						|
 | 
						|
if ($row['total'] < 1) {
 | 
						|
  $data['empty_users'] = true;
 | 
						|
} else {
 | 
						|
    $log->info('Init Run complete, all sql tables exist with a user.');
 | 
						|
    // Everything is working, send them to login page
 | 
						|
    $redirect->url('/novaconium/login');
 | 
						|
    makeitso();
 | 
						|
}
 | 
						|
 | 
						|
view('@novacore/init', $data);
 |