ce serait cool de publier le code de Léa, mais cela ferait encore du boulot pour gérer ça. en attendant voici le code du plugin qui fait ça:
------------------------------------------------------------
<? /* versions des logiciels qu'on aime bien */
/* ce code est licencié sous Licence GPL */
$BACKEND = "[
freshmeat.net];;
$CACHEFILE = "./cache/cache_versions";
$TIME2CACHE = 3600 * 24 * 2;
$FIRSTPREFIX = "· ";
$PREFIX = "<br />$FIRSTPREFIX";
$POSTFIX = "\n";
//pour configurer, rechercher le logiciel sur freshmeat,
//mettre en 1ere position le nom qui va s'afficher,
//en 2eme, le bout d'url qui va bien,
//en 3eme et suivants, le ou les noms des branches dont on veut la version
$LOGICIELS =
array(
array("Apache", "apache/", "Stable", "1.3"),
array("Samba", "samba/", "3.0.x", "2.2.x"),
array("MySQL", "mysql/", "Production (4.0.x)"),
array("PHP", "php/", "Default"),
array("XFree86", "xfree86/", "Default"),
array("KDE", "kde/", "Default"),
array("Gnome", "gnome-core/", "Default"),
array("Mozilla", "mozilla/", "Stable"),
array("OpenOffice", "openoffice/", "Stable"),
array("The Gimp", "thegimp/", "Default")
);
//utiliser le tableau suivant pour forcer la version d'un logiciel (Freshmeat pas à jour)
$FORCEVERSION["Mozilla"]["Stable"] = array("1.5", "15/10/2003");
function getVersions($fargv) {
$BACKEND = $fargv[0] ; $CACHEFILE = $fargv[1] ; $FIRSTPREFIX = $fargv[2] ;
$PREFIX = $fargv[3] ; $POSTFIX = $fargv[4] ; $LOGICIELS = $fargv[5] ;
$FORCEVERSION = $fargv[6] ;
$dest = "<!-- Fichier $CACHEFILE généré, ne pas éditer -->\n";
$nl = $FIRSTPREFIX;
$ligne = "" ;
while(list(,$log) = each($LOGICIELS)) {
$branches = array_slice($log, 2);
$fpsrc = fopen($BACKEND . $log[1], 'r');
if ($fpsrc) {
$cpt = 0;
$section = "";
while(!feof($fpsrc)) {
$ligne = chop(fgets($fpsrc, 8192));
switch ($section) {
case "homepage":
if (preg_match("/\<a\shref\=\".*?\"\>([^<]+)\<\/a\>/", $ligne, $m)) {
$section = "branch";
$homepage = $m[1];
}
break;
case "branch":
if (preg_match("/\<a\shref\=\"\/branches\/\d+\/\"\>([^<]+)\<\/a\>/", $ligne, $m)) {
if (in_array($m[1], $branches)) {
$section = "version";
$branch = $m[1];
}
}
break;
case "version":
if (preg_match("/\<a\shref\=\"\/releases\/\d+\/\"\>([^<]+)\<\/a\>/", $ligne, $m)) {
$lelog = "$nl<a href='$homepage'>$log[0] : $m[1]</a>$POSTFIX";
if (list($vers,) = $FORCEVERSION[$log[0]][$branch])
$dest .= str_replace($m[1], $vers, $lelog); // pour remplacer dans le nom, l'url et la version
else
$dest .= $lelog;
if ($nl == $FIRSTPREFIX) $nl = $PREFIX;
$cpt++;
if ($cpt >= count($branches))
break 2; //logiciel suivant
}
break;
default:
if (preg_match("/Homepage\:/", $ligne))
$section = "homepage";
} //switch
}
fclose($fpsrc);
}
} //while(list(,$log) = each($LOGICIELS))
return $dest ;
}
$fargv = array($BACKEND, $CACHEFILE, $FIRSTPREFIX, $PREFIX, $POSTFIX, $LOGICIELS, $FORCEVERSION) ;
print Cache($CACHEFILE, "getVersions", $TIME2CACHE, $fargv) ;
?>
------------------------------------------------------------
attention c'est assez lourd, nous avons un système de cache pour ne recharger cette page que tous les 2 jours. Sinon freshmeat va vous incendier.
bref, c'est donné sans garanties, ce que vous faites avec ce code est sous votre responsabilité. comme on dit.