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.
88 lines
4.0 KiB
Markdown
88 lines
4.0 KiB
Markdown
# 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 met
|
|
`PluginManager::loadPlugins()`. Essential plugins worden altijd
|
|
geretourneerd, ook als ze niet in `config.enabled_plugins` staan.
|
|
|
|
### `public/admin.php`
|
|
- `handleDashboard()` (plugin-overzicht op `/admin/dashboard`): `enabled`
|
|
wordt `true` voor protected/essential plugins via `isProtectedPlugin()`.
|
|
Eerder toonde het dashboard essential plugins als inactief als ze uit
|
|
`enabled_plugins` raakten.
|
|
- `handleContentFiles()` en `handleContentEdit()` (content-editor
|
|
plugin-multiselect): essential/protected content-plugins worden altijd
|
|
getoond in de selector (via `isProtectedPlugin()`). Eerder ontbrak
|
|
`Navigation` uit de keuzelijst als die niet in `enabled_plugins` stond,
|
|
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`, `@return` en 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 -l` over alle PHP-bestanden (zonder vendor): 0 syntax-errors.
|
|
- Functionele tests (`cli/test/functional/run-tests.sh` tegen 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 lege
|
|
`enabled_plugins`: retourneert `Dashboard`+`Navigation` (zowel via PM
|
|
als via fallback).
|
|
- Runtime-check `handleDashboard()` simulatie met lege
|
|
`enabled_plugins`: `Dashboard`+`Navigation` tonen `enabled=true`.
|
|
- Runtime-check content-editor selector met lege `enabled_plugins`:
|
|
`Navigation` zichtbaar (essential content-plugin).
|
|
|
|
## Upgrade-instructies
|
|
|
|
1. Pull de nieuwe versie.
|
|
2. Geen verdere actie nodig — alle plekken tonen essential plugins nu
|
|
consistent als actief, ongeacht de staat van `enabled_plugins` in
|
|
`config.json`. |