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:
2026-08-27 20:13:20 +00:00
parent f7e8837a1c
commit d039114f21
5 changed files with 139 additions and 21 deletions
+33 -1
View File
@@ -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);
}
/**