From a4280a6fba9937d9adab40c80e769e6df751b31e Mon Sep 17 00:00:00 2001 From: IceToast Date: Wed, 3 May 2023 15:17:13 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Path=20seperator=20replac?= =?UTF-8?q?ement=20->=20be=20filesystem=20aware?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Helpers/ExtensionHelper.php | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/app/Helpers/ExtensionHelper.php b/app/Helpers/ExtensionHelper.php index 6b59c1e4..117e54e3 100644 --- a/app/Helpers/ExtensionHelper.php +++ b/app/Helpers/ExtensionHelper.php @@ -18,8 +18,9 @@ class ExtensionHelper foreach ($extensionNamespaces as $extensionNamespace) { $extensions = array_merge($extensions, glob($extensionNamespace . '/*', GLOB_ONLYDIR)); } + // remove base path from every extension but keep app/Extensions/... - $extensions = array_map(fn ($item) => str_replace('/', '\\', str_replace(app_path() . '/', 'App/', $item)), $extensions); + $extensions = array_map(fn ($item) => str_replace(app_path() . '/', 'App/', $item), $extensions); return $extensions; } @@ -33,7 +34,7 @@ class ExtensionHelper { $extensions = glob(app_path() . '/Extensions/' . $namespace . '/*', GLOB_ONLYDIR); // remove base path from every extension but keep app/Extensions/... - $extensions = array_map(fn ($item) => str_replace('/', '\\', str_replace(app_path() . '/', 'App/', $item)), $extensions); + $extensions = array_map(fn ($item) => str_replace(app_path() . '/', 'App/', $item), $extensions); return $extensions; } @@ -60,6 +61,9 @@ class ExtensionHelper public static function getAllExtensionClasses() { $extensions = self::getAllExtensions(); + + // replace all slashes with backslashes + $extensions = array_map(fn ($item) => str_replace('/', '\\', $item), $extensions); // add the ExtensionClass to the end of the namespace $extensions = array_map(fn ($item) => $item . '\\' . basename($item) . 'Extension', $extensions); // filter out non existing extension classes @@ -76,6 +80,9 @@ class ExtensionHelper public static function getAllExtensionClassesByNamespace(string $namespace) { $extensions = self::getAllExtensionsByNamespace($namespace); + + // replace all slashes with backslashes + $extensions = array_map(fn ($item) => str_replace('/', '\\', $item), $extensions); // add the ExtensionClass to the end of the namespace $extensions = array_map(fn ($item) => $item . '\\' . basename($item) . 'Extension', $extensions); // filter out non existing extension classes @@ -177,10 +184,13 @@ class ExtensionHelper { $extensions = self::getAllExtensions(); + $settings = []; foreach ($extensions as $extension) { - $extensionName = basename($extension); + + // replace all slashes with backslashes + $extension = str_replace('/', '\\', $extension); $settingsClass = $extension . '\\' . $extensionName . 'Settings'; if (class_exists($settingsClass)) { $settings[] = $settingsClass; @@ -193,6 +203,9 @@ class ExtensionHelper public static function getExtensionSettings(string $extensionName) { $extension = self::getExtension($extensionName); + // replace all slashes with backslashes + $extension = str_replace('/', '\\', $extension); + $settingClass = $extension . '\\' . $extensionName . 'Settings'; if (class_exists($settingClass)) { @@ -207,6 +220,6 @@ class ExtensionHelper */ private static function extensionNameToPath(string $extensionName) { - return app_path() . '/' . str_replace('\\', '/', str_replace('App\\', '', $extensionName)); + return app_path() . '/' . str_replace('App/', '', $extensionName); } }