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.
4.0 KiB
v2.6.7 (Lyra) — Essential plugins consistent tonen + docblock-vereiste
Releasedatum: 2026-08-27 Codename: Lyra Status: stable
Samenvatting
Vervolg op v2.6.6 (essential plugins altijd laden). In v2.6.6 forcerde
alleen PluginManager::loadPlugins() het laden van essential plugins —
maar vier andere plekken in de code lazen nog de ruwe
config.enabled_plugins zonder essential-forcering, waardoor
essential/protected plugins (Dashboard, Navigation) op diverse plekken
als "Inactief" of onzichtbaar toonden, ondanks dat ze effectief draaiden.
Deze release maakt alle plekken die plugin-status bepalen consistent met
PluginManager. Daarnaast is de docblock-vereiste formeel vastgelegd in
AGENTS.md.
Wijzigingen
cms/core/plugin/AdminPluginAPI.php
getEnabledPlugins()bevraagt nu de geïnjecteerde PluginManager (single source of truth) wanneer aanwezig. Fallback (zonder PluginManager) doet zelf een essential-scan over de plugins-directory, consistent metPluginManager::loadPlugins(). Essential plugins worden altijd geretourneerd, ook als ze niet inconfig.enabled_pluginsstaan.
public/admin.php
handleDashboard()(plugin-overzicht op/admin/dashboard):enabledwordttruevoor protected/essential plugins viaisProtectedPlugin(). Eerder toonde het dashboard essential plugins als inactief als ze uitenabled_pluginsraakten.handleContentFiles()enhandleContentEdit()(content-editor plugin-multiselect): essential/protected content-plugins worden altijd getoond in de selector (viaisProtectedPlugin()). Eerder ontbrakNavigationuit de keuzelijst als die niet inenabled_pluginsstond, terwijl hij effectief draaide.- Dode functie
countEnabledPlugins()verwijderd (nergens aangeroepen).
AGENTS.md
- Nieuwe sectie
Docblocks (verplicht): elke plugin, theme, class, method en function (ook private/protected) krijgt een WordPress-stijl docblock. Bevat het vereiste formaat met@since,@param,@returnen de{ @type }array-structuur. Controle bij elke verandering.
Consistentie-check (alle 17 plekken)
Alle plekken die plugin-status bepalen zijn gecontroleerd. Na v2.6.7 leest
geen enkele plek meer de ruwe enabled_plugins zonder essential-forcering:
| Plek | Voor v2.6.7 | Na v2.6.7 |
|---|---|---|
PluginManager::loadPlugins() |
✅ v2.6.6 | ✅ |
PluginManager::isEnabled() |
✅ | ✅ |
CodePressCMS (front-end) |
✅ (via PM) | ✅ |
handleDashboard() admin.php:670 |
❌ ruw | ✅ geforceerd |
handleContentFiles() admin.php:1272 |
❌ ruw | ✅ geforceerd |
handleContentEdit() admin.php:1973 |
❌ ruw | ✅ geforceerd |
handlePlugins() admin.php:3827 |
✅ v2.6.6 | ✅ |
handlePluginsToggle() admin.php:5252 |
✅ v2.6.6 | ✅ |
AdminPluginAPI::getEnabledPlugins() |
❌ ruw | ✅ via PM |
Dashboard.php (plugin) |
via API | ✅ via gefixte API |
| guide-sidebar (admin.php:5650) | ✅ direct require | ✅ |
config.php default |
✅ bevat Navigation | ✅ |
countEnabledPlugins() |
dode code | verwijderd |
Tests uitgevoerd
php -lover alle PHP-bestanden (zonder vendor): 0 syntax-errors.- Functionele tests (
cli/test/functional/run-tests.shtegen Apache): 16/16 PASS (100%). - Pentest (
cli/test/pentest/pentest.sh): 29/29 SAFE, 0 vulnerabilities. - Accessibility / WCAG 2.1 AA (
cli/test/accessibility.sh): 25/25 PASS. - Runtime-check
AdminPluginAPI::getEnabledPlugins()met legeenabled_plugins: retourneertDashboard+Navigation(zowel via PM als via fallback). - Runtime-check
handleDashboard()simulatie met legeenabled_plugins:Dashboard+Navigationtonenenabled=true. - Runtime-check content-editor selector met lege
enabled_plugins:Navigationzichtbaar (essential content-plugin).
Upgrade-instructies
- Pull de nieuwe versie.
- Geen verdere actie nodig — alle plekken tonen essential plugins nu
consistent als actief, ongeacht de staat van
enabled_pluginsinconfig.json.