refactor: ♻️ Use reflection to get all extensionsettings
This commit is contained in:
parent
7701671c7e
commit
5f422e1b83
|
@ -65,6 +65,16 @@ class ExtensionHelper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getExtension(string $extensionName)
|
||||||
|
{
|
||||||
|
$extensions = self::getAllExtensions();
|
||||||
|
// filter the extensions by the extension name
|
||||||
|
$extensions = array_filter($extensions, fn ($item) => basename($item) == $extensionName);
|
||||||
|
|
||||||
|
// return the only extension
|
||||||
|
return array_shift($extensions);
|
||||||
|
}
|
||||||
|
|
||||||
public static function getAllCsrfIgnoredRoutes()
|
public static function getAllCsrfIgnoredRoutes()
|
||||||
{
|
{
|
||||||
$extensions = self::getAllExtensionClasses();
|
$extensions = self::getAllExtensionClasses();
|
||||||
|
@ -78,7 +88,6 @@ class ExtensionHelper
|
||||||
$routes = array_merge($routes, $config['RoutesIgnoreCsrf']);
|
$routes = array_merge($routes, $config['RoutesIgnoreCsrf']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// map over the routes and add the extension name as prefix
|
// map over the routes and add the extension name as prefix
|
||||||
$result = array_map(fn ($item) => "extensions/{$item}", $routes);
|
$result = array_map(fn ($item) => "extensions/{$item}", $routes);
|
||||||
|
|
||||||
|
@ -139,15 +148,9 @@ class ExtensionHelper
|
||||||
foreach ($extensions as $extension) {
|
foreach ($extensions as $extension) {
|
||||||
|
|
||||||
$extensionName = basename($extension);
|
$extensionName = basename($extension);
|
||||||
$settingFile = $extension . '/' . $extensionName . 'Settings.php';
|
$settingsClass = $extension . '\\' . $extensionName . 'Settings';
|
||||||
if (file_exists($settingFile)) {
|
if (class_exists($settingsClass)) {
|
||||||
// remove the base path from the setting file path to get the namespace
|
$settings[] = $settingsClass;
|
||||||
|
|
||||||
$settingFile = str_replace(app_path() . '/', '', $settingFile);
|
|
||||||
$settingFile = str_replace('.php', '', $settingFile);
|
|
||||||
$settingFile = str_replace('/', '\\', $settingFile);
|
|
||||||
$settingFile = 'App\\' . $settingFile;
|
|
||||||
$settings[] = $settingFile;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,18 +159,13 @@ class ExtensionHelper
|
||||||
|
|
||||||
public static function getExtensionSettings(string $extensionName)
|
public static function getExtensionSettings(string $extensionName)
|
||||||
{
|
{
|
||||||
$extensions = self::getAllExtensions();
|
$extension = self::getExtension($extensionName);
|
||||||
|
|
||||||
foreach ($extensions as $extension) {
|
$settingClass = $extension . '/' . $extensionName . 'Settings';
|
||||||
if (!(basename($extension) == $extensionName)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$extensionName = basename($extension);
|
|
||||||
$settingFile = $extension . '\\' . $extensionName . 'Settings';
|
if (class_exists($settingClass)) {
|
||||||
if (class_exists($settingFile)) {
|
return new $settingClass();
|
||||||
return new $settingFile();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue