tableExists($table)) { return; } foreach ($db->request(['FROM' => $table, 'WHERE' => ['capacities' => ['<>' => '[]']]]) as $row) { $decoded = json_decode((string) $row['capacities'], true); if (!is_array($decoded)) { continue; } $filtered = array_values(array_filter($decoded, static function ($spec) use ($capacity_class): bool { return is_array($spec) && (string) ($spec['name'] ?? '') !== $capacity_class; })); if (count($filtered) === count($decoded)) { continue; } $db->update($table, [ 'capacities' => json_encode($filtered), ], ['id' => (int) $row['id']]); } $migration->displayMessage(__('UrBackup capacity removed from asset definitions', 'urbackup')); } /** * Uninstall plugin. * * @return bool */ function plugin_urbackup_uninstall_process(): bool { $migration = new Migration(PLUGIN_URBACKUP_VERSION); $migration->displayMessage(__('UrBackup plugin uninstallation', 'urbackup')); Profile::uninstallRights(); global $DB; plugin_urbackup_uninstall_cleanup_capacities($migration, $DB); plugin_urbackup_migration_drop_table($migration, 'glpi_plugin_urbackup_profiles'); plugin_urbackup_migration_drop_table($migration, 'glpi_plugin_urbackup_serverassets'); plugin_urbackup_migration_drop_table($migration, 'glpi_plugin_urbackup_servers'); plugin_urbackup_migration_drop_table($migration, 'glpi_plugin_urbackup_assettypes'); plugin_urbackup_migration_drop_table($migration, 'glpi_plugin_urbackup_configs'); $migration->executeMigration(); return true; }