diff --git a/ecrire/exec/admin_plugin.php b/ecrire/exec/admin_plugin.php index fae1f43275b048ff20478edbe581433c02036848..3d2bd7e121c564481cb35cd231138aeb026caa96 100644 --- a/ecrire/exec/admin_plugin.php +++ b/ecrire/exec/admin_plugin.php @@ -123,7 +123,7 @@ EOF; echo generer_url_post_ecrire("admin_plugin"); echo "<ul>"; - affiche_arbre_plugins(liste_plugin_files(),liste_plugin_actifs()); + affiche_arbre_plugins(liste_plugin_files(),liste_chemin_plugin_actifs()); echo "</ul>"; echo "</table></div>\n"; diff --git a/ecrire/inc/plugin.php b/ecrire/inc/plugin.php index 11f8a74cd865643c778f99ca7a0a59ff30347e54..72e1436a649f0c435e5e7491ae5d1cd8107c7faf 100644 --- a/ecrire/inc/plugin.php +++ b/ecrire/inc/plugin.php @@ -32,15 +32,43 @@ function liste_plugin_files(){ return $plugin_files; } +function liste_plugin_valides($liste_plug,&$infos){ + $liste = array(); + $infos = array(); + if (is_array($liste_plug)) + foreach($liste_plug as $plug){ + $infos[$plug] = plugin_get_infos($plug); + if (!isset($infos[$plug]['erreur']) && !isset($plugin_valides[$p=strtoupper($infos[$plug]['prefix'])])) + $liste[$p] = array('dir'=>$plug,'version'=>isset($infos[$plug]['version'])?$infos[$plug]['version']:NULL); + } + return $liste; +} + // A utiliser pour initialiser ma variable globale $plugin // http://doc.spip.org/@liste_plugin_actifs function liste_plugin_actifs(){ $meta_plugin = isset($GLOBALS['meta']['plugin'])?$GLOBALS['meta']['plugin']:''; - if (strlen($meta_plugin)>0) - return explode(",",$meta_plugin); // mieux avec un unserialize ? + if (strlen($meta_plugin)>0){ + if (is_array($t=unserialize($meta_plugin))) + return $t; + else{ // compatibilite pre 1.9.2, mettre a jour la meta + $t = explode(",",$meta_plugin); + $liste = liste_plugin_valides($t,$infos); + ecrire_meta('plugin',serialize($liste)); + ecrire_metas(); + return $liste; + } + } else return array(); } +function liste_chemin_plugin_actifs(){ + $liste = liste_plugin_actifs(); + foreach ($liste as $prefix=>$infos) { + $liste[$prefix] = $infos['dir']; + } + return $liste; +} // http://doc.spip.org/@ecrire_plugin_actifs function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz'){ @@ -50,7 +78,7 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz'){ $liste_pipe_manquants[]=$pipe_recherche; if ($operation!='raz'){ - $plugin_actifs = liste_plugin_actifs(); + $plugin_actifs = liste_chemin_plugin_actifs(); $plugin_liste = liste_plugin_files(); $plugin_valides = array_intersect($plugin_actifs,$plugin_liste); if ($operation=='ajoute') @@ -59,20 +87,8 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz'){ $plugin = array_diff($plugin_valides,$plugin); } - $plugin_valides = array(); - if (is_array($plugin)){ - // charger les infos de plugin en memoire - $infos = array(); - foreach ($plugin as $plug) { - $infos[$plug] = plugin_get_infos($plug); - if (!isset($infos[$plug]['erreur']) && !isset($plugin_valides[$p=strtoupper($infos[$plug]['prefix'])])) - $plugin_valides[$p] = $plug; - else - unset($infos[$plug]); - } - } - - ecrire_meta('plugin',implode(",", $plugin_valides)); // mieux avec un serialize ? + $plugin_valides = liste_plugin_valides($plugin,$infos); + ecrire_meta('plugin',serialize($plugin_valides)); $start_file = "<"."?php\nif (!defined('_ECRIRE_INC_VERSION')) return;\n"; $end_file = "\n?".">"; @@ -194,7 +210,7 @@ function pipeline_precompile(){ // pas sur que ca serve... // http://doc.spip.org/@liste_plugin_inactifs function liste_plugin_inactifs(){ - return array_diff (liste_plugin_files(),liste_plugin_actifs()); + return array_diff (liste_plugin_files(),liste_chemin_plugin_actifs()); } // mise à jour du meta en fonction de l'état du répertoire @@ -203,7 +219,7 @@ function liste_plugin_inactifs(){ // risque de pb en php5 à cause du typage ou de null (vérifier dans la doc php) // http://doc.spip.org/@verif_plugin function verif_plugin($pipe_recherche = false){ - $plugin_actifs = liste_plugin_actifs(); + $plugin_actifs = liste_chemin_plugin_actifs(); $plugin_liste = liste_plugin_files(); $plugin_new = array_intersect($plugin_actifs,$plugin_liste); ecrire_plugin_actifs($plugin_new,$pipe_recherche); @@ -243,7 +259,7 @@ function enregistre_modif_plugin(){ // http://doc.spip.org/@ordonne_plugin function ordonne_plugin(){ - $liste = liste_plugin_actifs(); + $liste = liste_chemin_plugin_actifs(); $liste_triee = array(); $i=2; foreach($liste as $plug){