From 72f89c0209a5c4bbdc5482ecbdc2435dcd57550f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ng=C3=B4=20Qu=E1=BB=91c=20=C4=90=E1=BA=A1t?= Date: Sun, 19 May 2024 00:14:04 +0700 Subject: [PATCH] fix: setting key `safe_mode_extensions` not exists (#3992) --- framework/core/src/Admin/WhenSavingSettings.php | 14 +++++++++----- framework/core/src/Foundation/Config.php | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/framework/core/src/Admin/WhenSavingSettings.php b/framework/core/src/Admin/WhenSavingSettings.php index 4053d0f44..0eda046a9 100644 --- a/framework/core/src/Admin/WhenSavingSettings.php +++ b/framework/core/src/Admin/WhenSavingSettings.php @@ -36,14 +36,18 @@ class WhenSavingSettings { if (array_key_exists('safe_mode_extensions', $event->settings)) { $safeModeExtensions = json_decode($event->settings['safe_mode_extensions'] ?? '[]', true); + $sorted = []; - $extensions = $this->extensions->getExtensions()->filter(function ($extension) use ($safeModeExtensions) { - return in_array($extension->getId(), $safeModeExtensions); - }); + if ($safeModeExtensions) { + $extensions = $this->extensions->getExtensions()->filter(function ($extension) use ($safeModeExtensions) { + return in_array($extension->getId(), $safeModeExtensions); + }); - $sorted = array_map(fn (Extension $e) => $e->getId(), $this->extensions->sortDependencies($extensions->all())); + $sorted = array_map(fn (Extension $e) => $e->getId(), $this->extensions->sortDependencies($extensions->all())); + $sorted = array_values($sorted); + } - $event->settings['safe_mode_extensions'] = json_encode(array_values($sorted)); + $event->settings['safe_mode_extensions'] = json_encode($sorted); } } diff --git a/framework/core/src/Foundation/Config.php b/framework/core/src/Foundation/Config.php index c2924414a..4d5efd4a3 100644 --- a/framework/core/src/Foundation/Config.php +++ b/framework/core/src/Foundation/Config.php @@ -65,7 +65,7 @@ class Config implements ArrayAccess public function safeModeExtensions(): ?array { - return $this->data['safe_mode_extensions']; + return $this->data['safe_mode_extensions'] ?? null; } private function requireKeys(mixed ...$keys): void