WP File Manager
Current Path:
/
home
/
article
/
www
/
ecrire
/
plugins
/
Name
Action
..
afficher_liste.php
Edit
afficher_nom_plugin.php
Edit
afficher_plugin.php
Edit
afficher_plugin_distant.php
Edit
afficher_repertoires.php
Edit
extraire_boutons.php
Edit
extraire_pipelines.php
Edit
get_infos.php
Edit
verifie_conformite.php
Edit
Editing: afficher_repertoires.php
<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) return; // http://doc.spip.org/@affiche_arbre_plugins function plugins_afficher_repertoires_dist($url_page, $liste_plugins, $liste_plugins_actifs){ $ligne_plug = charger_fonction('afficher_plugin','plugins'); $racine = basename(_DIR_PLUGINS); $init_dir = $current_dir = ""; // liste des repertoires deplies : construit en remontant l'arbo de chaque plugin actif // des qu'un path est deja note deplie on s'arrete $deplie = array($racine=>true); $fast_liste_plugins_actifs=array(); foreach($liste_plugins_actifs as $key=>$plug){ $chemin_plug = chemin_plug($racine, $plug); $fast_liste_plugins_actifs[$chemin_plug]=true; $dir = dirname($chemin_plug);$maxiter=100; while(strlen($dir) && !isset($deplie[$dir]) && $dir!=$racine && $maxiter-->0){ $deplie[$dir] = true; $dir = dirname($dir); } } // index repertoires --> plugin $dir_index=array(); foreach($liste_plugins as $key=>$plug){ $liste_plugins[$key] = chemin_plug($racine, $plug); $dir_index[dirname($liste_plugins[$key])][] = $key; } $visible = @isset($deplie[$current_dir]); $maxiter=1000; $res = ''; while (count($liste_plugins) && $maxiter--){ // le rep suivant $dir = dirname(reset($liste_plugins)); if ($dir != $current_dir) $res .= tree_open_close_dir($current_dir,$dir,$deplie); // d'abord tous les plugins du rep courant if (isset($dir_index[$current_dir])) foreach($dir_index[$current_dir] as $key){ $plug = $liste_plugins[$key]; $actif = @isset($fast_liste_plugins_actifs[$plug]); $id = substr(md5($plug),0,16); $res .= $ligne_plug($url_page, str_replace(_DIR_PLUGINS, '', _DIR_RACINE.$plug), $actif, 'menu-entree') . "\n"; unset($liste_plugins[$key]); } } $res .= tree_open_close_dir($current_dir,$init_dir, true); return "<ul class='menu-liste plugins'>" . $res . "</ul>"; } // vraiment n'importe quoi la gestion des chemins des plugins // une fonction pour aider... // http://doc.spip.org/@chemin_plug function chemin_plug($racine, $plug) { return preg_replace(',[^/]+/\.\./,', '', "$racine/$plug"); } // http://doc.spip.org/@tree_open_close_dir function tree_open_close_dir(&$current,$target,$deplie=array()){ if ($current == $target) return ""; $tcur = explode("/",$current); $ttarg = explode("/",$target); $tcom = array(); $output = ""; // la partie commune while (reset($tcur)==reset($ttarg)){ $tcom[] = array_shift($tcur); array_shift($ttarg); } // fermer les repertoires courant jusqu'au point de fork while($close = array_pop($tcur)){ $output .= "</ul>\n"; $output .= fin_block(); $output .= "</li>\n"; } $chemin = ""; if (count($tcom)) $chemin .= implode("/",$tcom)."/"; // ouvrir les repertoires jusqu'a la cible while($open = array_shift($ttarg)){ $visible = @isset($deplie[$chemin.$open]); $chemin .= $open . "/"; $output .= "<li>"; $output .= bouton_block_depliable($chemin,$visible); $output .= debut_block_depliable($visible); $output .= "<ul>\n"; } $current = $target; return $output; } ?>