[spip-dev] Comportement des mises à jour des plugins : interrogations

Bonjour la liste,

J'ai constaté un comportement qui m'a surpris en ce qui concerne les mises à jour des plugins. Soit c'est le comportement voulu, soit c'est moi qui m'y prends mal, soit c'est un bug.
Comme je ne suis pas sûr, avant d'ouvrir un rapport de bug, je voulais voir avec la liste.

Pour résumer, lors d'une mise à jour d'un plugin, la fonction de mise à jour correspondant au numéro de schéma courant est appelée : ça me semble logique.
En revanche, lors d'une nouvelle installation, ce n'est pas le cas : seule la fonction d'installation est appelée.
Moi ça me semblait pourtant logique d'appeler aussi la mise à jour correspondant au numéro de schéma en cours.

Du coup, il y peu y avoir inconsistance entre les plugins mis à jour par incréments, et les plugins nouvellement installés non ?
En général, les fonctions de mise à jour font des actions relatives aux tables du plugin, donc ça n'occasionne pas de différence entre les 2 cas.
Par contre, si on veut y faire d'autres actions (supprimer des options de config obsolètes par exemples), ben les plugins mise à jour en bénéficieront, mais pas ceux nouvellement installés.

J'espère être clair.
Concrètement, pour être sûr j'ai procédé de la sorte : plugin de test avec les fonction d'upgrade suivante :

$maj['create'] = array(array('spip_log', 'installation',  'test'));
$maj['2.0.0'] = array(array('spip_log',  'mise à jour 2', 'test'));
$maj['3.0.0'] = array(array('spip_log',  'mise à jour 3', 'test'));

- Au départ, le plugin a un schéma 1.0.0.
En activant le plugin, la fonction d'installation est bien appelée.
- Incrémentation du schéma à 2.0.0, rechargement de la page d'admin des plugins : la fonction de mise à jour n°2 est bien appelée.
- Incrémentation du schéma à 3.0.0, rechargement de la page d'admin des plugins : la fonction de mise à jour n°2 est bien appelée.
- Désinstallation, puis réinstallation : seule la fonction d'installation est appelée, alors que je m'attendais à ce que la fonction de mise à jour 3.0.0 soit également appelée.

Voilà,
à vous lire

C.R

Hello,

Ben non c’est correct pour moi.

La fonction de create permet de passer de rien à la mise en place de la version max du schéma de la base / configuration (celui qui est dans le xml).

Cette fonction évolue donc toujours en même temps que le schéma évolue.

Les autres fonctions ne font que les mises à jour incrémentales ni plus ni moins.

Ben non : si c'est une création depuis 0, alors tu n'as encore jamais ajouté de config obsolète.

Quand on part de 0 on installe directement la bonne version des choses (des tables, des configs, etc). C'est au tableau "create" de contenir les bonnes instructions pour cela.

[grmmlbml. Je renvoie ma réponse d'hier qui s'est égarée dans les méandres d'internet]

Ok, donc c'est moi qui n'avait pas saisi la portée de create, je pensais qu'elle ne devait justement pas évoluer.
Désolé pour le bruit !

Si j'ai bien compris, pour résumer, il faut y répercuter au fur et à mesure toutes les actions qui n'ont pas trait aux tables du plugin, c'est bien ça ?

Est-ce que c'est documenté quelque part, ou c'est un secret transmis de spipeur à spipeur ?

C.R

Comme l'indique à peu près son nom ("create"), il faut y mettre toutes les actions que tu jugeras utile pour installer le plugin *depuis 0*.

Créations de tables, peuplage de contenus, pré-configuration…