Couleur de la version de PluXml

A chaque fois je fait le saut :D car c'est en rouge "Vous utilisez la dernière version de PluXml (5.6)"

Ce ne serais pas plux logique en vert quand c'est à jour et en rouge quand ça ne l'est pas ?

Buster/NGINX/PHP7/PluXml5.8

Réponses

  • oui, entièrement d'accord.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Et parfois la retombée peut être brutale ]:D

    Pour éviter cela voici quelques modifs :
    Modifier la fonction checkMaj(...) dans le fichier core/lib/class.plx.admin.php. On en profite pour optimiser le code :
    [== PHP ==]
    
        public function checkMaj() {
    
            # La fonction est active ?
            $theClass = 'text-error';
            $msg = L_PLUXML_UPDATE_UNAVAILABLE;
            if(ini_get('allow_url_fopen')) {
     
                # Envoi requête HTTP vers le site de PluXml
                if($fp = @fopen('http://telechargements.pluxml.org/latest-version', 'r')) {
                    $latest_version = trim(fread($fp, 16));
                    fclose($fp);
                }
                if(!empty($latest_version)) {
                    # Comparaison
                    if(version_compare(PLX_VERSION, $latest_version, ">=")) {
                        $msg = L_PLUXML_UPTODATE.' ('.PLX_VERSION.')';
                        $theClass = 'text-success';
                    } else {
                        $msg = L_PLUXML_UPDATE_AVAILABLE.' <a href="http://www.pluxml.org/">PluXml.org</a>';
                    }
                } else {
                    $msg = L_PLUXML_UPDATE_ERR;
                    $theClass .= ' unavailable'
                }
            }
            return <<< RESULT
    <span class="$theClass">$msg</span>
    RESULT;
    
        }
    
    Rappel : str_replace accepte aussi les tableaux(array) en paramètres.
    On rajoute 2 class dans le fichier core/admin/theme/theme.css, vers les class error et success à la ligne 418
    [== CSS ==]
    .text-error {
    	color: red;
    	background-color: yellow;
    }
    .text-success {
    	color: green;
    }
    
    Et on modifie la ligne n°22 de core/admin/parametres_infos.php comme suit :
    [== PHP ==]
    	<p id="check-maj"><?php echo $plxAdmin->checkMaj(); ?></p>
    
    Au final on ajuste les couleurs à son goût dans les class ci-dessus.

    Ceux-ci ne sont que des détails cosmétiques.

    Ce qui est plus gênant c'est l'emploi de allow_url_fopen et de fopen dans la fonction checkMaj.
    Chez certains hébergeurs, pas que les gratuits, leurs usages sont interdits.
    De plus, il y redondance d'information puisque qu'on va cherché une information à pluxml.org alors qu'elle existe sur le dépôt de Github.

    Donc il vaudrait mieux utiliser Javascript et l'Api de Github.
    J'en connais même certains qui font pareil pour vérifier la mise à jour de leurs plugins à chaque fois qu'on affiche la page de leurs configs.
    Pas cool, surtout si leurs serveurs rament.
  • Je n'avais même pas fait attention à ce détail, mais oui je suis d'accord, plus logique en vert si on a la dernière version et en rouge quand on n'est pas à jour.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Pour faire suite à ce qui est plus haut, j'ai envoyé un pull request sur Github.

    Si vous connaissez Git et que vous voulez tester, c'est la branche check_maj sur mon dépôt Github :
    [== bash ==]
    git clone --depth 1 -b check_maj https://github.com/bazooka07/PluXml.git
    
    C'est un bon exemple pour récupérer le numéro de la dernière release sur un dépôt Github avec Javascript.
    Cela se passe dans le fichier core/lib/checkMaj.js
  • Attention de ne pas dépendre d'une solution proprio unique. Pour rappel, pluxml était autrefois hébergé chez google (google code pour être exact), jusqu'à ce que le service ferme...
    Rien ne dit que Github ne fermera pas un jour, ou que les conditions de fonctionnement changeront.

    Je ne dis pas que la solution proposée par Bazooka est mauvaise, je dis juste qu'il faut se méfier de mettre tous ses oeufs dans le même panier.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    novembre 2017 modifié
    Pas de souci, mon ami :D

    Actuellement l'adresse pour connaitre le numéro de la dernière version de PluXml est ici :
    http://telechargements.pluxml.org/latest-version

    Le souci est que le site http://telechargements.pluxml.org ne sait pas répondre pour l'heure à une requête JSONP et que je n'en suis pas le webmaster.

    Pour faire la démo, j'ai recopié le fichier latest-version sur un serveur dont j'ai la maitrise :
    http://kazimentou.lan/divers/PluXml-download/latest-version

    A côté de ce modeste fichier de texte, le petit script php suivant va faire le job :
    [== index.php ==]
    <?php
    const FILENAME = 'latest-version';
    const TIMESTAMP_FORMAT = 'D, d M Y H:i:s';
    
    if(file_exists(FILENAME)) {
    
        header('Last-Modified: '.gmdate(TIMESTAMP_FORMAT, filemtime(FILENAME)).' GMT');
        header('Expires: 7200');
    
        if(isset($_GET['callback'])) {
            $callback = filter_input(INPUT_GET, 'callback', FILTER_SANITIZE_STRING);
            if(!empty($callback)) {
                // implementation JSONP
                header('Content-type: application/javascript; charset=utf-8');
                echo "$callback('";
                readfile(FILENAME);
                echo "');";
                exit;
            }
        }
    
        header('Content-Type: text/plain; charset=utf-8');
        readfile(FILENAME);
        exit;
    
    } else {
        header('HTTP/1.0 404 Not Found');
        header('Location: http://www.pluxml.org/');
    }
    ?>
    

    Il reste juste à écrire une modeste fonction de callback en javascript pour appeler un script js sur le serveur :
    [== test.html ==]
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    	<title>La dernière version de PluXml</title>
    	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
    </head>
    <body>
    	<p>
    		La version <span id="version">inconnue</span> de PluXml est en ligne (<em>d'après un script Javascript</em>).
    	</p>
    	<script type="text/javascript">
    		function process(data) {
    			'use script';
    			var idVersion = document.getElementById('version');
    			if(idVersion != null) {
    				var matches = data.match(/^(\d+\.\d+(?:\.\d+)?)$/);
    				if(matches != null) {
    					idVersion.textContent = matches[1];
    				} else {
    					console.log('Bad response from this server : ' + data)
    				}
    			} else {
    				console.log('#' + idVersion + ' element not found');
    			}
    		}
    	</script>
    	<script id="version-pluxml" type="text/javascript" src="http://kazimentou.fr/divers/PluXml-download?callback=process"></script>
    </body>
    </html>
    

    Pour éviter de recopier le code tu peux enregistrer la page suivante :
    http://kazimentou.lan/divers/PluXml-download/test.html

    Donc, vraiment rien de sorcier.

    Le jour où Github fermera, cela risque d'être la révolution vu le nombre de projets hébergés, surtout que de plus en plus d'entreprises y vont.

    L'intérêt de Github, c'est qu'il y a un serveur git qui est opensource.
    Après, c'est vrai qu'on ne sait pas trop ce qu'ils font des données qu'ils voient passer sur leurs radars.
Connectez-vous ou Inscrivez-vous pour répondre.