v2.6.7 (Lyra): Essential plugins consistent tonen + docblock-vereiste
Vervolg op v2.6.6: vier plekken lazen nog ruwe enabled_plugins zonder essential-forcering. handleDashboard(), handleContentFiles/Edit() en AdminPluginAPI::getEnabledPlugins() forceren nu essential plugins consistent met PluginManager. Dode functie countEnabledPlugins() verwijderd. AGENTS.md aangevuld met verplichte docblock-sectie.
This commit is contained in:
@@ -141,13 +141,45 @@ class AdminPluginAPI implements PluginAPIInterface
|
||||
/**
|
||||
* Haal de lijst met ingeschakelde plugins op.
|
||||
*
|
||||
* Essential plugins (plugin.json `essential: true`) worden altijd
|
||||
* geretourneerd, ook als ze niet in config.enabled_plugins staan, en
|
||||
* komen consistent met de PluginManager op de eerste positie. Als de
|
||||
* PluginManager is geïnjecteerd wordt dien geautoriseerde lijst
|
||||
* gebruikt (single source of truth); anders valt de methode terug op
|
||||
* config.enabled_plugins aangevuld met een lokale essential-scan.
|
||||
*
|
||||
* @since 2.6.5
|
||||
*
|
||||
* @return array<int,string> Lijst met ingeschakelde plugin-namen.
|
||||
*/
|
||||
public function getEnabledPlugins(): array
|
||||
{
|
||||
return $this->config['enabled_plugins'] ?? [];
|
||||
if ($this->pluginManager !== null) {
|
||||
return $this->pluginManager->getEnabledPlugins();
|
||||
}
|
||||
$enabled = $this->config['enabled_plugins'] ?? [];
|
||||
if (!is_array($enabled)) {
|
||||
$enabled = [];
|
||||
}
|
||||
// Fallback: essential plugins forceren als de PluginManager niet
|
||||
// geïnjecteerd is (houdt de lijst consistent met loadPlugins()).
|
||||
$pluginsDir = $this->projectRoot . '/plugins';
|
||||
if (is_dir($pluginsDir)) {
|
||||
foreach (glob($pluginsDir . '/*', GLOB_ONLYDIR) as $pluginDir) {
|
||||
$pluginName = basename($pluginDir);
|
||||
$pluginJsonFile = $pluginDir . '/plugin.json';
|
||||
if (!file_exists($pluginJsonFile)) {
|
||||
continue;
|
||||
}
|
||||
$data = json_decode(file_get_contents($pluginJsonFile), true);
|
||||
if (is_array($data) && ($data['essential'] ?? false) === true
|
||||
&& !in_array($pluginName, $enabled, true)
|
||||
) {
|
||||
$enabled[] = $pluginName;
|
||||
}
|
||||
}
|
||||
}
|
||||
return array_values($enabled);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user