feat: autoload settings.php

This commit is contained in:
slawkens 2025-05-23 08:39:09 +02:00
parent 1e9b10d648
commit e574943707
2 changed files with 31 additions and 4 deletions

View File

@ -346,6 +346,25 @@ class Plugins {
}
$settings = [];
foreach (self::getAllPluginsJson() as $plugin) {
if (!self::getAutoLoadOption($plugin, 'settings', true)) {
continue;
}
$settingsFileName = PLUGINS . $plugin['filename'] . '/settings.php';
if (!is_file($settingsFileName)) {
continue;
}
$settingsFile = require $settingsFileName;
if (!isset($settingsFile['key'])) {
warning("Settings file for plugin - {$plugin['name']} does not contain 'key' field");
continue;
}
$settings[$settingsFile['key']] = ['pluginFilename' => $plugin['filename'], 'settingsFilename' => 'plugins/' . $plugin['filename'] . '/settings.php'];
}
foreach (self::getAllPluginsJson() as $plugin) {
if (isset($plugin['settings'])) {
$settingsFile = require BASE . $plugin['settings'];
@ -401,9 +420,15 @@ class Plugins {
return false;
}
if (!isset($plugin_json['settings']) || !file_exists(BASE . $plugin_json['settings'])) {
$settingsFileName = PLUGINS . $plugin_json['filename'] . '/settings.php';
if (!is_file($settingsFileName)) {
if (!isset($plugin_json['settings']) || !is_file(BASE . $plugin_json['settings'])) {
return false;
}
}
else {
return 'plugins/' . $plugin_json['filename'] . '/settings.php';
}
return $plugin_json['settings'];
}
@ -432,6 +457,8 @@ class Plugins {
return false;
}
$plugin_json['filename'] = $filename;
return $plugin_json;
}

View File

@ -560,8 +560,8 @@ class Settings implements \ArrayAccess
$settingsFilePath = BASE . $settings[$pluginKeyName]['settingsFilename'];
}
if (!file_exists($settingsFilePath)) {
throw new \RuntimeException('Failed to load settings file for plugin: ' . $pluginKeyName);
if (!is_file($settingsFilePath)) {
throw new \RuntimeException('Failed to load settings file for plugin: ' . $pluginKeyName . ' (Tried: ' . $settingsFilePath . ')');
}
$this->settingsFile[$pluginKeyName] = require $settingsFilePath;