diff --git a/src/Core/Router/RouteLoader.php b/src/Core/Router/RouteLoader.php index 3538fe6429..563811ee97 100644 --- a/src/Core/Router/RouteLoader.php +++ b/src/Core/Router/RouteLoader.php @@ -56,9 +56,20 @@ class RouteLoader extends Loader $this->rc = new RouteCollection(); $route_files = glob(INSTALLDIR . '/src/Routes/*.php'); + $to_load = []; foreach ($route_files as $file) { require_once $file; $ns = '\\App\\Routes\\' . basename($file, '.php'); + if (defined("{$ns}::LOAD_ORDER")) { + $to_load[$ns::LOAD_ORDER] = $ns; + } else { + $to_load[] = $ns; + } + } + + ksort($to_load); + + foreach ($to_load as $ns) { $ns::load($this); } diff --git a/src/Routes/Attachments.php b/src/Routes/Attachments.php index 8782a32c78..3004263195 100644 --- a/src/Routes/Attachments.php +++ b/src/Routes/Attachments.php @@ -38,6 +38,8 @@ use App\Core\Router\RouteLoader; abstract class Attachments { + const LOAD_ORDER = 20; + public static function load(RouteLoader $r): void { $r->connect('attachment_show', '/attachment/{id<\d+>}', [C\Attachment::class, 'attachment_show']); diff --git a/src/Routes/GSActor.php b/src/Routes/GSActor.php index d956ce4ccb..3474b38a91 100644 --- a/src/Routes/GSActor.php +++ b/src/Routes/GSActor.php @@ -39,6 +39,7 @@ use App\Util\Nickname; abstract class GSActor { + const LOAD_ORDER = 30; public static function load(RouteLoader $r): void { $r->connect(id: 'gsactor_view_id', uri_path: '/actor/{id<\d+>}', target: [C\GSActor::class, 'GSActorShowId']); diff --git a/src/Routes/Main.php b/src/Routes/Main.php index 3d1da65fd7..a9a387ba81 100644 --- a/src/Routes/Main.php +++ b/src/Routes/Main.php @@ -40,6 +40,8 @@ use Symfony\Bundle\FrameworkBundle\Controller\RedirectController; abstract class Main { + const LOAD_ORDER = 10; + public static function load(RouteLoader $r): void { $r->connect('login', '/login', [C\Security::class, 'login']); diff --git a/src/Routes/Note.php b/src/Routes/Note.php index ebf86f78cd..36623c378b 100644 --- a/src/Routes/Note.php +++ b/src/Routes/Note.php @@ -38,6 +38,7 @@ use App\Core\Router\RouteLoader; abstract class Note { + const LOAD_ORDER = 40; public static function load(RouteLoader $r): void { $r->connect('note_view', '/note/{id<\d+>}', [C\Note::class, 'NoteShow']);