backend.php3 : faire un contenu valide

Bonjour,

je suis nouveau sous SPIP.
Je commence avec le squelette de base que je tente de modifier peu à
peu.
J'ai récement voulu produite un backend.php3 qui soit reconnu comme
compatible par http://feeds.archive.org

Voici les modifications que j'ai fait au niveau de backend.html, si cela
peut dépanner quelqu'un :

- j'ai enlevé la balise <author> plutôt que de rajouter l'adresse e-mail
- j'ai changé la balise <date> en <pubDate> ainsi :

<pubDate>[(#DATE|nom_jour|jour_us], [(#DATE|jour)]
[(#DATE|nom_mois|pure_texte|mois_us)] [(#DATE|annee)]
[(#DATE|heures)]:[(#DATE|minutes)]:[(#DATE|secondes)] CST</pubDate>

- j'ai rajouté les fonctions suivantes dans mes_functions.php3 :

function mois_us($texte) {
  switch($texte) {
    case "janvier":
      $texte="Jan";
      break;
    case "fevrier":
      $texte="Feb";
      break;
    case "mars":
      $texte="Mar";
      break;
    case "avril":
      $texte="Apr";
      break;
    case "mai":
      $texte="May";
      break;
    case "juin":
      $texte="Jun";
      break;
    case "juillet":
      $texte="Jul";
      break;
    case "aout":
      $texte="Aug";
      break;
    case "septembre":
      $texte="Sep";
      break;
    case "octobre":
      $texte="Oct";
      break;
    case "novembre":
      $texte="Nov";
      break;
    case "decembre":
      $texte="Dec";
      break;
  }
  return $texte;
}

function jour_us($texte) {
  switch($texte) {
    case "lundi":
      $texte="Mon";
      break;
    case "mardi":
      $texte="Tue";
      break;
    case "mercredi":
      $texte="Wed";
      break;
    case "jeudi":
      $texte="Thu";
      break;
    case "vendredi":
      $texte="Fri";
      break;
    case "samedi":
      $texte="Sat";
      break;
    case "dimanche":
      $texte="Sun";
      break;
  }
  return $texte;
}

function pure_texte($texte) {
  /*
   * elle n'est pas de moi
   * mais je ne sais plus
   * d'ou elle vient :-/
   */
  $texte = html_entity_decode($texte);
if (!(is_string($texte)))

return ("");

  $sortie = strtr($texte,
"ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛܯàáâãäåçèéêëìíîï©£òóôõöùúûü~ÿ",
#"¿¡¬«» ÀÃÕ÷·ÂÁËÈÍÎÏÌÓÔÚÛÙ¸"
"AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy");

  return $sortie;
}

La solution n'est pas très élégante mais elle a le mérite de fonctionner
en attendant mieux.

--
  Salutations/Best regards
  Laurent SIMON
  http://mewn.nulix.com

J'ai récement voulu produite un backend.php3 qui soit reconnu comme
compatible par http://feeds.archive.org

Voici les modifications que j'ai fait au niveau de backend.html, si cela
peut dépanner quelqu'un :

- j'ai enlevé la balise <author> plutôt que de rajouter l'adresse e-mail
- j'ai changé la balise <date> en <pubDate> ainsi :
[...]

Pourquoi se torturer les méninges à triturer l'actuel fichier backend de
syndication de SPIP?

Parce que la validation de feeds.archive.org développé par Sam Ruby et Mark
Pilgrim affirme qu'il n'est pas conforme aux spécifications?

Alors pourquoi la validation de Userland.com affirme-t-elle le contraire?

http://aggregator.userland.com/validator?url=http%3A%2F%2Fwww.spip.net%2Fbac
kend.php3

(Pour la petite histoire, ce sont Userland et Netscape qui ont développé
conjointement les premières spécifications qui ont conduit au RSS 0.91:
donc, ils connaissent ça du RSS).

C'est simple, Archive.org est un tantinet ayatollah concernant les
spécifications RSS de syndication. Ils traitent RSS comme si c'était une
norme ou un standard, alors que ce n'est qu'un format en évolution, un
simple dialecte du XML. Pour RSS 1.0, c'est un peu différent: ils voient
plus grand, certains diraient plus loin...

Alors que pour Dave Winner (de Userland), ce qui importe, c'est: est-ce que
ÇA FONCTIONNE? Et oui, le backend de SPIP fonctionne. Même si <author> et
<date> ne respectent pas les spécifications. (pas plus que <pubDate> à
l'intérieur d'un item d'ailleurs, du moins pour la version 0.91).

Je pense qu'en ce qui nous concerne, il faudrait pas être plus catho que le
pape.

Plutôt que de modifier le backend 0.91 actuel (qui comporte toutes sortes de
limites et de contraintes), je pense qu'il serait préférable de plutôt
mettre nos énergies à développer des squelettes backend RSS 1.0 ou mieux,
RSS 2.0; surtout, dans une perspective multilingue et multi charsets.

D'autant plus que l'analyseur synthaxique (parser) de SPIP reconnaît très
bien ces divers formats.

Voir l'exemple d'un RSS 1.0 développé par Nicolas Hoizey
Feed RSS 1.0 -> PHP Heaven
Squelette -> PHP Heaven

Bon OK, la date ne valide pas chez feeds.archive.org

Si on y tient vraiment, voici la correction à apporter au squelette de
Nicolas Hoizey:
   
[<dc:date>(#DATE|annee)-][(#DATE|mois)-][(#DATE|jour_zero)T][(#DATE|heures):
][(#DATE|minutes):][(#DATE|secondes)-05:00</dc:date>]

En fait, seule la date du jour pose problème (2 au lieu de 02 et 1er au lieu
de 01)

Voici donc la fonction à placer dans mes_fonctions.php3 qui corrige la
chose.

<?
/*
* +----------------------------------+
* Nom du Filtre : jour_zero
* +----------------------------------+
* Date : Jeudi 8 mai 2003
* Auteurs : Christophe Bersihand
*
* +-------------------------------------+
* Fonctions de ce filtre :
* affiche la date du jour au format 01
* +-------------------------------------+
*
* Pour toute suggestion, remarque, proposition d'ajout
* reportez-vous au forum de l'article :
* http://www.uzine.net/spip_contrib/article.php3?id_article=144
*/

function jour_zero($numdate) {
    $date_array = recup_date($numdate);
    if ($date_array)
            list($annee,$mois,$jour) = $date_array;
    else
            return '';
    if (!mois OR !jour) return;

    $nom = mktime(1,1,1,$mois,$jour,$annee);
    $nom = date("d",$nom);
    return $nom;
}
?>

Pour références:

Sécifications RSS 0.91 -> RSS 0.91
    et -> http://my.netscape.com/publish/formats/rss-spec-0.91.html
Sécifications RSS 1.0 -> RDF Site Summary (RSS) 1.0
Sécifications RSS 2.0 -> Site Outline (RSS 2.0 at Harvard Law)

André Vincent

Le lundi, 1 sep 2003, à 22:12 Europe/Paris, Andre Vincent a écrit :

Archive.org est un tantinet ayatollah concernant les
spécifications RSS de syndication. Ils traitent RSS comme si c'était une
norme ou un standard, alors que ce n'est qu'un format en évolution, un
simple dialecte du XML.

Ce n'est pas parce que c'est en évolution qu'on peut s'affranchir des standards. Si on commence à s'écarter du HTML 4 sous prétexte qu'il y aura un jour du HTML 5, ça sera toujours le bordel.
Quand on s'appelle Microsoft, on peut toujours caresser l'espoir que ses dérives seront adoptées comme standard. Mais est-ce vraiment l'exemple à suivre?