Changeset 61478 in spip-zone


Ignore:
Timestamp:
May 21, 2012, 12:02:47 PM (7 years ago)
Author:
patfr@…
Message:

Fichiers distants : prise en compte du préfixe
Installation et MAJ du Couteau Suisse : plus bavarde sous SPIP3 et possibilités de mises à jour forcée des fichiers distants d'un outil
Mises à jour automatiques : liste des plugins vérouillés (ex-extensions)
+ en attendant d'utiliser SVP, retour de la méthode SPIP2 de mise à jour

Location:
_plugins_/couteau_suisse
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/config_outils.php

    r61448 r61478  
    13261326));
    13271327
    1328 add_outil(defined('_SPIP20100')?array(
     1328$cs_temp = defined('_SPIP30000')?array(
     1329        'distant_action' => 'http://core.spip.org/projects/spip/repository/raw/branches/spip-2.1/ecrire/action/charger_plugin.php',
     1330        'distant_inc' => 'http://core.spip.org/projects/spip/repository/raw/branches/spip-2.1/ecrire/inc/charger_plugin.php',
     1331):(defined('_SPIP20100')?array():array(
     1332        'version-min' => '1.9300',
     1333        'distant' => 'http://core.spip.org/projects/spip/repository/raw/branches/spip-2.1/ecrire/genie/mise_a_jour.php',
     1334));
     1335add_outil(array_merge(array(
    13291336        'id' => 'maj_auto',
    13301337        'categorie' => 'securite',
    13311338        'contrib' => 3223,
    1332 ):array(
    1333         'id' => 'maj_auto',
    1334         'categorie' => 'securite',
    1335         'version-min' => '1.9300',
    1336         'contrib' => 3223,
    1337         'distant' => 'http://core.spip.org/projects/spip/repository/raw/branches/spip-2.1/ecrire/genie/mise_a_jour.php',
    1338 ));
     1339), $cs_temp));
    13391340
    13401341// reglage des differents selecteurs en partie privee
  • _plugins_/couteau_suisse/cout_lancement.php

    r57990 r61478  
    8686                        unset($metas_outils[$nom]);
    8787        ecrire_meta('tweaks_actifs', serialize($metas_outils));
    88         ecrire_metas();
     88        ecrire_metas(); # Pour SPIP 1.92
    8989        // stocker les types de variables declarees
    9090        global $cs_variables;
     
    110110        // sauver la configuration
    111111        cs_sauve_configuration();
     112if($log) cs_log("$rand -- ecriture metas");
    112113        // en metas : outils actifs
    113 if($log) cs_log("$rand -- ecriture metas");
    114114        ecrire_meta('tweaks_actifs', serialize($metas_outils));
    115115        // en metas : variables d'outils
     
    117117        // en metas : code inline pour les pipelines, mes_options et mes_fonctions;
    118118        ecrire_meta('tweaks_pipelines', serialize($cs_metas_pipelines));
    119         ecrire_metas();
     119        // maj forcee des fichiers distants ?
     120        $test = 0;
     121        foreach($metas_outils as $nom=>$o)
     122                if(isset($o['actif']) && $o['actif'] && isset($o['maj_distant']) && $o['maj_distant']) {
     123                        cs_action_fichiers_distants($outils[$nom], true, true);
     124                        $metas_outils[$nom]['maj_distant'] = 0;
     125                        $test = 1;
     126                }
     127        if($test) ecrire_meta('tweaks_actifs', serialize($metas_outils));
     128        ecrire_metas(); # Pour SPIP 1.92
    120129        $GLOBALS['cs_init'] = 0;
    121130if($log) cs_log("{$rand}cs_initialisation($forcer) : Sortie");
  • _plugins_/couteau_suisse/cout_utils.php

    r54758 r61478  
    208208}
    209209
     210// basename sans argument
     211function cs_basename($file, $suffix=null) {
     212        preg_match('/[^?]*/', $file, $reg);
     213        return basename($reg[0], $suffix);
     214}
     215
    210216// est-ce que $pipe est un pipeline ?
    211217function is_pipeline_outil($pipe, &$set_pipe) {
     
    347353        @define('_CS_HIT_EXTERNE', 1500);
    348354        // inclure d'office outils/couteau_suisse_fonctions.php
    349         if($temp=cs_lire_fichier_php("outils/cout_fonctions.php"))
     355        if($temp = cs_lire_fichier_php("outils/cout_fonctions.php"))
    350356                $infos_fichiers['code_fonctions'][] = $temp;
    351357        // variable de verification
     
    376382                                        if(find_in_path("outils/$inc.php"))
    377383                                                $infos_pipelines[$pipe2]['inclure'][] = "outils/$inc";
    378                                         if(isset($outil['distant_pipelines']) && find_in_path("lib/$inc/distant_".basename($outil['distant_pipelines'])))
    379                                                 $infos_pipelines[$pipe2]['inclure'][] = "lib/$inc/distant_".basename($outil['distant_pipelines'],'.php');
     384                                        // inclusion du fichier des pipelines distants. TODO : inclusion mieux ciblee
     385                                        if(isset($outil['distant_pipelines']))
     386                                                $infos_pipelines[$pipe2]['inclure'][] = "lib/$inc/distant_pipelines_".cs_basename($outil['distant_pipelines'], '.php');
    380387                                        // fonction a appeler
    381388                                        $infos_pipelines[$pipe2]['fonction'][] = $fonc;
     
    394401                                if($file=find_in_path("outils/$inc.$f.html")) { lire_fichier($file, $ff); ${'temp_'.$f.'_html'}[] = $ff; }
    395402                                // TODO : librairies distantes placees dans lib/
    396 /*                              if(isset($outil['distant_'.$type]) && ($file=find_in_path("lib/$inc/distant_{$f}_".basename($outil["distant_$f"])))) etc. */
     403/*                              if(isset($outil['distant_'.$f]) && ($file=find_in_path("lib/$inc/distant_{$f}_".cs_basename($outil["distant_$f"])))) etc. */
    397404                        }
    398405                        // recherche d'un code inline eventuellement propose
     
    408415                        foreach(array('options', 'fonctions') as $f) {
    409416                                if($temp=cs_lire_fichier_php("outils/{$inc}_{$f}.php")) $infos_fichiers['code_'.$f][] = $temp;
    410 /*                              if(isset($outil['distant_'.$f]) && find_in_path("lib/$inc/distant_{$f}_".basename($outil["distant_$f"])))
     417/*                              if(isset($outil['distant_'.$f]) && find_in_path("lib/$inc/distant_{$f}_".cs_basename($outil["distant_$f"])))
    411418                                        if($temp=cs_lire_fichier_php("lib/$inc/distant_{$f}_$outil[distant_$f].php"))
    412419                                                $infos_fichiers['code_'.$f][] = $temp;
  • _plugins_/couteau_suisse/couteau_suisse_administrations.php

    r53934 r61478  
    5757// installation des tables du plugin et mises a jour
    5858function couteau_suisse_upgrade($nom_meta_base_version, $version_cible){
    59 if(defined('_LOG_CS')) cs_log("cout_upgrade($nom_meta_base_version, $version_cible)");
     59if(defined('_LOG_CS')) cs_log("cout_upgrade : $nom_meta_base_version => $version_cible");
    6060        $current_version = 0.0;
    6161        if(     (!isset($GLOBALS['meta'][$nom_meta_base_version]))
     
    9090                        ecrire_meta($nom_meta_base_version, $current_version=$tmp);
    9191                }
    92                 if (version_compare($current_version, $tmp='1.1','<')){
     92                if (version_compare($current_version, $tmp='1.2','<')){
    9393                        echo '<h4>',_T('couteau:titre'),' - Upgrade ',$tmp,'</h4>';
    9494                        effacer_meta('tweaks_contribs');
     95                        // MAJ forcee de certains fichiers distants
     96                        $outils = isset($GLOBALS['meta']['tweaks_actifs'])?unserialize($GLOBALS['meta']['tweaks_actifs']):array();
     97                        $outils['previsualisation']['maj_distant'] = 1;
     98                        $outils['masquer']['maj_distant'] = 1;
     99                        $outils['maj_auto']['maj_distant'] = 1;
     100                        ecrire_meta('tweaks_actifs', serialize($outils));
    95101                        ecrire_meta($nom_meta_base_version, $current_version=$tmp);
    96102                }
    97                 ecrire_metas();
     103                ecrire_metas(); # Pour SPIP 1.92
    98104        }
    99105}
  • _plugins_/couteau_suisse/couteau_suisse_options.php

    r61439 r61478  
    285285}
    286286
     287if(defined('_SPIP30000')) {
     288// Compatibilite temporaire, methode SPIP2 pour SPIP3
     289function action_charger_plugin() {
     290//      include_spip('inc/minipres'); die(minipres('Partie en développement.<br/>Mettre &agrave; jour votre plugin prochainement.'));
     291        // extraction automatique
     292        //$_POST['extract'] = 'oui';
     293        // lancement de la maj
     294        if(include_spip('lib/maj_auto/distant_action_charger_plugin') && include_spip('lib/maj_auto/distant_inc_charger_plugin'))
     295                action_charger_plugin_dist();
     296}}
     297
    287298?>
  • _plugins_/couteau_suisse/exec/admin_couteau_suisse.php

    r54140 r61478  
    130130                cout_exec_redirige(strlen($outil)?"cmd=descrip&outil=$outil#cs_infos":'');
    131131        }
    132 //      else
    133 //              verif_outils();
    134132
    135133        $t = charger_fonction('commencer_page', 'inc');
     
    156154                // mises a jour eventuelles de la base
    157155                $installer_plugins = charger_fonction('installer', 'plugins');
    158                 /*$infos = */$installer_plugins('couteau_suisse', 'install');
     156                $infos = $installer_plugins('couteau_suisse', 'install');
     157                if($infos && $infos['install_test'])
     158                         echo $infos['install_test'][1], '<p style="color:red;">',
     159                                _T($infos['install_test'][0]?'plugin_info_install_ok':'avis_operation_echec'), '<br>', couteauprive_T('rafraichir'), '</p>';
     160                unset($infos);
    159161                parse_str(parametres_css_prive(), $paramcss);
    160162        } else {
  • _plugins_/couteau_suisse/inc/cs_outils.php

    r54758 r61478  
    212212        if(isset($outil['fichiers_distants'])) {
    213213                $a = array();
    214                 foreach($outil['fichiers_distants'] as $i) $a[] = basename($outil[$i]);
     214                foreach($outil['fichiers_distants'] as $i) $a[] = cs_basename($outil[$i]);
    215215                $details[] = _T('couteauprive:detail_fichiers_distant') . ' ' . join(', ', $a);
    216216        }
     
    246246        return '';
    247247}
    248 
    249248// gere les fichiers distants d'un outil
    250249function cs_action_fichiers_distants(&$outil, $forcer=false, $tester=false) {
     
    257256                $res_pipe = '';
    258257                $dir = sous_repertoire($lib, $outil['id']);
    259                 // retrait des arguments
    260                 preg_match('/[^?]*/', basename($outil[$i]), $reg);
    261                 $f = 'distant_' . $reg[0];
     258                // prefixe et basename sans arguments
     259                preg_match('/[^:]*/', $i, $reg);
     260                $f = $reg[0] . '_' . cs_basename($outil[$i]);
    262261                // 1er appel : envoi du nom du fichier
    263262                $file = pipeline('fichier_distant', array('outil'=>$outil['id'], 'actif'=>$actif, 'fichier_local'=>$dir.$f));
    264263                $file = $file['fichier_local'];
    265                 $f = basename($file);
    266264                $size = ($forcer || @(!file_exists($file)) ? 0 : filesize($file));
    267265                if($size) $statut = _T('couteauprive:distant_present', array('date'=>cs_date_long(date('Y-m-d H:i:s', filemtime($file)))));
     
    277275                                if(preg_match(',\.php\d?$,', $file)) {
    278276                                        $test = preg_replace(',^.*?\<\?php|\?\>.*?$,', '', $distant);
    279                                         if(!@eval("return true; $test")) $distant = false;
     277                                        if(!@eval("return true; ". preg_replace(',function\s+\w+,','\\0_zz',$test))) $distant = false;
    280278                                        else $distant = ecrire_fichier($file, '<'."?php\n\n".trim($test)."\n\n?".'>');
    281279                                } else
     
    285283                        else $erreur = $statut = '<span style="color:red">'._T('couteauprive:distant_echoue').'</span>';
    286284                } else $erreur = $statut = _T('couteauprive:distant_inactif');
    287                 $a[] = "[{$f}->{$outil[$i]}]\n_ ".$statut.$message;
     285                $a[] = '[{'.basename($file)."}->{$outil[$i]}]\n_ ".$statut.$message;
    288286        }
    289287        if($tester) return $a;
  • _plugins_/couteau_suisse/lang/couteauprive_fr.php

    r61256 r61478  
    99        '2pts_non' => ' : non',
    1010        '2pts_oui' => ' : oui',
     11        'rafraichir' => 'Afin de terminer la configuration du plugin, merci d\'actualiser la page courante.',
    1112
    1213        // S
  • _plugins_/couteau_suisse/outils/maj_auto_action_rapide.php

    r59861 r61478  
    9191        include_spip('inc/plugin');
    9292        $plugins_actifs = array_values(liste_chemin_plugin_actifs());
    93         // liste des extensions dispo sous SPIP 2.1
    94         $plugins_extensions = defined('_SPIP20100')?array_values(liste_chemin_plugin_actifs(_DIR_EXTENSIONS)):array();
     93        // liste des extensions dispo sous SPIP >= 2.1
     94        if(defined('_DIR_EXTENSIONS')) define('_DIR_PLUGINS_DIST', _DIR_EXTENSIONS); // compat pour SPIP 2.1
     95        $plugins_extensions = defined('_SPIP20100')?array_values(liste_chemin_plugin_actifs(_DIR_PLUGINS_DIST)):array();
    9596        // tous, mais les actifs d'abord...
    9697        $plugins = array_unique(array_merge($plugins_actifs, $plugins_extensions, liste_plugin_files()));
     
    100101                $extension = in_array($p, $plugins_extensions, true);
    101102                $auto = preg_match(',^auto/,', $p);
    102                 $infos = plugin_get_infos_maj($p, $stop=time()-$time>$timeout, $extension?_DIR_EXTENSIONS:_DIR_PLUGINS);
     103                $infos = plugin_get_infos_maj($p, $stop=time()-$time>$timeout, $extension?_DIR_PLUGINS_DIST:_DIR_PLUGINS);
    103104                $maj_lib = $checked = '';
    104105                if($stop)
     
    142143                . propre(
    143144                        (count($html_actifs)? "\n|{{" . _T('couteau:plug_actifs') . "<span id='maj_1'" . $sep . join("\n",$html_actifs) . "\n" : '')
    144                         . (count($html_extensions)? "\n|{{" . _T('plugins_liste_extensions') . "<span id='maj_2'". $sep . join("\n",$html_extensions) . "\n" : '')
     145                        . (count($html_extensions)? "\n|{{" . _T(defined('_SPIP30000')?'plugins_liste_dist':'plugins_liste_extensions') . "<span id='maj_2'". $sep . join("\n",$html_extensions) . "\n" : '')
    145146                        . (count($html_inactifs)? "\n|{{" . _T('couteau:plug_inactifs') . "<span id='maj_3'". $sep . join("\n",$html_inactifs) . "\n" : '')
    146147                  )
  • _plugins_/couteau_suisse/paquet.xml

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

    r61439 r61478  
    33        <slogan>... ou plus de fonctionnalit&#233;s pour SPIP !</slogan>
    44        <icon>img/couteau-50.gif</icon>
    5         <version>1.8.64</version>
    6         <version_base>1.1</version_base>
     5        <version>1.8.65</version>
     6        <version_base>1.2</version_base>
    77        <auteur>Patrice Vanneufville
    88_ &#169; 2007-2011 - Distribu&#233; sous licence GPL
Note: See TracChangeset for help on using the changeset viewer.