Le code de
DerniersChangementsRSS1Point0 est :
<?php
# Generation d'un canal RSS 1.0 a partir des derniers changements
#
# Parametres : link : URI de base identifiant le canal (obligatoire)
#
# exemple : {{recentchangesrss10 link="DerniersChangementsRSS1Point0"}}
#
# copyright Equipe WikiNi et Eric van der Vlist 2004 mailto:vdv@dyomedea.com
#
# Licence GPL, vous etes libre d'utiliser et de modifier ce code a condition de
# laisser le copyright d'origine. Vous pouvez bien sur vous ajouter a la liste
# des auteurs.
#
# Installation : copier le fichier dans le repertoire "actions" de WikiNi
if ($user = $this->GetUser())
{
$max = $user["changescount"];
}
else
{
$max = 50;
}
if ($pages = $this->LoadRecentlyChanged($max))
{
if (!($link = $this->GetParameter("link"))) $link=$this->config["root_page"];
$output = "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
$output .= "<!-- RSS v1.0 generated by Wikini -->\n";
$output .= "<rdf:RDF\n";
$output .= "\txmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'\n";
$output .= "\txmlns:dc='http://purl.org/dc/elements/1.1/'\n";
$output .= "\txmlns='http://purl.org/rss/1.0/'>\n\n";
$output .= "<channel rdf:about='" . $this->config["base_url"] . $link . "'>\n";
$output .= "\t<title> Derniers changements sur ". $this->config["wakka_name"] . "</title>\n";
$output .= "\t<link>" . $this->config["base_url"] . $link . "</link>\n";
$output .= "\t<description> Derniers changements sur " . $this->config["wakka_name"] . " </description>\n";
$output .= "\t<dc:language>fr</dc:language>\n";
$output .= "\t<items>\n";
$output .= "\t\t<rdf:Seq>\n";
foreach ($pages as $i => $page)
{
$output .= "\t\t\t<rdf:li rdf:resource='" . $this->config["base_url"] . $page["tag"] . "&time=" . rawurlencode($page["time"]) . "'/>\n";
}
$output .= "\t\t</rdf:Seq>\n";
$output .= "\t</items>\n";
$output .= "</channel>\n\n";
foreach ($pages as $i => $page)
{
list($dayslash, $time) = explode(" ", $page["time"]);
$day= preg_replace("/-/", " ", $dayslash);
list($hh,$mm,$ss) = explode(":", $time);
$about = $this->config["base_url"] . $page["tag"] . "&time=" . rawurlencode($page["time"]) ;
$output .= "<item rdf:about='$about'>\n";
$output .= "\t<title>" . $page["tag"] . "</title>\n";
$output .= "\t<description> Modification de " . $page["tag"] . " --- par " .$page["user"] . " le " . $day ." - ". $hh .":". $mm . "</description>\n";
$output .= "\t<link>$about</link>\n";
$output .= "\t<dc:date>" . $dayslash . "T" . $time . "</dc:date>\n";
$output .= "</item>\n\n";
}
$output .= "</rdf:RDF>\n";
echo $output ;
}
?>
Validation
Attention, le flux ne valide pas du fait du format de la date (<dc:date>) qui n'intègre pas le fuseau horaire cf.
http://feedvalidator.org/check?url=http://websemantique.org/DerniersChangementsRSS1Point0/xml.
Je pense qu'il faudrait adopter le format suivant :
- Complete date plus hours, minutes and seconds:
- YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
(noter le
+01:00 pour indiquer le fuseau horaire).
Il faut cependant déterminer le fuseau horaire. Je propose qu'il soit fixé par défaut à +00:00 soit :
- 1994-11-05T13:15:30+00:00
- ou plutôt
- 1994-11-05T13:15:30Z (notation spécifique pour le temps UTC)
Mais le fuseau horaire doit aussi pouvoir être spécifié par l'utilisateur ; il faudrait donc ajouter un second paramètre à la fonction :
par exemple : {{recentchangesrss10 link="DerniersChangementsRSS1Point0" zone="+01:00"}}
--
CharlesNepote
Numérotation de l'action
Pour faciliter le travail sur cette action, il faudrait lui ajouter un numéro de version :
- en commentaire dans le source PHP : # recentchangesRSS v. 0.1 pour WikiNi 0.4.1 et supérieurs
- en commentaire dans le source XML : $output .= "<!-- RSS v1.0 generated by Wikini (plugin recentchangesRSS v. 0.1) -->\n";
--
CharlesNepote
Améliorer la sémantique du Fil RSS
Bizarrement, le fil RSS le plus pauvre que j'ai vu pour un wiki est celui de Websemantique.org ;-) Je propose d'utiliser plus de méta données et d'utiliser plus rigoureusement les balises RSS.
Voici mes suggestions d'amélioration :
--
FrancoisHodierne?
Vu. Tu as raison. Tes propositions sont faciles à mettre en oeuvre sur
WikiNi. Il suffit de modifier le fichier
SourcePhpDerniersChangementsRSS1Point0. Je pense m'en charger un jour... si ça t'amuse tu installes chez toi un
WikiNi tout frais (0.4.1rc) et tu retravaille le
SourcePhpDerniersChangementsRSS1Point0 (très facile à lire). Pour les éléments du module Wiki RSS, je peux te fournir les correspondances avec les objets
WikiNi (par exemple pour <wiki:history> :
$this->config["base_url"] . $page["tag"] . "/revision" ) ; sachant que
WikiNi ne gère pas beaucoup de choses proposées.
--
CharlesNepote