Appeler le recalcul/la propagation du statut de rubrique #11

Open
opened 1 year ago by rastapopoulos · 9 comments
Owner

Le plugin implémente bien le plugin compte_enfants ce qui permet de dire qu'une rubrique avec des albums publiés doit normalement être publiées aussi. Quand un jour ou l'autre, ce pipeline est appelé, il semblerait que ce soit bien pris en compte.

MAIS… ce n'est justement jamais appelé par le plugin lui-même ! Ce qui fait que quand on ne manipule que des albums, les rubriques restent toujours dépubliées.

Il y a donc plusieurs cas où il faut appeler le recalcul. Au moins ça :

  • quand on associe un album existant à une rubrique
  • quand on désassocie un album d'une rubrique
  • quand on change le statut d'un album alors qu'il est présentement associé à une rubrique
Le plugin implémente bien le plugin compte_enfants ce qui permet de dire qu'une rubrique avec des albums publiés doit normalement être publiées aussi. Quand un jour ou l'autre, ce pipeline est appelé, il semblerait que ce soit bien pris en compte. MAIS… ce n'est justement jamais appelé par le plugin lui-même ! Ce qui fait que quand on ne manipule que des albums, les rubriques restent toujours dépubliées. Il y a donc plusieurs cas où il faut appeler le recalcul. Au moins ça : - quand on associe un album existant à une rubrique - quand on désassocie un album d'une rubrique - quand on change le statut d'un album alors qu'il est présentement associé à une rubrique
Owner

C'est quoi le truc à appeler pour le recalcul du statut de la rubrique ?
Il y a un truc spécial de prévu ou il faut faire à la main (objet_modifier ou sql_updateq) ?

C'est quoi le truc à appeler pour le recalcul du statut de la rubrique ? Il y a un truc spécial de prévu ou il faut faire à la main (objet_modifier ou sql_updateq) ?
Owner

cf ce qui est fait dans le instituer_document() du plugin medias, quand le statut d'un document change
https://git.spip.net/spip/medias/src/branch/master/action/editer_document.php#L241

mais c'est normalement pris en compte par le instituer_objet() natif

Pour le associer/dissocier il faut fouiller, car je me demande si c'est pas censé être automatique si on utilise bien l'API editer_liens (en tout cas je vois pas de code spécifique dans le plugin medias)

(ah si il y a ça https://git.spip.net/spip/medias/src/branch/master/action/dissocier_document.php#L183)

cf ce qui est fait dans le `instituer_document()` du plugin medias, quand le statut d'un document change https://git.spip.net/spip/medias/src/branch/master/action/editer_document.php#L241 mais c'est normalement pris en compte par le `instituer_objet()` natif Pour le associer/dissocier il faut fouiller, car je me demande si c'est pas censé être automatique si on utilise bien l'API editer_liens (en tout cas je vois pas de code spécifique dans le plugin medias) (ah si il y a ça https://git.spip.net/spip/medias/src/branch/master/action/dissocier_document.php#L183)
Collaborator

C'est quoi le truc à appeler pour le recalcul du statut de la rubrique ?
Il y a un truc spécial de prévu ou il faut faire à la main (objet_modifier ou sql_updateq) ?

Si tu lance dans la maintenance de SPIP la réparation de la base, le statut des rubriques est recalculé (sans tenir compte de la présence de documents liés à cette rubrique d'ailleurs... Et je ne retrouve pas le ticket associé)

> C'est quoi le truc à appeler pour le recalcul du statut de la rubrique ? > Il y a un truc spécial de prévu ou il faut faire à la main (objet_modifier ou sql_updateq) ? Si tu lance dans la maintenance de SPIP la réparation de la base, le statut des rubriques est recalculé (sans tenir compte de la présence de documents liés à cette rubrique d'ailleurs... Et je ne retrouve pas le ticket associé)
Owner

Ok merci @cerdic je vais regarder tout ça.

Ok merci @cerdic je vais regarder tout ça.
Owner

@rastapopoulos tu voulais aider à finir la v4, je peux te mettre sur le coup ? Direct dans le master.

Dès que c'est fait, normalement c'est bon pour passer en test et éventuellement releaser.

@rastapopoulos tu voulais aider à finir la v4, je peux te mettre sur le coup ? Direct dans le master. Dès que c'est fait, normalement c'est bon pour passer en test et éventuellement releaser.
tcharlss closed this issue 2 months ago
tcharlss referenced this issue from a commit 2 months ago
Owner

Ah ben oui si je mets fix #truc dans le commit ça ferme le ticket, forcément.

@rastapopoulos je te laisse tester et fermer si c'est bon.

Ah ben oui si je mets fix #truc dans le commit ça ferme le ticket, forcément. @rastapopoulos je te laisse tester et fermer si c'est bon.
tcharlss reopened this issue 2 months ago
Poster
Owner

Bon moi je suis perdu parce que soit ya un problème de cohérence des fonctions (avec des choses qui se recoupent, doublonnent), soit un problème de (manque de) docs pour comprendre dans quels cas sont appelées chaque choses (càd pas aux mêmes moments).

  1. Pourquoi est-ce qu'il y a DEUX méthodes pour "dire qu'une rubrique a des contenus et doit changer de statut", et que Médias implémente les deux.

  2. Ensuite pour "relancer le test de savoir s'il faut publier ou dépublier", pourquoi est-ce que parfois c'est calculer_rubrique_if qui est appelée, et parfois c'est depublier_branche_if (pourquoi pas "publier_branche_rubrique" aussi…). Et là encore Médias utilie les deux. Alors pourquoi parfois l'un parfois l'autre ?

Est-ce que quelqu'un a une vision holistique et historique de pourquoi ce charivari et quelle est la bonne méthode la plus à jour et propre ?

Bon moi je suis perdu parce que soit ya un problème de cohérence des fonctions (avec des choses qui se recoupent, doublonnent), soit un problème de (manque de) docs pour comprendre dans quels cas sont appelées chaque choses (càd pas aux mêmes moments). 1) Pourquoi est-ce qu'il y a DEUX méthodes pour "dire qu'une rubrique a des contenus et doit changer de statut", et que Médias implémente *les deux*. - pipeline [objet_compte_enfants](https://git.spip.net/spip/medias/src/branch/master/medias_pipelines.php#L324) - pipeline [calculer_rubriques](https://git.spip.net/spip/medias/src/branch/master/medias_pipelines.php#L408) 2) Ensuite pour "relancer le test de savoir s'il faut publier ou dépublier", pourquoi est-ce que parfois c'est [calculer_rubrique_if](https://git.spip.net/spip/medias/src/branch/master/action/editer_document.php#L250) qui est appelée, et parfois c'est [depublier_branche_if](https://git.spip.net/spip/medias/src/branch/master/action/dissocier_document.php#L186) (pourquoi pas "publier_branche_rubrique" aussi…). Et là encore Médias utilie *les deux*. Alors pourquoi parfois l'un parfois l'autre ? Est-ce que quelqu'un a une vision holistique et historique de pourquoi ce charivari et quelle est la bonne méthode la plus à jour et propre ?
Collaborator

spip/spip#4152 aussi

N’empêche, "presque" tout serait plus simple si y avait un formulaire de statut sur les rubriques.

Ceci dit on a le problème inverse ensuite :

  • que devient une rubrique "publiée" dans une rubrique parente non publiée
  • que devient un article publié dans une rubrique non publiée ?
  • que devient un document dans une rubrique non publiée ?
  • etc. ...
https://git.spip.net/spip/spip/issues/4152 aussi N’empêche, "presque" tout serait plus simple si y avait un formulaire de statut sur les rubriques. Ceci dit on a le problème inverse ensuite : - que devient une rubrique "publiée" dans une rubrique parente non publiée - que devient un article publié dans une rubrique non publiée ? - que devient un document dans une rubrique non publiée ? - etc. ...
Poster
Owner

Bah ouais c'est ce que je disais hier soir sur IRC @marcimat, le système actuel maintient une certaine cohérence (modulo les bugs qui rendent incohérents lol comme 4152), car tous les contenus publiés dans une rubrique dépubliée (@tcharlss expliquait un besoin comme ça hier), bah ils vont sortir dans les boucles, par ex sur l'accueil, dans la recherche, etc, alors que c'est sûrement pas ce que voulait les gens en dépubliant la rub parente. Mais bon c'est à débattre dans un ticket core (peut-être déjà existant d'ailleurs).

Pour ce qui est du fonctionnement actuel, là faudrait quand même comprendre et être au clair sur : pourquoi plusieurs manières de faire, et quelle fonction doit être appelée pour recalculer proprement et complètement (rubrique elle-même + parent en cascade si le statut change à priori).

Bah ouais c'est ce que je disais hier soir sur IRC @marcimat, le système actuel maintient une certaine cohérence (modulo les bugs qui rendent incohérents lol comme 4152), car tous les contenus publiés dans une rubrique dépubliée (@tcharlss expliquait un besoin comme ça hier), bah ils vont sortir dans les boucles, par ex sur l'accueil, dans la recherche, etc, alors que c'est sûrement pas ce que voulait les gens en dépubliant la rub parente. Mais bon c'est à débattre dans un ticket core (peut-être déjà existant d'ailleurs). Pour ce qui est du fonctionnement actuel, là faudrait quand même comprendre et être au clair sur : pourquoi plusieurs manières de faire, et quelle fonction doit être appelée pour recalculer proprement et complètement (rubrique elle-même + parent en cascade si le statut change à priori).
Sign in to join this conversation.
No Milestone
No Assignees
5 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.