diff --git a/public/index.php b/public/index.php index ceaacb2..6e98024 100644 --- a/public/index.php +++ b/public/index.php @@ -17,7 +17,25 @@ use DragonKnight\Actions\Help; use DragonKnight\Actions\Install; use DragonKnight\Actions\Towns; use DragonKnight\Actions\Users; -use DragonKnight\Admin\Admin; +use DragonKnight\Actions\Admin; + +ini_set('display_errors', 1); +error_reporting(E_ALL); + +set_time_limit(0); +ignore_user_abort(true); +ini_set('max_execution_time', 0); +ini_set('memory_limit', '-1'); // Unlimited memory usage + +if (! $autoloader = require file_exists(__DIR__.'/../vendor/autoload.php') ? __DIR__.'/../vendor/autoload.php' : __DIR__.'/../../autoload.php') { + throw new \Exception('Composer autoloader not found. Run `composer install` and try again.'); +} + +if (! extension_loaded('sqlite3')) { + throw new \Exception('The SQLite3 extension is required but not loaded. Please enable it in your PHP configuration.'); +} + +$uri = explode('/', trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/')); // Do an early return with babblebox data if that's what's being requested if ($uri[0] === 'babblebox' && (isset($uri[1]) && $uri[1] === 'messages')) { @@ -27,14 +45,14 @@ if ($uri[0] === 'babblebox' && (isset($uri[1]) && $uri[1] === 'messages')) { $r = new Router; -$r->get('/', 'DragonKnight\index'); -$r->post('/move', 'DragonKnight\Actions\Explore::move'); -$r->get('/spell/:id', 'DragonKnight\Actions\Heal::healspells'); -$r->get('/character', 'DragonKnight\show_character_info'); -$r->get('/character/:id', 'DragonKnight\show_character_info'); -$r->get('/showmap', 'DragonKnight\show_map'); -$r->form('/babblebox', 'DragonKnight\babblebox'); -$r->get('/babblebox/messages', 'DragonKnight\babblebox_messages'); +$r->get('/', fn() => \DragonKnight\index()); +$r->post('/move', fn() => \DragonKnight\Actions\Explore::move()); +$r->get('/spell/:id', fn($id) => \DragonKnight\Actions\Heal::healspells($id)); +$r->get('/character', fn() => \DragonKnight\show_character_info()); +$r->get('/character/:id', fn($id) => \DragonKnight\show_character_info($id)); +$r->get('/showmap', fn() => \DragonKnight\show_map()); +$r->form('/babblebox', fn() => \DragonKnight\babblebox()); +$r->get('/babblebox/messages', fn() => \DragonKnight\babblebox_messages()); Towns::register_routes($r); Fight::register_routes($r); diff --git a/src/DragonKnight/Actions/Admin.php b/src/DragonKnight/Actions/Admin.php index 9468b34..876b1a0 100644 --- a/src/DragonKnight/Actions/Admin.php +++ b/src/DragonKnight/Actions/Admin.php @@ -11,7 +11,7 @@ declare(strict_types=1); * with this source code in the LICENSE.md file. */ -namespace DragonKnight\Admin; +namespace DragonKnight\Actions; use DragonKnight\Router; use SQLite3Result; @@ -36,32 +36,32 @@ class Admin public static function register_routes(Router $r): Router { if (user() !== false && user()->authlevel === 1) { - $r->get('/admin', 'Admin\donothing'); + $r->get('/admin', fn() => \DragonKnight\Actions\Admin::donothing()); - $r->form('/admin/main', 'Admin\primary'); + $r->form('/admin/main', fn() => \DragonKnight\Actions\Admin::primary()); - $r->get('/admin/items', 'Admin\items'); - $r->form('/admin/items/:id', 'Admin\edit_item'); + $r->get('/admin/items', fn() => \DragonKnight\Actions\Admin::items()); + $r->form('/admin/items/:id', fn($id) => \DragonKnight\Actions\Admin::edit_item($id)); - $r->get('/admin/drops', 'Admin\drops'); - $r->form('/admin/drops/:id', 'Admin\edit_drop'); + $r->get('/admin/drops', fn() => \DragonKnight\Actions\Admin::drops()); + $r->form('/admin/drops/:id', fn($id) => \DragonKnight\Actions\Admin::edit_drop($id)); - $r->get('/admin/towns', 'Admin\towns'); - $r->form('/admin/towns/:id', 'Admin\edit_town'); + $r->get('/admin/towns', fn() => \DragonKnight\Actions\Admin::towns()); + $r->form('/admin/towns/:id', fn($id) => \DragonKnight\Actions\Admin::edit_town($id)); - $r->get('/admin/monsters', 'Admin\monsters'); - $r->form('/admin/monsters/:id', 'Admin\edit_monster'); + $r->get('/admin/monsters', fn() => \DragonKnight\Actions\Admin::monsters()); + $r->form('/admin/monsters/:id', fn($id) => \DragonKnight\Actions\Admin::edit_monster($id)); - $r->get('/admin/levels', 'Admin\levels'); - $r->post('/admin/levels', 'Admin\edit_level'); + $r->get('/admin/levels', fn() => \DragonKnight\Actions\Admin::levels()); + $r->post('/admin/levels', fn() => \DragonKnight\Actions\Admin::edit_level()); - $r->get('/admin/spells', 'Admin\spells'); - $r->form('/admin/spells/:id', 'Admin\edit_spell'); + $r->get('/admin/spells', fn() => \DragonKnight\Actions\Admin::spells()); + $r->form('/admin/spells/:id', fn($id) => \DragonKnight\Actions\Admin::edit_spell($id)); - $r->get('/admin/users', 'Admin\users'); - $r->form('/admin/users/:id', 'Admin\edit_user'); + $r->get('/admin/users', fn() => \DragonKnight\Actions\Admin::users()); + $r->form('/admin/users/:id', fn($id) => \DragonKnight\Actions\Admin::edit_user($id)); - $r->form('/admin/news', 'Admin\add_news'); + $r->form('/admin/news', fn() => \DragonKnight\Actions\Admin::add_news()); } return $r; diff --git a/src/DragonKnight/Actions/Fight.php b/src/DragonKnight/Actions/Fight.php index 967c515..576c4df 100644 --- a/src/DragonKnight/Actions/Fight.php +++ b/src/DragonKnight/Actions/Fight.php @@ -28,10 +28,10 @@ class Fight { public static function register_routes(Router $r): Router { - $r->form('/fight', 'Fights\fight'); - $r->get('/victory', 'Fights\victory'); - $r->form('/drop', 'Fights\drop'); - $r->get('/dead', 'Fights\dead'); + $r->form('/fight', fn() => \DragonKnight\Actions\Fight::fight()); + $r->get('/victory', fn() => \DragonKnight\Actions\Fight::victory()); + $r->form('/drop', fn() => \DragonKnight\Actions\Fight::drop()); + $r->get('/dead', fn() => \DragonKnight\Actions\Fight::dead()); return $r; } diff --git a/src/DragonKnight/Actions/Forum.php b/src/DragonKnight/Actions/Forum.php index 564e9b0..f02850a 100644 --- a/src/DragonKnight/Actions/Forum.php +++ b/src/DragonKnight/Actions/Forum.php @@ -27,11 +27,11 @@ class Forum { public static function register_routes(Router $r): Router { - $r->get('/forum/thread/:x/:x', 'Forum\showthread'); - $r->form('/forum/new', 'Forum\newthread'); - $r->post('/forum/reply', 'Forum\reply'); - $r->get('/forum/list/:x', 'Forum\donothing'); - $r->get('/forum', 'Forum\donothing'); + $r->get('/forum/thread/:x/:x', fn($x, $y) => \DragonKnight\Actions\Forum::showthread($x, $y)); + $r->form('/forum/new', fn() => \DragonKnight\Actions\Forum::newthread()); + $r->post('/forum/reply', fn() => \DragonKnight\Actions\Forum::reply()); + $r->get('/forum/list/:x', fn($x) => \DragonKnight\Actions\Forum::donothing($x)); + $r->get('/forum', fn() => \DragonKnight\Actions\Forum::donothing()); return $r; } diff --git a/src/DragonKnight/Actions/Help.php b/src/DragonKnight/Actions/Help.php index d390e9e..7be11a6 100644 --- a/src/DragonKnight/Actions/Help.php +++ b/src/DragonKnight/Actions/Help.php @@ -24,11 +24,11 @@ class Help { public static function register_routes(Router $r): Router { - $r->get('/help', 'Help\main'); - $r->get('/help/items', 'Help\items'); - $r->get('/help/spells', 'Help\spells'); - $r->get('/help/monsters', 'Help\monsters'); - $r->get('/help/levels', 'Help\levels'); + $r->get('/help', fn() => \DragonKnight\Actions\Help::main()); + $r->get('/help/items', fn() => \DragonKnight\Actions\Help::items()); + $r->get('/help/spells', fn() => \DragonKnight\Actions\Help::spells()); + $r->get('/help/monsters', fn() => \DragonKnight\Actions\Help::monsters()); + $r->get('/help/levels', fn() => \DragonKnight\Actions\Help::levels()); return $r; } diff --git a/src/DragonKnight/Actions/Install.php b/src/DragonKnight/Actions/Install.php index 9c16653..87907c7 100644 --- a/src/DragonKnight/Actions/Install.php +++ b/src/DragonKnight/Actions/Install.php @@ -24,11 +24,11 @@ class Install public static function register_routes(Router $r): Router { if (! file_exists(getcwd().'/.installed')) { - $r->get('/install', 'Install\first'); - $r->get('/install/second', 'Install\second'); - $r->get('/install/third', 'Install\third'); - $r->post('/install/fourth', 'Install\fourth'); - $r->get('/install/fifth', 'Install\fifth'); + $r->get('/install', fn() => \DragonKnight\Actions\Install::first()); + $r->get('/install/second', fn() => \DragonKnight\Actions\Install::second()); + $r->get('/install/third', fn() => \DragonKnight\Actions\Install::third()); + $r->post('/install/fourth', fn() => \DragonKnight\Actions\Install::fourth()); + $r->get('/install/fifth', fn() => \DragonKnight\Actions\Install::fifth()); } return $r; diff --git a/src/DragonKnight/Actions/Towns.php b/src/DragonKnight/Actions/Towns.php index 7e9c676..0db0a90 100644 --- a/src/DragonKnight/Actions/Towns.php +++ b/src/DragonKnight/Actions/Towns.php @@ -31,13 +31,13 @@ class Towns { public static function register_routes(Router $r): Router { - $r->form('/inn', 'Towns\inn'); - $r->get('/shop', 'Towns\shop'); - $r->form('/buy/:id', 'Towns\buy'); + $r->form('/inn', fn() => \DragonKnight\Actions\Towns::inn()); + $r->get('/shop', fn() => \DragonKnight\Actions\Towns::shop()); + $r->form('/buy/:id', fn($id) => \DragonKnight\Actions\Towns::buy($id)); // $r->get('/sell', 'Towns\sell'); - $r->get('/maps', 'Towns\maps'); - $r->form('/maps/:id', 'Towns\buy_map'); - $r->get('/gotown/:id', 'Towns\travelto'); + $r->get('/maps', fn() => \DragonKnight\Actions\Towns::maps()); + $r->form('/maps/:id', fn($id) => \DragonKnight\Actions\Towns::buy_map($id)); + $r->get('/gotown/:id', fn($id) => \DragonKnight\Actions\Towns::travelto($id)); return $r; } diff --git a/src/DragonKnight/Actions/Users.php b/src/DragonKnight/Actions/Users.php index 9d90ab8..0df8ca5 100644 --- a/src/DragonKnight/Actions/Users.php +++ b/src/DragonKnight/Actions/Users.php @@ -31,13 +31,13 @@ class Users { public static function register_routes(Router $r): Router { - $r->form('/login', 'Users\login'); - $r->get('/logout', 'Users\logout'); - $r->form('/register', 'Users\register'); - $r->form('/lostpassword', 'Users\lostpassword'); - $r->post('/changepassword', 'Users\changepassword'); - $r->form('/verify', 'Users\verify'); - $r->form('/settings', 'Users\settings'); + $r->form('/login', fn() => \DragonKnight\Actions\Users::login()); + $r->get('/logout', fn() => \DragonKnight\Actions\Users::logout()); + $r->form('/register', fn() => \DragonKnight\Actions\Users::register()); + $r->form('/lostpassword', fn() => \DragonKnight\Actions\Users::lostpassword()); + $r->post('/changepassword', fn() => \DragonKnight\Actions\Users::changepassword()); + $r->form('/verify', fn() => \DragonKnight\Actions\Users::verify()); + $r->form('/settings', fn() => \DragonKnight\Actions\Users::settings()); return $r; }