feat : Proposition d'affichage du numero de version de la librairie

Bonjour,

Actuellement, dans la version 2.4.3 et antérieure, nous n'affichons pas la version de la librairie Socicon utilisée dans le plugin. Je propose une amélioration sur ce sujet à partir du constat : la librairie est intégrée au présent plugin.

  • Analyser le fichier lib/socicon/CHANGELOG.md
  • Récupérer tous les numéros de versions (Oui, juste pour le plaisir) avec le pattern "vx.y.z" et "vx.y"
  • Le premier de la liste est la dernière version en date.

Le code proposé :

function sociaux_get_socicon_versions(){
	// récupération du contenu du fichier changelog
	$changelog = @file_get_contents(_DIR_PLUGIN_SOCIAUX . 'lib/socicon/CHANGELOG.md');

	if ($changelog === false) {
		spip_log("Aucun fichier CHANGELOG de la librairie n'est disponible actuellement", 'sociaux');
		return false;
	}

    // Expression régulière pour capter les versions au format v1.2.3 ou v1.2
    preg_match_all('/v\d+\.\d+(?:\.\d+)?/', $changelog, $matches);

    // Normalisation des versions en vX.Y.Z
    $normalized = array_map(function($version) {
        // Retire le "v", découpe par point
        $parts = explode('.', substr($version, 1));

        // Ajoute les parties manquantes
        while (count($parts) < 3) {
            $parts[] = '0';
        }

        return 'v' . implode('.', $parts);
    }, $matches[0]);

    // Suppression des doublons, tri par ordre décroissant
    $versions = array_unique($normalized);
    usort($versions, 'version_compare');
    natsort($versions);
    //$versions = array_reverse($versions);

    return $versions;
}

function sociaux_get_socicon_current_version() {
	$versions = sociaux_get_socicon_versions();

	return array_pop($versions);
}

Puis avec le pipeline affiche_gauche, on affiche la version sur la page `?exec=configurer_sociaux``. On peut même aller plus loin en consultant https://api.github.com/repos/Ybbet/socicon/git/refs/tags pour connaitre la dernière version disponible.

Ainsi, on aurait :

  • La version en cours dans le plugin Sociaux.
  • La dernière version de la librairie, disponible sur le GitHub officiel.

Dites moi ce que vous en pensez, et s'il y a consensus, je l'intègre dans le plugin.