Changeset 65347 in spip-zone


Ignore:
Timestamp:
Aug 28, 2012, 12:46:10 AM (7 years ago)
Author:
patfr@…
Message:

MAJ auto : mode réparation compatible SPIP3
Une demande de mise à jour d'un plugin n'ayant pas de nouvelle version disponible (nouvelle release ou non) provoque le remplacement de ses fichiers.
+ Rajeunissement des librairies de SPIP2 ('icon' devenue 'logo', et mode return dans redirection brutale apres decompression d'archive)

Location:
_plugins_/couteau_suisse
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/config_outils.php

    r65149 r65347  
    14701470        'categorie' => 'securite',
    14711471        'contrib' => 3223,
     1472        'pipelinecode:fichier_distant' => defined('_SPIP30000')
     1473                ?'// rajeunissement pour SPIP3 (2e appel du pipeline)
     1474if($flux["outil"]=="maj_auto" && isset($flux["texte"]) && strpos($flux["fichier_distant"],"action/charger_plugin.php")!==false)
     1475        $flux["texte"] = str_replace(array("\'icon\'","include_spip(\'inc/install\');"), array("\'logo\'", "if(_request(\'cs_retour\')) return array(\'nom\'=>\$retour, \'suite\'=>\$suite, \'fichier\'=>\$fichier, \'tmp\'=>\$status[\'tmpname\']);\n\tinclude_spip(\'inc/install\');"), $flux["texte"]);':'',
    14721476), $cs_temp));
    14731477
  • _plugins_/couteau_suisse/couteau_suisse_administrations.php

    r65149 r65347  
    104104                        effacer_meta('tweaks_contribs');
    105105                        // MAJ forcee de tous les fichiers distants
    106                         cs_maj_forcee(array('ecran_securite', 'masquer', 'jcorner', 'previsualisation', 'maj_auto'));
     106                        cs_maj_forcee(array('ecran_securite', 'masquer', 'jcorner', 'previsualisation'));
     107                        ecrire_meta($nom_meta_base_version, $current_version=$tmp);
     108                }
     109                if (cs_le_test($current_version, $tmp, '1.8')){
     110                        // MAJ pour rajeunissement
     111                        cs_maj_forcee(array('maj_auto'));
    107112                        ecrire_meta($nom_meta_base_version, $current_version=$tmp);
    108113                }
  • _plugins_/couteau_suisse/couteau_suisse_options.php

    r65281 r65347  
    291291// Utilise par maj_auto et le CS lui-meme pour mettre a jour les plugins (ou les paquets de SVP)
    292292function action_charger_plugin() {
    293 #       include_spip('inc/minipres'); die(minipres('Partie en développement.<br/>Mettre &agrave; jour votre plugin prochainement.'));
     293#       include_spip('inc/minipres'); die(minipres('Partie en d&eacute;veloppement.<br/>Mettre &agrave; jour votre plugin prochainement.'));
    294294        if(is_array($ids_paquet = _request('ids_paquet'))) {
    295295                // il s'agit d'une liste de paquets, on donne la main a SVP (SPIP >= 3.0)
     
    297297                maj_auto_svp_maj_plugin($ids_paquet);
    298298        }
    299         elseif(is_numeric($id_paquet = _request('url_zip_plugin2'))) {
     299        elseif(intval($id_paquet = _request('url_zip_plugin2'))) {
    300300                // il s'agit d'un paquet, on donne la main a SVP (SPIP >= 3.0)
    301301                include_spip('outils/maj_auto_action_rapide');
  • _plugins_/couteau_suisse/exec/admin_couteau_suisse.php

    r65295 r65347  
    235235        echo pipeline('affiche_droite',array('args'=>array('exec'=>$exec),'data'=>'')),
    236236                debut_droite('', true),
    237                 ($outil<>'maj_auto' && defined('_SPIP30000') && include_spip('exec/admin_plugin'))?svp_presenter_actions_realisees():'',
     237                ($outil<>'maj_auto' && include_spip('outils/maj_auto_action_rapide'))?maj_auto_svp_presenter_messages():'',
    238238                debut_cadre_trait_couleur(find_in_path('img/couteau-24.gif'),true,'','&nbsp;'.couteauprive_T('outils_liste')),
    239239                '<div class="titrem cs_intros">', couper($t = couteauprive_T('outil_intro'), 50),
     
    294294                include_spip('outils/maj_auto_action_rapide');
    295295                maj_auto_svp_query($dir, $infos);
    296                 if($infos['id_paquet']) $zip = $infos['id_paquet'].'.'.$infos['id_depot'];
     296                if($infos['id_paquet']) $zip = $infos['id_paquet'].':'.$infos['id_depot'].':'.$dir.':'.$zip;
    297297        }
    298298        // si le plugin est installe par procedure automatique, on permet la mise a jour directe (SPIP >= 2.0)
  • _plugins_/couteau_suisse/outils/maj_auto_action_rapide.php

    r65295 r65347  
    157157        $plugins = array_unique(array_merge($plugins_actifs, $plugins_extensions, liste_plugin_files()));
    158158        $html_actifs = $html_inactifs = $html_extensions = array();
    159         if(defined('_SPIP30000')) {
    160                 include_spip('exec/admin_plugin');
    161                 echo svp_presenter_actions_realisees();
    162         }
     159        echo maj_auto_svp_presenter_messages();
    163160        foreach ($plugins as $p) {
    164161                $actif = in_array($p, $plugins_actifs, true);
     
    196193                $bouton = '&nbsp;';
    197194                if(!$stop) {
    198                         if(/*$infos['maj_dispo'] &&*/ $id_paquet) // bouton pour SVP
    199                                 $bouton = "<input type='radio' value='$id_paquet.$infos[id_depot]'$checked name='$arg_chargeur'/><br/><input type='checkbox' class='checkbox select_plugin' name='ids_paquet[]' value='$id_paquet.$infos[id_depot]'>";
    200                         elseif($auto) $bouton = strlen($infos['zip_trac'])
     195                        if(/*$infos['maj_dispo'] &&*/ $id_paquet) {
     196                                // format des donnees en sortie
     197                                $bouton = $id_paquet.':'.$infos['id_depot'].':'.$p.':'.$infos['zip_trac'];
     198                                // 1 radio (MAJ unique) et 1 checkbox (MAJ multiple) pour SVP
     199                                $bouton = "<input type='radio' value=\"$bouton\"$checked name='$arg_chargeur'/><br/><input type='checkbox' class='checkbox select_plugin' name='ids_paquet[]' value=\"$bouton\">";
     200                        } elseif($auto) $bouton = strlen($infos['zip_trac'])
    201201                                ?"<input type='radio' value='$infos[zip_trac]'$checked name='$arg_chargeur'/>"
    202202                                :'<center style="margin-top:0.6em;font-weight:bold;"><acronym title="'._T('couteau:maj_zip_ko').'">&#63;</acronym></center>';
     
    234234}
    235235
     236function maj_auto_svp_presenter_messages() {
     237        if(!defined('_SPIP30000')) return;
     238        // presenter d'abord les messages de SVP
     239        include_spip('exec/admin_plugin');
     240        $res = svp_presenter_actions_realisees();
     241        // puis ceux du CS s'il y en a
     242        if(!@file_exists($f=_DIR_TMP.'cs_messages.txt')) return $res;
     243        lire_fichier($f, $messages);
     244        $messages = unserialize($messages);
     245        include_spip('inc/filtres_boites');
     246        foreach(array('ok'=>array('svp:actions_realises','success'),
     247                        'fail'=>array('svp:actions_en_erreur','error'),
     248                        'notice'=>array('info_avertissement','notice')) as $k=>$v)
     249                if($messages[$k]) {
     250                        $tmp = '<ul>';
     251                        foreach($messages[$k] as $i) $tmp .= "<li>$i</li>";
     252                        $res .= boite_ouvrir(_T($v[0]), $v[1]) . $tmp. '</ul>' . boite_fermer();
     253                }
     254        spip_unlink($f);
     255        return $res;
     256}
     257                       
    236258// renvoie le pattern present dans la page distante
    237259// si le pattern est NULL, renvoie un simple 'is_file_exists'
     
    339361// fonction manipulant les fonctions CVT de SVP (cf. svp/formulaires/admin_plugin.php)
    340362function maj_auto_svp_maj_plugin($ids_paquet=array()) {
    341 /*      // actualiser la liste des paquets locaux systematiquement
    342         include_spip('inc/svp_depoter_local');
    343         // sans forcer tout le recalcul en base
    344         svp_actualiser_paquets_locaux(false, $foo);*/
    345 
    346         $actions = $depots = $messages = $retour = array();
     363        if(!count($ids_paquet)) return;
     364        $actions = $depots = $messages = $retour = $requests = $cs_messages = array();
     365        // donnees du formulaire recues sous la forme id_paquet:id_depot:plugin:archive
    347366        foreach ($ids_paquet as $i)     {
    348                 list($p, $d) = explode('.', $i);
    349                 $actions[$p] = 'up';
    350                 $depots[$d] = 1;
     367                $p = explode(':', $i, 4);
     368                $requests[$p[0]] = $p;
     369                $actions[$p[0]] = 'up';
     370                $depots[$p[1]] = 1;
    351371        }
    352372        // actualiser la liste des paquets distants
    353         // ici une demande manuelle de mise a jour est demandee, autant etre sur
     373        // ici une demande manuelle de mise a jour est demandee, autant etre sur...
    354374        include_spip('inc/svp_depoter_distant');
    355375        foreach($depots as $k=>$v) svp_actualiser_depot($k);
    356 
    357376        // lancer les verifications
    358         if(count($actions)) {
     377        if(count($actions0 = $actions)) {
    359378                // faire appel au decideur pour determiner la liste exacte des commandes apres
    360379                // verification des dependances
     
    362381                svp_decider_verifier_actions_demandees($actions, $messages);
    363382        } else
    364                 $messages['decideur_erreurs'][] = _T('svp:message_erreur_aucun_plugin_selectionne');
     383                $cs_messages['notice'][] = _T('svp:message_erreur_aucun_plugin_selectionne');
    365384        if(!count($messages['decideur_erreurs'])) {
    366                 // recuperer les actions puis les envoyer a l'actionneur
     385                // recuperer les actions validees par le decideur
    367386                $actions = unserialize(_request('_todo'));
    368                 if(!count($actions))
    369                         $messages['decideur_actions'][] = _T('svp:message_erreur_aucun_plugin_selectionne');
     387                if(count($rejets = array_diff(array_keys($actions0), array_keys($actions)))) {
     388                        // probablement une action de reparation ou de MAJ de release sans changement de version
     389                        // dans ce cas, on remplace simplement les anciens fichiers du plugin (methode SPIP2)
     390                        if(include_spip('lib/maj_auto/distant_action_charger_plugin') && include_spip('lib/maj_auto/distant_inc_charger_plugin'))
     391                                foreach($rejets as $p) if($requests[$p][3]) {
     392                                        set_request('url_zip_plugin2', $requests[$p][3]);
     393                                        set_request('cs_retour', 'oui');
     394                                        $retour = action_charger_plugin_dist();
     395                                        if($retour['suite'] && is_dir($retour['tmp'])) {
     396                                                // deplacement de l'archive dezipee a son emplacement definitif
     397                                                $dest = _DIR_PLUGINS . $requests[$p][2];
     398                                                if(is_dir($old=$dest.'.old')) supprimer_repertoire($old);
     399                                                rename($dest, $old);
     400                                                rename($retour['tmp'], $dest);
     401                                                spip_unlink($retour['fichier']);
     402                                                $cs_messages['ok'][] = ("Le plugin « $retour[nom] » n'a pas changé de version, mais ses fichiers ont quand même été actualisés.");
     403                                        } else
     404                                                $cs_messages['fail'][] = ('Le fichier « '.$requests[$p][3].' » est introuvable !');
     405                                } else
     406                                        $cs_messages['fail'][] = ('Librairies introuvables !');
     407                } else
     408                        $cs_messages['fail'] = array_merge($messages['decideur_erreurs'], $cs_messages['fail']);
     409                // sauvegarde des messages
     410                if(count($cs_messages))
     411                        ecrire_fichier(_DIR_TMP . 'cs_messages.txt', serialize($cs_messages));
     412                // envoyer les actions validees a l'actionneur
    370413                include_spip('inc/svp_actionner');
    371414                svp_actionner_traiter_actions_demandees($actions, $retour, $redirect);
    372415                $action = charger_fonction('actionner', 'action');
    373                 $action();
     416                $action(); // et hop, action et redirection !
    374417        }
    375418        include_spip('inc/headers');
  • _plugins_/couteau_suisse/paquet.xml

    r65282 r65347  
    22        prefix="couteau_suisse"
    33        categorie="maintenance"
    4         version="1.8.95"
     4        version="1.8.96"
    55        etat="stable"
    66        compatibilite="[1.9.2;3.0.99]"
    77        logo="img/couteau-50.gif"
    8         schema="1.7"
     8        schema="1.8"
    99        documentation="http://www.spip-contrib.net/Le-Couteau-Suisse"
    1010>       
  • _plugins_/couteau_suisse/plugin.xml

    r65282 r65347  
    33        <slogan>... ou plus de fonctionnalit&#233;s pour SPIP !</slogan>
    44        <icon>img/couteau-50.gif</icon>
    5         <version>1.8.95</version>
    6         <version_base>1.7</version_base>
     5        <version>1.8.96</version>
     6        <version_base>1.8</version_base>
    77        <auteur>Patrice Vanneufville
    88_ &#169; 2007-2012 - Distribu&#233; sous licence GPL
Note: See TracChangeset for help on using the changeset viewer.