• v1.6.27 733b1db1a4

    emitlinks released this 2026-10-26 20:50:16 +00:00 | 26 commits to main since this release

    AirWatch Sync 1.6.27

    1.6.27 — synchronisation OS/matériel/réseau, menus de statuts fiables, nom écrit dès la 1re synchro

    Synchronisation de l'OS, du matériel et du réseau

    • Nouveau(s) interrupteur(s) par profil (section « Synchronisation ») : OS, matériel,
      réseau, chacun avec un maître + par type d'appareil (smartphones / tablettes /
      ordinateurs). Colonne de configuration correspondante (migration automatique).
    • OS : Android, Apple iOS, Windows, Apple macOS écrits dans
      glpi_items_operatingsystems (version + architecture). Builds Windows résolus
      (10.0.22621 → 11 22H2, builds inconnus laissés tels quels).
    • Matériel : RAM (Mo), processeur + nombre de cœurs, stockage (Mo) écrits via le
      modèle device GLPI 11 (glpi_items_devicememories / glpi_items_deviceprocessors
      / glpi_items_deviceharddrives), une seule ligne par asset (mise à jour).
    • Réseau : adresse MAC → glpi_networkports (un port par asset, mis à jour) et
      adresse IP → glpi_ipaddresses liée au port. Anciens ports/IP orphelins nettoyés.
    • Jamais d'écriture sur un asset géré par l'agent d'inventaire GLPI ; jamais de
      Phone → Computer ; types de port respectent networkport_types de l'instance.
    • Résumé de synchro : compteurs os_written, hw_synced, net_synced.

    Menus déroulants « Statut → état GLPI » : plus de statuts fantômes

    • Les menus (correspondance statuts + état par défaut du profil) ne listent que les
      états réellement présents dans glpi_states de l'instance.
    • Une cible sauvegardée qui n'existe plus est signalée inline (« cet état n'existe
      plus, il ne sera pas appliqué ») et ignorée par la synchro, sans perte du reste de
      la correspondance.

    Nom d'appareil : écrit dès la 1re synchro

    • Le nom AirWatch recomposé (modèle des champs nom) est écrit dans GLPI pendant le
      même run que la création/mise à jour de l'appareil, au lieu d'attendre la synchro
      suivante ; le dry-run reflète également le nom qui serait écrit.

    Compatibilité GLPI 11

    • DBmysql::insert() retourne désormais true : id récupéré via insertId()
      (8 usages corrigés : ports réseau, RAM/CPU/disque, manufactories, logiciels).
    • DBmysqlIterator::next() est désormais void : itération en foreach
      (nettoyage des anciens ports réseau).

    Divers

    • Mock AirWatch complété : MacAddress, IPAddress, TotalPhysicalMemory,
      ProcessorArchitecture sur les 8 appareils de démonstration.
    • Tests offline : 57 assertions (tests/os_test.php) + tests de correspondance v0.

    Installation

    • Dézipper dans glpi/plugins/, puis activer/mettre à jour le plugin depuis
      Administration → Plugins. La migration ajoute les colonnes os_sync_enabled,
      hw_sync_enabled, net_sync_enabled (valeur par défaut 1 = activé) aux profils
      existants.
    Downloads