[spip-dev] Bug parser Spip ?

Bonjour,

Je ne m'explique pas le problème suivant, s'agit-il d'un bug du parser
de SPIP ?

D'un coté, un feed rss 2.0 a priori bien "formé"
http://www.ecoparis.org/test_backend.php3
généré avec les critères {par date}{inverse}

De l'autre, la récupération du feed
http://www.ecoparis.org/surleweb.php3?id_syndic=487
affiché avec les critères {par date}{inverse}

Alors que le parser se débrouille très bien avec la date <pubDate> en
format rfc-822 pour 13 des 15 articles, les 2 articles qui
apparaissent en dernier dans le feed généré (avec les dates 8/4/03 et
du 29/4/03) se retrouvent avec la date du jour (4/5/04) - et donc en
tête - dans le feed récupéré...

Dans le lien exemple c'est le parser de la version 1.6 mais j'ai fait
le test avec une version 1.7 et c'est la même chose.

si vous avez une idée du problème...

Merci cordialement

Info complémentaire : la date en format rfc-822 est obtenue par le
filtre/fonction

function date_rfc822 ($ladate) {
    $ladate = strtotime($ladate);
    return (date("r", $ladate));
}

et dans le squelette :
[<pubDate>(#DATE|date_rfc822)</pubDate>]

Merci à Jean-François (http://www.metro-pole.net/)

Cordialement

As-tu essayé le filtre date_rfc822 de Nicolas ?

http://lab.spip.net/spikini/index.php?wiki=FichiersDeSyndication#proposition
S

André Vincent

Merci. Je viens de le faire mais c'est exactement le même résultat.

Cordialement

A nouveau merci Jean-François (http://www.metro-pole.net/)

Réponse au problème :

Apparemment, c'est un comportement délibéré de l'analyseur RSS, qui ne
prend en compte la date indiquée pour l'item que si elle est comprise
entre 365 jours avant et 48 heures après "maintenant".
Dans ma version 1.7b3, c'est dans ecrire/inc_sites.php3 que ça se
passe, vers la ligne 204 dans la fonction syndic_a_jour();
On trouve en effet ($la_date étant la valeur récupérée, via une
expression régulière, des champs <dc:date> ou <pubDate> du RSS) :
if ($la_date < $now - 365 * 24 * 3600 OR $la_date > $now + 48 * 3600)
    $la_date = $now;

Pas un bug donc, et en mettant un filtre {age<365} dans le
backend.html tout est ok :slight_smile:
le feed généré http://www.ecoparis.org/backend.php3
le feed récupéré http://www.ecoparis.org/surleweb.php3?id_syndic=487

Cordialement