From 31d8eafcb6eb284d71273b576642d9e45be6d137 Mon Sep 17 00:00:00 2001 From: "Joseph.Rawlings" Date: Wed, 3 Dec 2025 19:16:15 -0500 Subject: [PATCH] feat: add migration handling for navbar_links table in NavbarManager to ensure navigation links are available and prevent errors --- .../Others/NavbarManager/NavbarManager.php | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/extensions/Others/NavbarManager/NavbarManager.php b/extensions/Others/NavbarManager/NavbarManager.php index 43e7e2539..38889e4dc 100644 --- a/extensions/Others/NavbarManager/NavbarManager.php +++ b/extensions/Others/NavbarManager/NavbarManager.php @@ -11,6 +11,7 @@ use Paymenter\Extensions\Others\NavbarManager\Models\NavbarLink; class NavbarManager extends Extension { + private static bool $migrationAttempted = false; public function getConfig($values = []) { try { @@ -74,6 +75,30 @@ class NavbarManager extends Extension private function getNavigationLinks($type) { try { + if (!\Schema::hasTable('navbar_links')) { + if (!self::$migrationAttempted) { + self::$migrationAttempted = true; + try { + Artisan::call('migrate', [ + '--path' => 'extensions/Others/NavbarManager/database/migrations', + '--force' => true, + ]); + } catch (\Exception $migrationException) { + \Log::error('NavbarManager: Failed to run migrations', [ + 'error' => $migrationException->getMessage(), + ]); + } + } + + // Table still missing, skip navigation injection to prevent 500s + if (!\Schema::hasTable('navbar_links')) { + \Log::warning('NavbarManager: navbar_links table missing. Skipping navigation injection.', [ + 'type' => $type, + ]); + return []; + } + } + $links = NavbarLink::where('type', $type) ->where('is_active', true) ->whereNull('parent_id') // Only get top-level links