# CHAPITRE 27 — Mise à jour du module

Les mises à jour du module s'effectuent sans interruption visible côté visiteurs. Ce chapitre présente la procédure standard et les précautions à observer.

### <span style="color: rgb(35, 111, 161);">Avant la mise à jour — liste de contrôle</span>

**Sur une instance de production, ne sautez jamais ces étapes :**

- Sauvegarde complète de la base Dolibarr (mysqldump).
- <span style="white-space: pre-wrap;">Sauvegarde du dossier </span>`<span class="editor-theme-code">htdocs/custom/infrasstudio/</span>`<span style="white-space: pre-wrap;"> existant.</span>
- <span style="white-space: pre-wrap;">Sauvegarde des données : </span>`<span class="editor-theme-code">DOL_DATA_ROOT/<entity>/website/</span>`<span style="white-space: pre-wrap;"> et </span>`<span class="editor-theme-code">medias/</span>`.
- Lecture du changelog de la nouvelle version pour repérer d'éventuelles modifications majeures.
- Test de la mise à jour sur une instance de pré-production lorsque c'est possible.

### <span style="color: rgb(35, 111, 161);">Procédure standard</span>

##### **Étape 1 — Désactiver le module**

<span style="white-space: pre-wrap;">Configuration → Modules → InfraSStudio → cliquer sur </span>**Désactiver**.

**Effet de la désactivation —**<span style="white-space: pre-wrap;"> Les constantes du module sont sauvegardées sous le préfixe </span>`<span class="editor-theme-code">INFRASSTUDIOBKP_</span>`. Les tables et leurs données restent intactes. L'entrée Outils → InfraS disparaît.

##### **Étape 2 — Remplacer les fichiers**

Trois méthodes selon votre environnement :

**Via l'interface Dolibarr**

1. <span style="white-space: pre-wrap;">Configuration → Modules → bouton </span>**« Déployer / installer un module »**.
2. <span style="white-space: pre-wrap;">Sélectionner la nouvelle archive </span>`<span class="editor-theme-code">module_infrasstudio-X.Y.Z.zip</span>`.
3. Confirmer le remplacement.

**Via SSH ou FTP**

```
cd /var/www/dolibarr/htdocs/custom/
mv infrasstudio infrasstudio.old.20260504
unzip /tmp/module_infrasstudio-1.9.0.zip
chown -R www-data:www-data infrasstudio/
```

**Via Git**

```
cd /var/www/dolibarr/htdocs/custom/infrasstudio
git fetch --tags
git checkout v1.9.0
```

##### **Étape 3 — Réactiver le module**

1. <span style="white-space: pre-wrap;">Configuration → Modules → InfraSStudio → cliquer sur </span>**Activer**.
2. Le module exécute alors :
    - <span style="white-space: pre-wrap;">la restauration des constantes </span>`<span class="editor-theme-code">INFRASSTUDIOBKP_</span>`<span style="white-space: pre-wrap;"> vers </span>`<span class="editor-theme-code">INFRASSTUDIO_</span>`,
    - <span style="white-space: pre-wrap;">l'application des migrations SQL nécessaires (fichiers </span>`<span class="editor-theme-code">sql/update_X.Y.Z_*.sql</span>`),
    - le réenregistrement des hooks et triggers,
    - <span style="white-space: pre-wrap;">la mise à jour de la constante </span>`<span class="editor-theme-code">INFRASSTUDIO_MAIN_VERSION</span>`.

##### **Étape 4 — Vérifier avec la page Diagnostic**

***Outils → InfraSStudio → Diagnostic***. L'ensemble des contrôles doit être au vert. La section Schéma SQL confirme en particulier que toutes les tables sont à jour.

##### **Étape 5 — Test fonctionnel**

Reproduisez trois actions courantes :

1. Ouvrir une page existante dans l'éditeur — l'aperçu doit se charger.
2. Modifier un slot — l'enregistrement automatique doit fonctionner (indicateur « Enregistré »).
3. Publier les modifications — vérifier que la version publique reflète bien la modification.

### <span style="color: rgb(35, 111, 161);">Lire le changelog avant chaque mise à jour</span>

Le changelog est accessible :

- <span style="white-space: pre-wrap;">Dans le module : </span>`<span class="editor-theme-code">htdocs/custom/infrasstudio/docs/changelog.xml</span>`.
- Dans l'administration : Outils → InfraSStudio → onglet Changelog.

##### **Lire les types de changement**

<table id="bkmrk-typesignificationfix" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Type

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Signification

</th></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">fix</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Correction d'une anomalie.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">chg</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Modification d'un comportement existant.

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">add</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Nouvelle fonctionnalité ou option.

</td></tr></tbody></table>

##### **Numérotation X.Y.Z**

<table id="bkmrk-composantcas-de-modi" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Composant

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Cas de modification

</th></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**X (majeur)**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">La version Dolibarr minimale prise en charge change.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**Y (mineur)**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Une nouvelle fonctionnalité ou option utilisateur est ajoutée.

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**Z (correctif)**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Corrections et modifications internes uniquement.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Fréquence des mises à jour</span>

Recommandations :

- **Correctif (Z)**<span style="white-space: pre-wrap;"> : à appliquer rapidement, surtout si l'anomalie corrigée vous concerne.</span>
- **Mineur (Y)**<span style="white-space: pre-wrap;"> : à appliquer dans les une à deux semaines, après lecture du changelog.</span>
- **Majeur (X)**<span style="white-space: pre-wrap;"> : à tester en pré-production, à planifier dans une fenêtre de maintenance, à communiquer à votre équipe.</span>

### <span style="color: rgb(35, 111, 161);">Retour en arrière</span>

Si une mise à jour pose problème :

1. Désactivez le module.
2. <span style="white-space: pre-wrap;">Restaurez le dossier </span>`<span class="editor-theme-code">infrasstudio.old.<date>/</span>`<span style="white-space: pre-wrap;"> sauvegardé à l'étape 2.</span>
3. Si une migration SQL a été appliquée, restaurez la base depuis le dump précédent.
4. Réactivez le module.

<p class="callout warning">**Avertissement — Restauration SQL —**<span style="white-space: pre-wrap;"> Une migration ajoute parfois des colonnes ou des tables. Si vous restaurez le dump pré-migration sans restaurer également les fichiers, le module détectera des structures manquantes et s'interrompra. Synchronisez toujours fichiers et base de données ensemble.</span></p>

### <span style="color: rgb(35, 111, 161);">Récapitulatif</span>

**Vous savez désormais :**

- Préparer une mise à jour avec une liste de contrôle (sauvegarde base, fichiers, données).
- Suivre la procédure en cinq étapes (désactiver, remplacer, réactiver, diagnostic, test).
- Lire le changelog et comprendre la numérotation X.Y.Z.
- Appliquer la fréquence appropriée selon le type de version.
- Revenir en arrière en cas d'incident.

**Fin de la Partie V —**<span style="white-space: pre-wrap;"> Vous savez gérer le module en tant qu'administrateur : permissions, configuration avancée, résolution des incidents, mises à jour. Le module est désormais entre des mains compétentes.</span>

La Partie VI propose la référence pure du module : tableaux exhaustifs des constantes, des shortcodes, des hooks, des tables SQL et des scripts en ligne de commande. À garder à portée pour une consultation rapide.