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
+9 -19
View File
@@ -666,13 +666,15 @@ function handleDashboard($auth, $config, $twig, $user, $csrf, $siteConfig): void
];
// Build plugin overview (name => enabled status)
// Essential/protected plugins worden altijd als actief getoond,
// ongeacht enabled_plugins (consistent met PluginManager::loadPlugins()).
$pluginOverview = [];
$enabledPlugins = $siteConfig['enabled_plugins'] ?? [];
if (is_dir($pluginsDir)) {
foreach (glob($pluginsDir . '/*', GLOB_ONLYDIR) as $pluginDir) {
$pluginName = basename($pluginDir);
$pluginOverview[$pluginName] = [
'enabled' => in_array($pluginName, $enabledPlugins, true),
'enabled' => in_array($pluginName, $enabledPlugins, true) || isProtectedPlugin($pluginName),
];
}
}
@@ -1264,10 +1266,12 @@ function handleContentFiles($auth, $config, $twig, $user, $csrf, $siteConfig): v
$contentPlugins = getContentPlugins($pluginsDir);
// Keep only enabled plugins so the selector reflects what actually runs.
// enabled_plugins lives in config.json ($siteConfig), not in app.php.
// Essential/protected plugins worden altijd getoond (consistent met
// PluginManager::loadPlugins() en handlePlugins()).
$enabledPlugins = $siteConfig['enabled_plugins'] ?? [];
$availablePlugins = [];
foreach ($contentPlugins as $p) {
if (in_array($p['name'], $enabledPlugins, true)) {
if (in_array($p['name'], $enabledPlugins, true) || isProtectedPlugin($p['name'])) {
$availablePlugins[] = $p;
}
}
@@ -1963,12 +1967,14 @@ function handleContentEdit($auth, $config, $twig, $user, $csrf, $siteConfig): vo
// Get available content plugins (only enabled content-type plugins).
// enabled_plugins lives in config.json ($siteConfig), not in app.php.
// Essential/protected plugins worden altijd getoond (consistent met
// PluginManager::loadPlugins() en handlePlugins()).
$pluginsDir = $config['plugins_dir'];
$contentPlugins = getContentPlugins($pluginsDir);
$enabledPlugins = $siteConfig['enabled_plugins'] ?? [];
$availablePlugins = [];
foreach ($contentPlugins as $p) {
if (in_array($p['name'], $enabledPlugins, true)) {
if (in_array($p['name'], $enabledPlugins, true) || isProtectedPlugin($p['name'])) {
$availablePlugins[] = $p;
}
}
@@ -5938,22 +5944,6 @@ function countDirs(string $dir): int
return $count;
}
/**
* Telt het aantal ingeschakelde plugins in de site-config.
*
* @since 2.6.5
*
* @param string $pluginsDir Plugins-directory (ongebruikt, voor compatibiliteit).
* @param string $configJson Pad naar config.json.
* @return int Aantal ingeschakelde plugins.
*/
function countEnabledPlugins(string $pluginsDir, string $configJson): int
{
$config = file_exists($configJson) ? json_decode(file_get_contents($configJson), true) : [];
$enabled = $config['enabled_plugins'] ?? [];
return count($enabled);
}
/**
* Berekent recursief de totale bestandsgrootte (in bytes) van een directory.
*