Continue to rework install
This commit is contained in:
parent
bceb55c4dd
commit
056d3439e5
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,2 +1,4 @@
|
|||
server/database/dragon.db
|
||||
server/database/dragon.db-shm
|
||||
server/database/dragon.db-wal
|
||||
server/.installed
|
|
@ -8,7 +8,7 @@ body {
|
|||
background-repeat: repeat;
|
||||
}
|
||||
|
||||
#container {
|
||||
#install-container {
|
||||
max-width: 996px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
<?php // guide.php :: shows all kinds of useful information
|
||||
|
||||
const SERVER = '../../server';
|
||||
require_once SERVER.'/bootstrap.php';
|
||||
|
||||
if (!installed()) redirect('/install');
|
||||
|
||||
$db = new Database(DB);
|
||||
$control = $db->table('control')->select();
|
||||
|
||||
const GUIDES = ['main', 'items', 'monsters', 'spells', 'classes'];
|
||||
$guide = isset($_GET['guide']) ? $_GET['guide'] : 'main';
|
||||
|
||||
const TITLES = [
|
||||
'main' => 'Main',
|
||||
'items' => 'Items & Drops',
|
||||
'monsters' => 'Monsters',
|
||||
'spells' => 'Spells',
|
||||
'classes' => 'Classes'
|
||||
];
|
||||
|
||||
echo render('/guide/layout', ['guide' => $guide, 'db' => $db, 'control' => $control, 'title' => TITLES[$guide]]);
|
|
@ -12,7 +12,7 @@ $route = App::$req->uri(0);
|
|||
installRedirect($route);
|
||||
|
||||
if ($route == '/') return HomeModule::home();
|
||||
if ($route == '/install') return InstallModule::handle();
|
||||
if ($route == 'install') return InstallModule::handle();
|
||||
|
||||
// 404
|
||||
http_response_code(404);
|
||||
|
|
|
@ -28,7 +28,8 @@ const MAP = [
|
|||
'Request' => SERVER.'/app/request.php',
|
||||
|
||||
// modules
|
||||
'HomeModule' => SERVER.'/modules/HomeModule.php',
|
||||
'HomeModule' => SERVER.'/modules/HomeModule.php',
|
||||
'InstallModule' => SERVER.'/modules/InstallModule.php',
|
||||
];
|
||||
|
||||
// autoloader
|
||||
|
|
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
The second URI segment determines the step/page we are on.
|
||||
*/
|
||||
|
||||
class InstallModule
|
||||
{
|
||||
public static function handle()
|
||||
{
|
||||
$s = App::$req->uri(1) ?? ''; // second segment
|
||||
$m = App::$req->method; // request method
|
||||
|
||||
if ($s == '' || $s == 'intro') return self::intro();
|
||||
if ($s == 'database' && $m == 'POST') return self::database();
|
||||
}
|
||||
|
||||
private static function intro()
|
||||
{
|
||||
echo render('install/layout', ['title' => 'Intro', 'step' => 'first']);
|
||||
}
|
||||
|
||||
private static function database()
|
||||
{
|
||||
$istart = microtime(true); // time the database setup
|
||||
if (!isset($_POST['mode'])) redirect('/install'); // redirect if no mode
|
||||
$complete = $_POST['mode'] == 'complete'; // complete or partial setup
|
||||
|
||||
$results = '';
|
||||
|
||||
// create Settings table
|
||||
App::$db->q("CREATE TABLE IF NOT EXISTS settings (
|
||||
id INTEGER PRIMARY KEY,
|
||||
game_name TEXT DEFAULT 'Dragon Knight',
|
||||
game_version TEXT DEFAULT '1.0',
|
||||
game_dev TEXT DEFAULT 'Sharkk',
|
||||
game_url TEXT DEFAULT 'https://dragonknight.dev',
|
||||
game_size INT DEFAULT 250,
|
||||
game_open INT DEFAULT 1,
|
||||
admin_email TEXT DEFAULT 'admin@dragonknight.dev',
|
||||
forum_type INT DEFAULT 1,
|
||||
forum_url TEXT DEFAULT '',
|
||||
verify_email INT DEFAULT 1,
|
||||
show_news INT DEFAULT 1,
|
||||
show_online INT DEFAULT 1,
|
||||
show_babble INT DEFAULT 1
|
||||
);");
|
||||
|
||||
$results .= 'Settings table created. ('. stopwatch($istart) .'s)<br />';
|
||||
|
||||
// insert default settings
|
||||
App::$db->q("INSERT INTO settings DEFAULT VALUES;");
|
||||
|
||||
$results .= 'Default settings inserted. ('. stopwatch($istart) .'s)<br />';
|
||||
|
||||
// create Classes table
|
||||
App::$db->q("CREATE TABLE IF NOT EXISTS classes (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT DEFAULT '',
|
||||
start_hp INT DEFAULT 0,
|
||||
start_mp INT DEFAULT 0,
|
||||
start_str INT DEFAULT 0,
|
||||
start_atk INT DEFAULT 0,
|
||||
start_dex INT DEFAULT 0,
|
||||
start_def INT DEFAULT 0
|
||||
growth_hp INT DEFAULT 0,
|
||||
growth_mp INT DEFAULT 0,
|
||||
growth_str INT DEFAULT 0,
|
||||
growth_atk INT DEFAULT 0,
|
||||
growth_dex INT DEFAULT 0,
|
||||
growth_def INT DEFAULT 0,
|
||||
spells TEXT DEFAULT '',
|
||||
);");
|
||||
|
||||
$results .= 'Classes table created. ('. stopwatch($istart) .'s)<br />';
|
||||
|
||||
if ($complete) {
|
||||
// add default classes if complete install
|
||||
App::$db->q("INSERT INTO classes VALUES
|
||||
(1, 'Mage', 10, 10, 5, 5, 5, 5, 3, 5, 1, 3, 1, 3, '1:6,18'),
|
||||
(2, 'Warrior', 20, 0, 10, 5, 10, 5, 6, 2, 3, 1, 3, 1, ''),
|
||||
(3, 'Paladin', 15, 5, 5, 5, 10, 10, 4, 4, 2, 2, 2, 2, '1:1,15,18');");
|
||||
} else {
|
||||
// there must be at least one class, for user creation to work
|
||||
App::$db->q("INSERT INTO classes (name) VALUES ('Adventurer');");
|
||||
}
|
||||
|
||||
$results .= 'Default classes inserted. ('. stopwatch($istart) .'s)<br />';
|
||||
|
||||
echo $results;
|
||||
}
|
||||
}
|
|
@ -25,8 +25,8 @@
|
|||
|
||||
<p>
|
||||
Click the appropriate button below for your preferred installation method.
|
||||
<form action="/install/?step=second" method="post">
|
||||
<button type="submit" name="mode" value="complete">Complete Setup</button>
|
||||
<form action="/install/database" method="post">
|
||||
<button type="submit" name="mode" value="complete">Complete Setup</button><br>
|
||||
- OR - <br>
|
||||
<button type="submit" name="mode" value="partial">Partial Setup</button>
|
||||
</form>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<link rel="stylesheet" href="/css/dragon.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="install-container">
|
||||
<h1>Dragon Knight Installation</h1>
|
||||
<h2><?= $title ?></h2>
|
||||
<?= render("install/$step", $data) ?>
|
||||
|
|
Loading…
Reference in New Issue
Block a user