[spip-dev] Problèmes avec la boucle SIGNATURES

Bonjour les dev,

on m’a signalé une erreur à plusieurs reprises sur la boucle signatures concernant une noisette de la distribution EVA-web mais je n’en comprends pas l’origine et je n’arrive pas à reproduire sur des sites locaux ou en production. Je vous copie ci-dessous un échange à ce sujet. Pourtant, la page semble indiquer que le critère id_article fonctionne pour cette boucle… Bref, je ne comprends pas. Si vous pouviez m’éclairer ? Avec mes remerciements, Olivier Gautier. ----------------------------------------------------------------- Je profite de mes tests pour te signaler un bug. à l’affichage d’un article et effectivement, l table SIGNATURES ne contient pas de champ id_article. je suppose que la boucle principale devrait être faite sur la table PETITIONS -----------------------------------------------------------------

Dans la distribution SPIP v3.0.3

Dans le fichier \spip\plugins-dist\petitions\base\petitions.php
la ligne 103 est mise en commentaire.

[...]
$tables['spip_signatures'] = array(
[...]
# "id_article" => "bigint(21) DEFAULT '0' NOT NULL",
[...]

Donc sur une installation toute neuve, id_article n'est pas un champ de la table signatures.

Voir avec les développeur du core, si cela est normal ..;

@+JPK alias Coyote90

----- Mail original -----

Pour ma part, la boucle fonctionne bien sur une 3.0.3 et pourtant sans champ id_article dans la table spip_signatures…

Bonjour,
Le bug concerne en fait le plugin accès restreint qui construit une requête erronée sur le filtrage des signatures.

Cedric

Très bien vu Cédric, merci.
Savez-vous quelle correction apporter ?

actuellement, le plugin acces_restreint
dans le fichier \v.3.6.1\public\accesrestreint.php

possède une fonction avec
function accesrestreint_pre_boucle(&$boucle){
[...]
case 'evenements':
case 'signatures':
     $t = $boucle->id_table . '.id_article';
     $boucle->select = array_merge($boucle->select, array($t));
     $boucle->where[] = accesrestreint_articles_accessibles_where($t);
     $securise = true;
     break;
[...]
}

Hors la table signatures n'a pas ou plus de champ id_article.

merci d'avance.

@+JPK

----- Mail original -----

http://zone.spip.org/trac/spip-zone/changeset/63441
devrait corriger le problème

Cédric