[spip-dev] Bizarrerie 1.8b1 (bug ?)

Bonjour à tous,

En testant Spip 1.8b1 en local, la boucle :

<BOUCLE_documents_article(DOCUMENTS){id_article}{par num titre}{doublons}>
[(#PUCE)][(#TITRE|supprimer_numero)]
</BOUCLE_documents_article>

m'affiche correctement le titre du document, alors que la boucle :

<BOUCLE_documents_article_test(DOCUMENTS){id_article}{par num titre}{doublons}>
[(#PUCE)][(#TITRE|supprimer_numero)] ([(#TYPE_DOCUMENT)])
</BOUCLE_documents_article_test>

me retourne le type du document à la place du titre (le type du document est finalement retourné deux fois). La balise #TYPE_DOCUMENT semble écraser la balise #TITRE.

A+

Olivier « M. Go »

Note : je n'ai bien sûr pas ce problème avec Spip 1.7.2

En testant Spip 1.8b1 en local, la boucle :

<BOUCLE_documents_article(DOCUMENTS){id_article}{par num titre}{doublons}>
[(#PUCE)][(#TITRE|supprimer_numero)]
</BOUCLE_documents_article>

m'affiche correctement le titre du document, alors que la boucle :

<BOUCLE_documents_article_test(DOCUMENTS){id_article}{par num
titre}{doublons}>
[(#PUCE)][(#TITRE|supprimer_numero)] ([(#TYPE_DOCUMENT)])
</BOUCLE_documents_article_test>

me retourne le type du document à la place du titre (le type du document
est finalement retourné deux fois). La balise #TYPE_DOCUMENT semble
écraser la balise #TITRE.

C'est possible qu'il y ait un bug à cet endroit ; dans le code CVS ça se
trouverait dans inc-boucles.php3 ligne 78, qui indique :

   'type_document' => array('types_documents', 'titre'),

Reste à trouver 1) à quoi ça sert 2) comment résoudre

-- Fil

> titre}{doublons}>
> [(#PUCE)][(#TITRE|supprimer_numero)] ([(#TYPE_DOCUMENT)])
> </BOUCLE_documents_article_test>
>
> me retourne le type du document à la place du titre (le type du document
> est finalement retourné deux fois). La balise #TYPE_DOCUMENT semble
> écraser la balise #TITRE.

C'est bien le cas : en ouvrant la boucle en question dans le tout nouveau
debuggueur, que voit-on :
18. $result = spip_abstract_select(
19. array("0+documents.titre AS num",
20. "documents.titre",
21. "types_documents.titre",
22. "documents.id_document"), # SELECT

Comme tu vois, il y a ensuite confusion entre "documents.titre" (censé
donner #TITRE) et "types_documents.titre" (censé donner #TYPE_DOCUMENT).

Reste à trouver 1) à quoi ça sert

C'est que le #TYPE_DOCUMENT est la valeur du champ 'titre' de la table
spip_types_documents

2) comment résoudre

Méchante question :slight_smile:

Pour bien faire il faut passer
        "documents.titre"
     et "types_documents.titre AS type_document"

J'envoie un patch, avec le risque toutefois de casser d'autres connexions
étranges entre tables... à mettre en observation, donc.

Cela dit, s'il ne reste plus que des bugs de ce niveau de subtilité, c'est
assez rassurant !

-- Fil

Merci Fil pour avoir pris le temps de l'explication (c'est encore un peu obscur pour moi :wink: mais j'ai bien noté l'utilité du nouveau debuggueur).

Je vais utiliser la version CVS pour tester les modifs et me familiariser avec la nouvelle réorganisation du code !

A+

Olivier « M. Go »

Fil a écrit :