Changeset 107049 in spip-zone


Ignore:
Timestamp:
Oct 19, 2017, 11:40:48 AM (3 years ago)
Author:
marcimat@…
Message:

Cette nouvelle version du loader offre 2 choses :

  • un sélecteur de branche pour choisir la branche de mise à jour souhaitée. (>= à la version de notre SPIP déjà éventuellement installé).
  • une définition différente des déclarations de branches dans le loader.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • _outils_/spip_loader/trunk/spip_loader.php

    r107048 r107049  
    2121# toutes les constantes ci-dessous peuvent etre surchargees
    2222# dans config/mes_options.php
    23 #
    24 # decommenter la ligne ci-dessous
    25 # pour charger la version de developpement (nightly build SVN)
    26 # et commenter la ligne de telechargement de la version STABLE
    27 # define('_CHEMIN_FICHIER_ZIP', 'spip/dev/SPIP-svn.zip');
    28 
    29 # decommenter la ligne ci-dessous
    30 # pour charger la version stable de la branche 2.1
    31 # et commenter la ligne de telechargement de la version STABLE
    32 # define('_CHEMIN_FICHIER_ZIP', 'spip/stable/spip-2.1.zip');
    33 
    34 # decommenter la ligne ci-dessous
    35 # pour charger la version stable de la branche 3.0
    36 # et commenter la ligne de telechargement de la version STABLE
    37 # define('_CHEMIN_FICHIER_ZIP', 'spip/stable/spip-3.0.zip');
    38 
    39 # decommenter la ligne ci-dessous
    40 # pour charger la version stable de la branche 3.1
    41 # et commenter la ligne de telechargement de la version STABLE
    42 # define('_CHEMIN_FICHIER_ZIP', 'spip/stable/spip-3.1.zip');
    43 
    44 # Chemin du paquet de la version STABLE a telecharger
    45 # pointe sur une branche donnee pour eviter les changements de branche involontaires et violents
    46 define('_CHEMIN_FICHIER_ZIP', 'spip/stable/spip-3.2.zip');
     23#
     24# Si la constante _CHEMIN_FICHIER_ZIP est définie, alors ce zip sera utilisé.
     25# Sinon, déclarez simplement la branche souhaitée.
     26
     27##### Branche utilisée pour la mise à jour
     28# Au choix parmi la liste des branches déclarées dessous ('dev', '3.2', '3.1', ...)
     29define('_DEFAUT_BRANCHE_MAJ', '3.2');
     30
     31/**
     32 * Liste des branches possibles
     33 * (avec l’adresse du zip et la version minimale de PHP)
     34 *
     35 * @param string|null $branche
     36 *     Pour retourner l’info d’une branche spécifique
     37 * @return array|false Descriptif des branches, ou d’une seule branche
     38 */
     39function lister_branches_proposees($branche = null) {
     40        $branches = array(
     41                'dev' => array(
     42                        'zip' => 'spip/dev/SPIP-svn.zip',
     43                        'php' => '5.4.0',
     44                ),
     45                '3.2' => array(
     46                        'zip' => 'spip/stable/spip-3.2.zip',
     47                        'php' => '5.4.0',
     48                ),
     49                '3.1' => array(
     50                        'zip' => 'spip/stable/spip-3.1.zip',
     51                        'php' => '5.1.0',
     52                ),
     53                '3.0' => array(
     54                        'zip' => 'spip/stable/spip-3.0.zip',
     55                        'php' => '5.1.0',
     56                ),
     57                '2.1' => array(
     58                        'zip' => 'spip/stable/spip-2.1.zip',
     59                        'php' => '4.0.8',
     60                ),
     61        );
     62
     63        if (!is_null($branche)) {
     64                return isset($branches[$branche]) ? $branches[$branche] : false;
     65        }
     66        return $branches;
     67}
     68
     69/* Notre branche de destination du coup (du moins si la constante _CHEMIN_FICHIER_ZIP n’est pas forcée) */
     70$notre_branche = lister_branches_proposees(_DEFAUT_BRANCHE_MAJ);
     71if (!$notre_branche) {
     72        die("Mauvaise définition de la constante _DEFAUT_BRANCHE_MAJ. <code>Branche " . _DEFAUT_BRANCHE_MAJ . " inconnue</code>");
     73}
     74
     75
     76if (!defined('_CHEMIN_FICHIER_ZIP')) {
     77        define('_CHEMIN_FICHIER_ZIP', $notre_branche['zip']);
     78} else {
     79        // éviter d’afficher le sélecteur de branche dans ces cas là.
     80        define('_CHEMIN_FICHIER_ZIP_FORCEE', true);
     81}
    4782
    4883# Adresse des librairies necessaires a spip_loader
     
    77112// v 2.5 : affichage de la version à installer, de la version déjà installée (si elle existe),
    78113//                 compatibilite PHP, loader obsolete
    79 // v 2.7 : on télécharge maintenant SPIP 3.1
    80114// v 2.5.10 : on télécharge maintenant SPIP 3.2
    81115// v 2.5.11 : coquille empechant des mises à jour
    82 define('_SPIP_LOADER_VERSION', '2.5.11');
    83 #
     116// v 2.6.0 : déclaration simplifiée des branches / zips + sélecteur de branche
     117define('_SPIP_LOADER_VERSION', '2.6.0');
     118
     119
    84120#######################################################################
    85121
     
    118154);
    119155
    120 // Configuration des versions minimales de PHP en fonction des branches SPIP
    121 $versions_php = array(
    122         '2.1' => '4.0.8',
    123         '3.0' => '5.1.0',
    124         '3.1' => '5.1.0',
    125         '3.2' => '5.4.0',
    126         'dev' => '5.4.0',
    127 );
    128 
    129156// Url du fichier archivelist permettant de créer les zips de spip
    130157define('_URL_ARCHIVELIST', 'https://core.spip.org/projects/spip/repository/raw/archivelist.txt');
     
    323350}
    324351
     352/**
     353 * Affiche un sélecteur de menu pour choisir le zip (la branche) à utiliser.
     354 *
     355 * @param array $branches Liste des branches…
     356 */
     357function menu_branches($active, $version_installee) {
     358        $select = '';
     359        if (!defined('_CHEMIN_FICHIER_ZIP_FORCEE')) {
     360                $script = _DIR_BASE . _SPIP_LOADER_SCRIPT . '?';
     361                $select .= "<div style='float:" . $GLOBALS['spip_lang_right'] . "'>";
     362                $select .= '<select name="chemin" onchange="window.location=\'' . $script . 'chemin=\'+this.value;">';
     363                foreach (lister_branches_proposees() as $branche => $desc) {
     364                        if ($branche == 'dev' or !$version_installee or version_compare(branche_spip($version_installee), $branche, '<=')) {
     365                                $select .= '<option value="' . $desc['zip'] . '"' . ($active == $desc['zip'] ? ' selected="selected"' : '') . '>'
     366                                        . 'SPIP ' . $branche
     367                                        . "</option>\n";
     368                        }
     369                }
     370                $select .= '</select> <noscript><div><input type="submit" name="ok" value="ok" /></div></noscript>';
     371                $select .= '</div>';
     372        }
     373        return $select;
     374}
     375
    325376
    326377//
     
    859910
    860911function spip_presente_deballe($fichier, $paquet, $dest, $range) {
    861         global $version_installee, $versions_php;
     912        global $version_installee;
    862913
    863914        $nom = (_DEST_PAQUET_ZIP == '') ?
     
    866917                                ' <tt>'._DEST_PAQUET_ZIP.'</tt>');
    867918
    868         $hidden = array('chemin' => $paquet,
    869                         'dest' => $dest,
    870                         'range' => $range,
    871                         'etape' => file_exists($fichier) ? 'fichier' : 'charger');
     919        $hidden = array(
     920                'chemin' => $paquet,
     921                'dest' => $dest,
     922                'range' => $range,
     923                'etape' => file_exists($fichier) ? 'fichier' : 'charger'
     924        );
    872925
    873926        // Version proposée à l'installation par défaut
    874927        $versions_spip = lister_versions_spip();
    875         $version_future = $versions_spip[_CHEMIN_FICHIER_ZIP]['version'];
    876         if ($versions_spip[_CHEMIN_FICHIER_ZIP]['etat'] == 'dev') {
     928        $version_future = $versions_spip[$paquet]['version'];
     929        if ($versions_spip[$paquet]['etat'] == 'dev') {
    877930                $version_future .= '-dev';
    878931        }
     
    894947
    895948        // Détection d'une incompatibilité avec la version de PHP installée
    896         $branche_future = branche_spip($versions_spip[_CHEMIN_FICHIER_ZIP]['version']);
     949        $branche_future = branche_spip($versions_spip[$paquet]['version']);
    897950        $version_php_installee = phpversion();
    898         $version_php_spip = $versions_php[$branche_future];
     951        $version_php_spip = lister_branches_proposees($branche_future);
     952        $version_php_spip = $version_php_spip['php'];
     953
    899954        $php_incompatible = version_compare($version_php_spip, $version_php_installee, '>');
    900955
     
    925980                . _TT('tradloader:titre_version_future')
    926981                . '<strong>'. $version_future_affichee. '</strong>'
     982                . menu_branches($paquet, $version_installee)
    927983                . '</div>'
    928984                . '</div>'
Note: See TracChangeset for help on using the changeset viewer.