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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _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;
Note: See TracChangeset for help on using the changeset viewer.