erreur de squelettes BOUCLE_documents_decompte #4834

Open
opened 1 year ago by chankalan · 6 comments
chankalan commented 1 year ago

critère inconnu signalé
Il me semble que le critère {texte=''} ne va pas car texte n'a pas de valeur ici, il faudrait faire une boucle ARTICLES pour l'avoir, ou sinon :
<BOUCLE_documents_decompte(DOCUMENTS spip_documents_liens articles) {id_article?}{objet?}{id_objet?} {si #INFO_TEXTE{article,#ENV{id_article}}|non}{media!=image} {vu=non}> [(#TOTAL_BOUCLE|=={1} |?{[(#INCLURE{fond=modeles/emb, id_document} |trim)]})]</BOUCLE_documents_decompte>

critère inconnu signalé Il me semble que le critère {texte=''} ne va pas car texte n'a pas de valeur ici, il faudrait faire une boucle ARTICLES pour l'avoir, ou sinon : ` <BOUCLE_documents_decompte(DOCUMENTS spip_documents_liens articles) {id_article?}{objet?}{id_objet?} {si #INFO_TEXTE{article,#ENV{id_article}}|non}{media!=image} {vu=non}> [(#TOTAL_BOUCLE|=={1} |?{[(#INCLURE{fond=modeles/emb, id_document} |trim)]})]</BOUCLE_documents_decompte> `
b_b commented 1 year ago
Owner

Version cible = 4.0 ? Tu peux donner un lien vers la ligne du squelette qui génère l'erreur ?

Version cible = 4.0 ? Tu peux donner un lien vers la ligne du squelette qui génère l'erreur ?
Poster
SPIP 4.0 oui, mais déjà avant en fait... https://git.spip.net/spip/dist/src/branch/master/inclure/documents.html#L37
b_b commented 1 year ago
Owner

Ha, j'ai jamais observé ce bug, pour le reproduire il faut être dans le cas indiqué par le commentaire ? Publier un article sans texte avec un seul doc joint ?

Ha, j'ai jamais observé ce bug, pour le reproduire il faut être dans le cas indiqué par le commentaire ? Publier un article sans texte avec un seul doc joint ?
Poster

oui en effet, et d'ailleurs l'inclure dans le modèle emb est pas top, on attend un "id" dans le modèle, et d'ailleurs ce ne serait pas plus simple écrit un peu comme ça ? :
[(#TOTAL_BOUCLE|=={1}|oui)#INCLURE{fond=modeles/emb, id=#ID_DOCUMENT}]

oui en effet, et d'ailleurs l'inclure dans le modèle emb est pas top, on attend un "id" dans le modèle, et d'ailleurs ce ne serait pas plus simple écrit un peu comme ça ? : [(#TOTAL_BOUCLE|=={1}|oui)#INCLURE{fond=modeles/emb, id=#ID_DOCUMENT}]
b_b added this to the spip-4.0 milestone 7 months ago
Owner

Bon, je ne reproduis plus l'erreur sur le master, mais :

  • la fonctionnalité est pétée (certainement à cause de la mauvaise jointure sur les forums)
  • la requête SQL générée fait "un peu n'importe quoi" cf
SELECT documents.id_document
FROM spip_documents AS `documents`  
INNER JOIN spip_forum AS L4 ON ( L4.id_objet = documents.id_document AND L4.objet='document') 
INNER JOIN spip_documents_liens AS L3 ON ( L3.id_document = documents.id_document ) 
INNER JOIN spip_documents_liens AS L2 ON ( L2.id_document = documents.id_document ) 
INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document )
WHERE (documents.statut = 'publie')
	AND 1=1
	AND (documents.mode IN ('image','document'))
	AND (documents.taille > 0 OR documents.distant='oui')
	AND (L1.id_objet = 108)
	AND (L1.objet = 'article')
	AND (L2.objet = 'article')
	AND (L3.id_objet = 108)
	AND NOT((documents.media = 'image'))
	AND (L4.objet = 'document')
	AND (L4.texte = '')
	AND (L1.vu = 'non')
GROUP BY documents.id_document
Bon, je ne reproduis plus l'erreur sur le master, mais : - la fonctionnalité est pétée (certainement à cause de la mauvaise jointure sur les forums) - la requête SQL générée fait "un peu n'importe quoi" cf ```sql SELECT documents.id_document FROM spip_documents AS `documents` INNER JOIN spip_forum AS L4 ON ( L4.id_objet = documents.id_document AND L4.objet='document') INNER JOIN spip_documents_liens AS L3 ON ( L3.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L2 ON ( L2.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.statut = 'publie') AND 1=1 AND (documents.mode IN ('image','document')) AND (documents.taille > 0 OR documents.distant='oui') AND (L1.id_objet = 108) AND (L1.objet = 'article') AND (L2.objet = 'article') AND (L3.id_objet = 108) AND NOT((documents.media = 'image')) AND (L4.objet = 'document') AND (L4.texte = '') AND (L1.vu = 'non') GROUP BY documents.id_document ```
Owner

Wala, PR corrective envoyée :)

Wala, PR corrective envoyée :)
Sign in to join this conversation.
No Milestone
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.