fix flag internet mode

This commit is contained in:
test
2026-09-04 13:59:59 +02:00
parent 15713e70a4
commit 2fcaa1e2ff
4 changed files with 44 additions and 0 deletions
+6
View File
@@ -2,6 +2,12 @@
## Ultima modifica: 02/09/2026
## 02/09/2026 — Fix: Internet mode switch mostra sempre disabilitato dopo il toggle (cache 30s non invalidata)
- **Sintomo**: nel tab Computer → Azioni, togliendo/attivando "Internet mode" il form fa POST, la pagina ricarica tornando su "Stato client", e riaprendo "Azioni" lo switch risulta ancora nello stato precedente.
- **Analisi (causa radice)**: la chiamata API `saveInternetMode()` funziona correttamente (verificato empiricamente su localhost:55414: `clientsettings_save` con `t_clientid`+`overwrite=true`+`internet_mode_enabled` toggla e rilegge bene `internet_mode_enabled=true/false`). Anche il parsing PHP del campo duplicato `internet_mode` è corretto (hidden 0 + checkbox 1 → PHP tiene l'ULTIMO valore = 1 in enable). **Il vero bug** è la **session cache 30s** `urbackup_data_{serverid}_{itemtype}_{itemsid}` in `AssetTab::loadApiData()` (AssetTab.php:374-377) che NON veniva invalidata dopo alcuna azione mutante: dopo il redirect il tab mostrava i dati cached (stato vecchio) per max 30s.
- **Fix**: nuovo `AssetTab::clearApiCache(CommonDBTM $item)` (AssetTab.php, ricalcola la stessa cache_key e fa `unset($_SESSION[$cache_key])`); chiamato da `front/asset.form.php` prima di ogni azione mutante (backup incr/full file/image, create/delete client, set_internet_mode, set_default_dirs). Così dopo il redirect `loadApiData()` ri-fetches dati freschi e lo switch riflette lo stato reale del server.
- Nessun bump versione (solo fix UI/comportamento, nessuna modifica DB, regola 6). Lint `php -l` OK. **Verifica UI utente OBBLIGATORIA**: attivare/disattivare Internet mode e confermare che lo switch resti nello stato scelto dopo il ricaricamento (anche subito, senza attendere).
## 02/09/2026 — Pulizia capacity all'uninstall (nessun bump versione)
- **`install/uninstall.php`**: nuova `plugin_urbackup_uninstall_cleanup_capacities(Migration, DBmysql)` — rimuove il riferimento `GlpiPlugin\Urbackup\Capacity\UrBackupCapacity` dalla colonna JSON `capacities` di `glpi_assetdefinitions` (query builder `$DB->request()/update()`, idempotente, filtrata sulle righe con `capacities <> '[]'`). Invocata in `plugin_urbackup_uninstall_process()` con `global $DB`.
- Motivo: altrimenti resta una reference orfana dopo la disinstallazione. Il core GLPI la ignora in sicurezza (`AssetDefinition::decodeCapacities()`/`AssetDefinition.php:698-701`, "May be a previously enabled capacity from a disabled plugin"), ma ora il DB resta pulito.