Changeset 90132 in spip-zone


Ignore:
Timestamp:
Jun 13, 2015, 9:40:27 AM (6 years ago)
Author:
teddy.spip@…
Message:
  • De l'indentation pour une meilleure lecture du code;
  • On allège le nombre de glob en stockant le résultat. Moins gourmand de ce fait…
  • Up de z pour prise en compte
Location:
_plugins_/mutualisation
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mutualisation

    • Property svn:ignore set to
      .phpintel
  • _plugins_/mutualisation/branches/v0/exec/mutualisation.php

    r86563 r90132  
    11<?php
    2 header( 'charset:UTF-8' );
    3 
    4 if (!defined("_ECRIRE_INC_VERSION")) return;
    5 
    6 
    7 function exec_mutualisation_dist() {
    8         global $auteur_session;
    9         $ustart = memory_get_peak_usage(true);
    10         $timestart=microtime(true);
    11         $memory_limit = strtolower(ini_get('memory_limit'));
    12        
    13         include_spip('inc/minipres');
    14         include_spip('inc/filtres');
    15 
    16         // pas admin ? passe ton chemin
    17         if ( ($auteur_session['statut'] != '0minirezo') and ( $_SERVER["REMOTE_ADDR"]!='127.0.0.1'))
    18                 die('pas admin !');
    19 
    20         $lister_sites = charger_fonction('lister_sites','mutualisation');
    21         $sites = $lister_sites();
    22 
    23         $branche_nom = "spip-" . $GLOBALS['spip_version_branche'] ;
    24         $version_spip = intval($GLOBALS['spip_version_branche']) ;
    25 
    26 
    27         $url_stats = 'ecrire/?exec=statistiques_visites';
    28         $url_compresseur = 'ecrire/?exec=config_fonctions#configurer-compresseur';
    29         $url_admin_plugin = 'ecrire/?exec=admin_plugin';
    30         $url_admin_vider = 'ecrire/?exec=admin_vider';
    31 
    32         if (!file_exists(_DIR_IMG.'mutualiser.png'))
    33                 @copy(find_in_path('mutualiser.png'), _DIR_IMG.'mutualiser.png');
    34 
    35         $titre .= _L(count($sites).' '.'sites mutualis&#233;s <em>(' . _T('version') . ' ' . $GLOBALS['spip_version_base'].')</em>');
    36 
    37         $page .= '<script type="text/javascript">
     2
     3header('charset:UTF-8');
     4
     5if (!defined('_ECRIRE_INC_VERSION')) {
     6    return;
     7}
     8
     9function exec_mutualisation_dist()
     10{
     11    global $auteur_session;
     12    $ustart = memory_get_peak_usage(true);
     13    $timestart = microtime(true);
     14    $memory_limit = strtolower(ini_get('memory_limit'));
     15
     16    include_spip('inc/minipres');
     17    include_spip('inc/filtres');
     18
     19    // pas admin ? passe ton chemin
     20    if (($auteur_session['statut'] != '0minirezo') and ($_SERVER['REMOTE_ADDR'] != '127.0.0.1')) {
     21        die('pas admin !');
     22    }
     23
     24    $lister_sites = charger_fonction('lister_sites', 'mutualisation');
     25    $sites = $lister_sites();
     26
     27    $branche_nom = 'spip-'.$GLOBALS['spip_version_branche'];
     28    $version_spip = intval($GLOBALS['spip_version_branche']);
     29
     30    $url_stats = 'ecrire/?exec=statistiques_visites';
     31    $url_compresseur = 'ecrire/?exec=config_fonctions#configurer-compresseur';
     32    $url_admin_plugin = 'ecrire/?exec=admin_plugin';
     33    $url_admin_vider = 'ecrire/?exec=admin_vider';
     34
     35    if (!file_exists(_DIR_IMG.'mutualiser.png')) {
     36        @copy(find_in_path('mutualiser.png'), _DIR_IMG.'mutualiser.png');
     37    }
     38
     39    $titre .= _L(count($sites).' '.'sites mutualis&#233;s <em>('._T('version').' '.$GLOBALS['spip_version_base'].')</em>');
     40
     41    $page .= '<script type="text/javascript">
    3842        //<![CDATA[
    3943        var tableau_sites = new Array();
     
    4145        </script>';
    4246
    43         //$page .= "<div id='trace'></div>" ;
    44         $page .= "<table style='clear:both;'>
     47    //$page .= "<div id='trace'></div>" ;
     48    $page .= "<table style='clear:both;'>
    4549        <thead>
    4650                <tr>
     
    6266        <tbody>";
    6367
    64         $nsite = 1;
    65 
    66         # aliases pour l'affichage court
    67         $alias = array();
    68         foreach ($sites as $v) {
    69                 $redux = preg_replace(',^www\.|\..*$,', '', $v);
    70                 if (!in_array($redux, $alias))
    71                         $alias[$v] = $redux;
    72                 else
    73                         $alias[$v] = $v;
    74         }
    75 
    76         // Recuperer la liste des plugins connus de l'instance SPIP en cours (celle qui est appelee par ecrire/?exec=mutualisation)
    77         include_spip('inc/plugin');
    78         $liste_plug = liste_plugin_files();
    79         $liste_plug_compat = liste_plugin_valides($liste_plug);
    80         $liste_plug_compat_base = $liste_plug_compat[2];
    81         $liste_plug_compat = $liste_plug_compat[0];
    82 
    83         foreach ($sites as $v) {
    84                 $nom_site=$stats=$plugins=$erreur=$version_installee="";
    85 
    86                 if (lire_fichier_securise(_DIR_RACINE.$GLOBALS['mutualisation_dir'].'/'.$v.'/tmp/meta_cache.php', $meta)
    87                 AND is_array($meta = @unserialize($meta))
    88                 AND $url = $meta['adresse_site']) {
    89                         $url .= '/';
    90                         $nom_site = sinon(importer_charset($meta['nom_site'], $meta['charset']), $v);
    91                         $stats = intval($meta['popularite_total']);
    92                         if ($cfg = @unserialize($meta['plugin'])) {
    93                                 $plugins = array_keys($cfg);
    94                                 ksort($plugins);
    95                                 foreach ($plugins as $plugin) {
    96                                         $lsplugs[strtolower($plugin)][] = $alias[$v];
    97                                         $versionplug[strtolower($plugin)] = $cfg[$plugin]['version'];
    98                                 }
    99                                 $cntplugins = count($plugins);
    100                                 $plugins = strtolower(join(', ', $plugins));
    101                         } else
    102                                 $plugins = '-';
    103 
    104                         // S'il faut upgrader, creer un bouton qui permettra
    105                         // de faire la mise a jour directement depuis le site maitre
    106                         // Pour cela, on cree un bouton avec un secret, que mutualiser.php
    107                         // va intercepter (pas terrible ?)
    108                         $erreur = test_upgrade_site($meta);
    109                         $adminplugin = adminplugin_site($meta, $liste_plug_compat, $liste_plug_compat_base);
    110                         $credential = test_credential_site($meta, $v);
    111                         $version_installee = ' <em><small>'.$meta['version_installee'].'</small></em>';
    112                 }
    113                 else {
    114                         $url = 'http://'.$v.'/';
    115                         $erreur = ' <em><small><span class="erreur">Erreur&nbsp;!</span></small></em>';
    116                         $plugins = '-';
    117                 }
    118                
    119                 $compression = '';
    120                 if ($meta['auto_compress_css']=='oui')
    121                         $compression .= 'CSS';
    122                 if ($meta['auto_compress_js']=='oui')
    123                         $compression .= ($compression!='') ? '+JS':'JS';
    124                 if ($meta['auto_compress_http']=='oui')
    125                         $compression .= ($compression!='') ? '+HTTP':'HTTP';
    126                 if ($compression=='')
    127                         $compression = _L('Activer');
    128                 $page .= '<script type="text/javascript">
     68    $nsite = 1;
     69
     70    # aliases pour l'affichage court
     71    $alias = array();
     72    foreach ($sites as $v) {
     73        $redux = preg_replace(',^www\.|\..*$,', '', $v);
     74        if (!in_array($redux, $alias)) {
     75            $alias[$v] = $redux;
     76        } else {
     77            $alias[$v] = $v;
     78        }
     79    }
     80
     81    // Recuperer la liste des plugins connus de l'instance SPIP en cours (celle qui est appelee par ecrire/?exec=mutualisation)
     82    include_spip('inc/plugin');
     83    $liste_plug = liste_plugin_files();
     84    $liste_plug_compat = liste_plugin_valides($liste_plug);
     85    $liste_plug_compat_base = $liste_plug_compat[2];
     86    $liste_plug_compat = $liste_plug_compat[0];
     87
     88    foreach ($sites as $v) {
     89        $nom_site = $stats = $plugins = $erreur = $version_installee = '';
     90
     91        if (lire_fichier_securise(_DIR_RACINE.$GLOBALS['mutualisation_dir'].'/'.$v.'/tmp/meta_cache.php', $meta)
     92        and is_array($meta = @unserialize($meta))
     93        and $url = $meta['adresse_site']) {
     94            $url .= '/';
     95            $nom_site = sinon(importer_charset($meta['nom_site'], $meta['charset']), $v);
     96            $stats = intval($meta['popularite_total']);
     97            if ($cfg = @unserialize($meta['plugin'])) {
     98                $plugins = array_keys($cfg);
     99                ksort($plugins);
     100                foreach ($plugins as $plugin) {
     101                    $lsplugs[strtolower($plugin)][] = $alias[$v];
     102                    $versionplug[strtolower($plugin)] = $cfg[$plugin]['version'];
     103                }
     104                $cntplugins = count($plugins);
     105                $plugins = strtolower(implode(', ', $plugins));
     106            } else {
     107                $plugins = '-';
     108            }
     109
     110            // S'il faut upgrader, creer un bouton qui permettra
     111            // de faire la mise a jour directement depuis le site maitre
     112            // Pour cela, on cree un bouton avec un secret, que mutualiser.php
     113            // va intercepter (pas terrible ?)
     114            $erreur = test_upgrade_site($meta);
     115            $adminplugin = adminplugin_site($meta, $liste_plug_compat, $liste_plug_compat_base);
     116            $credential = test_credential_site($meta, $v);
     117            $version_installee = ' <em><small>'.$meta['version_installee'].'</small></em>';
     118        } else {
     119            $url = 'http://'.$v.'/';
     120            $erreur = ' <em><small><span class="erreur">Erreur&nbsp;!</span></small></em>';
     121            $plugins = '-';
     122        }
     123
     124        $compression = '';
     125        if ($meta['auto_compress_css'] == 'oui') {
     126            $compression .= 'CSS';
     127        }
     128        if ($meta['auto_compress_js'] == 'oui') {
     129            $compression .= ($compression != '') ? '+JS' : 'JS';
     130        }
     131        if ($meta['auto_compress_http'] == 'oui') {
     132            $compression .= ($compression != '') ? '+HTTP' : 'HTTP';
     133        }
     134        if ($compression == '') {
     135            $compression = _L('Activer');
     136        }
     137        $page .= '<script type="text/javascript">
    129138                //<![CDATA[
    130139                tableau_sites.push(["../../'.$GLOBALS['mutualisation_dir'].'/'.$v.'"]);
     
    132141                </script>';
    133142
    134                 $page .= "<tr class='tr". $nsite % 2 ."'"
    135                         . " style='background-image: url(${url}ecrire/index.php?exec=mutualisation&amp;renouvelle_alea=yo)' id='$alias[$v]'>
     143        $page .= "<tr class='tr".$nsite % 2 ."'"
     144            ." style='background-image: url(${url}ecrire/index.php?exec=mutualisation&amp;renouvelle_alea=yo)' id='$alias[$v]'>
    136145                        <td style='text-align:right;'><img src='${url}favicon.ico' style='float:left;' />$v$erreur$credential$version_installee</td>
    137146                        <td><a href='${url}'>".typo($nom_site)."</a></td>
     
    147156                        <td style='text-align:right;'>".date_creation_repertoire_site($v)."</td>
    148157                        </tr>\n";
    149                 $nsite++;
    150         }
    151         $page .= "</tbody></table>";
    152 
    153 
    154         if ($lsplugs) {
    155                 $nombre_plugins = count($lsplugs) ;
    156                 $page .= "<br /><br /><table style='clear:both;'>
     158        $nsite++;
     159    }
     160    $page .= '</tbody></table>';
     161
     162    if ($lsplugs) {
     163        $nombre_plugins = count($lsplugs);
     164        $page .= "<br /><br /><table style='clear:both;'>
    157165        <thead>
    158166                <tr>
     
    164172        </thead>
    165173        <tbody>";
    166                 foreach ($lsplugs as $plugin => $c){
    167                         $plnum[count($c)] .= "<tr><td>".count($c)."</td><td>$plugin</td>"
    168                                 ."<td>".$versionplug[$plugin]."</td><td>".join(', ', ancre_site($c)).'</td></tr>';
    169                 }
    170                 krsort($plnum);
    171                 $page .= join('', $plnum);
    172                 $page .= "</tbody></table>\n";
    173 
    174 
    175                 $inutile = array();
    176                 $extract = array();
    177                 $list = array();
    178                
    179                 $ustart_glob = memory_get_peak_usage(true);
    180                 // Si on est sur un spip 2
    181                 // correspond à plugins/nom_plugin/fichier.xml
    182                 if (glob(_DIR_PLUGINS . '*/plugin.xml')) {
    183                         foreach (glob(_DIR_PLUGINS . '*/plugin.xml') as $value) {
    184                                 $list[] = $value;
    185                         }
    186                 }
    187                 // correspond à plugins/auto/nom_plugin/fichier.xml
    188                 if (glob(_DIR_PLUGINS . '*/*/plugin.xml')) {
    189                         foreach (glob(_DIR_PLUGINS . '*/*/plugin.xml') as $value) {
    190                                 $list[] = $value;
    191                         }
    192                 }
    193 
    194                 foreach ($list as $url) {
    195                         // là, on reprend l'ancien code. On cherche la valeur de la balise prefix
    196                         if (preg_match(',<prefix>([^<]+),ims', file_get_contents($url), $r)
    197                                 AND !$lsplugs[strtolower(trim($r[1]))])
    198                                         $inutile[] = trim($r[1]);
    199                 }
    200 
    201                 $uend_glob = memory_get_peak_usage(true);
    202                
    203                 $inutile = array_map('mb_strtolower', $inutile);
    204                 sort($inutile);
    205 
    206                 if ($inutile) {
    207                         $nombre_plugins_inutiles =count($inutile) ;
    208                         $page .= "<p><strong>"._L('Plugins inutilis&#233;s :')."</strong> ".join(', ', $inutile).".<br />";
    209                         $page .= "<em>Soit " . $nombre_plugins_inutiles . _L(' plugins inutilis&#233;s') . ".</em></p>";
    210                 }
    211         }
    212 
    213         $page .= '<div style="text-align:center;"><img src="'
    214                 . find_in_path('mutualisation/mutualiser.png')
    215                 . '" alt="" /></div>';
    216 
    217         $page = minipres($titre, $page);
    218        
    219         $page = str_replace('</head>', '
     174        foreach ($lsplugs as $plugin => $c) {
     175            $plnum[count($c)] .= '<tr><td>'.count($c)."</td><td>$plugin</td>"
     176                .'<td>'.$versionplug[$plugin].'</td><td>'.implode(', ', ancre_site($c)).'</td></tr>';
     177        }
     178        krsort($plnum);
     179        $page .= implode('', $plnum);
     180        $page .= "</tbody></table>\n";
     181
     182        $inutile = array();
     183        $extract = array();
     184        $list = array();
     185
     186        $ustart_glob = memory_get_peak_usage(true);
     187        // Si on est sur un spip 2
     188        // correspond à plugins/nom_plugin/fichier.xml
     189        if ($les_paquets = glob(_DIR_PLUGINS.'*/plugin.xml')) {
     190            foreach ($les_paquets as $value) {
     191                $list[] = $value;
     192            }
     193        }
     194        // correspond à plugins/auto/nom_plugin/fichier.xml
     195        if ($les_paquets = glob(_DIR_PLUGINS.'*/*/plugin.xml')) {
     196            foreach ($les_paquets as $value) {
     197                $list[] = $value;
     198            }
     199        }
     200
     201        foreach ($list as $url) {
     202            // là, on reprend l'ancien code. On cherche la valeur de la balise prefix
     203            if (preg_match(',<prefix>([^<]+),ims', file_get_contents($url), $r)
     204                and !$lsplugs[strtolower(trim($r[1]))]) {
     205                $inutile[] = trim($r[1]);
     206            }
     207        }
     208
     209        $uend_glob = memory_get_peak_usage(true);
     210
     211        $inutile = array_map('mb_strtolower', $inutile);
     212        sort($inutile);
     213
     214        if ($inutile) {
     215            $nombre_plugins_inutiles = count($inutile);
     216            $page .= '<p><strong>'._L('Plugins inutilis&#233;s :').'</strong> '.implode(', ', $inutile).'.<br />';
     217            $page .= '<em>Soit '.$nombre_plugins_inutiles._L(' plugins inutilis&#233;s').'.</em></p>';
     218        }
     219    }
     220
     221    $page .= '<div style="text-align:center;"><img src="'
     222        .find_in_path('mutualisation/mutualiser.png')
     223        .'" alt="" /></div>';
     224
     225    $page = minipres($titre, $page);
     226
     227    $page = str_replace('</head>', '
    220228                <link rel="stylesheet" type="text/css" href="../mutualisation/mutualisation.css" />
    221229                <script src="../prive/javascript/jquery.js" type="text/javascript"></script>
     
    225233                ', $page);
    226234
    227         $uend = memory_get_peak_usage(true);
    228         $udiff = $uend - $ustart;
    229         $udiff_glob = $uend_glob - $ustart_glob ;
    230         $timeend=microtime(true);
    231         $time=$timeend-$timestart;
    232         $page_load_time = number_format($time, 3);
    233 
    234         if (isset($_GET['debug'])) {
    235                 $debug_toolbar = "<div class='toolbar'>\n";
    236 
    237                 $debug_toolbar .= "<div class='toolbar-block'>\n";
    238                 $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-php_info'></i></div>\n" ;
    239                 $debug_toolbar .= "<div class='toolbar-info'>\n" ;
    240                 $debug_toolbar .= "<div class='toolbar-info-element'><b>SPIP</b> <span>" . $GLOBALS['spip_version_branche'] . "</span></div>\n";
    241                 $debug_toolbar .= "<div class='toolbar-info-element'><b>PHP</b> <span>" . phpversion() . "</span></div>\n";
    242                 $debug_toolbar .= "<div class='toolbar-info-element'><b>Mémoire allouées</b> <span>" . $memory_limit . "</span></div>\n";
    243                 $debug_toolbar .= "<div class='toolbar-info-element'><b>Serveur</b> <span>" . $_SERVER['SERVER_SOFTWARE'] . "</span></div>\n";
    244                 $debug_toolbar .= "</div></div>\n" ;
    245 
    246                 $debug_toolbar .= "<div class='toolbar-block'>\n";
    247                 $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-plugins'></i><span>". ($nombre_plugins_inutiles + $nombre_plugins) ." plugins</span></div>\n" ;
    248                 $debug_toolbar .= "<div class='toolbar-info'>\n" ;
    249                 $debug_toolbar .= "<div class='toolbar-info-element'><b>Utilisés</b> <span>" . $nombre_plugins . "</span></div>\n";
    250                 $debug_toolbar .= "<div class='toolbar-info-element'><b>Inutilisés</b> <span>" . $nombre_plugins_inutiles . "</span></div>\n";
    251                 $debug_toolbar .= "<div class='toolbar-info-element'><b>Total</b> <span>" . ($nombre_plugins_inutiles + $nombre_plugins) . "</span></div>\n";
    252                 $debug_toolbar .= "</div></div>\n" ;
    253 
    254                 $debug_toolbar .= "<div class='toolbar-block'>\n";
    255                 $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-memory'></i> <span>". memoryUsage($udiff) . "</span></div>\n" ;
    256                 $debug_toolbar .= "<div class='toolbar-info'>\n" ;
    257                 $debug_toolbar .= "<div class='toolbar-info-element'><b>Mémoire :</b></div>\n";
    258                 $debug_toolbar .= "<div class='toolbar-info-element'><b>Au début</b> <span>" . memoryUsage($ustart) . "</span></div>\n";
    259                 $debug_toolbar .= "<div class='toolbar-info-element'><b>À la fin</b> <span>" . memoryUsage($uend) . "</span></div>\n";
    260                 $debug_toolbar .= "<div class='toolbar-info-element'><b>Différence</b> <span>" . memoryUsage($udiff) . "</span></div>\n";
    261                 $debug_toolbar .= "</div></div>\n" ;
    262 
    263                 $debug_toolbar .= "<div class='toolbar-block'>\n";
    264                 $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-time'></i> <span>". $page_load_time . " s</span></div>\n" ;
    265                 $debug_toolbar .= "<div class='toolbar-info'>" ;
    266                 $debug_toolbar .= "<div class='toolbar-info-element'><b>Début du script</b> <span>" . date("H:i:s", $timestart) . "</span></div>\n";
    267                 $debug_toolbar .= "<div class='toolbar-info-element'><b>Fin du script</b> <span>" . date("H:i:s", $timeend) . "</span></div>\n";
    268                 $debug_toolbar .= "<div class='toolbar-info-element'><b>Temps d'exécution</b> <span>" . $page_load_time . " s</span></div>\n";
    269                 $debug_toolbar .= "</div></div>\n" ;
    270 
    271                 $debug_toolbar .= "</div>\n" ;
    272 
    273                 $page = str_replace('</body>', $debug_toolbar . "\n </body>", $page);
    274 
    275         }
    276         echo $page;
    277 }
    278 
    279 
    280 function test_upgrade_site($meta) {
    281         if ($GLOBALS['spip_version_base']
    282         != str_replace(',','.',$meta['version_installee'])) {
    283                 $secret = $meta['version_installee'].'-'.$meta['popularite_total'];
    284                 $secret = md5($secret);
    285                 return <<<EOF
     235    $uend = memory_get_peak_usage(true);
     236    $udiff = $uend - $ustart;
     237    $udiff_glob = $uend_glob - $ustart_glob;
     238    $timeend = microtime(true);
     239    $time = $timeend - $timestart;
     240    $page_load_time = number_format($time, 3);
     241
     242    if (isset($_GET['debug'])) {
     243        $debug_toolbar = "<div class='toolbar'>\n";
     244
     245        $debug_toolbar .= "<div class='toolbar-block'>\n";
     246        $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-php_info'></i></div>\n";
     247        $debug_toolbar .= "<div class='toolbar-info'>\n";
     248        $debug_toolbar .= "<div class='toolbar-info-element'><b>SPIP</b> <span>".$GLOBALS['spip_version_branche']."</span></div>\n";
     249        $debug_toolbar .= "<div class='toolbar-info-element'><b>PHP</b> <span>".phpversion()."</span></div>\n";
     250        $debug_toolbar .= "<div class='toolbar-info-element'><b>Mémoire allouées</b> <span>".$memory_limit."</span></div>\n";
     251        $debug_toolbar .= "<div class='toolbar-info-element'><b>Serveur</b> <span>".$_SERVER['SERVER_SOFTWARE']."</span></div>\n";
     252        $debug_toolbar .= "</div></div>\n";
     253
     254        $debug_toolbar .= "<div class='toolbar-block'>\n";
     255        $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-plugins'></i><span>".($nombre_plugins_inutiles + $nombre_plugins)." plugins</span></div>\n";
     256        $debug_toolbar .= "<div class='toolbar-info'>\n";
     257        $debug_toolbar .= "<div class='toolbar-info-element'><b>Utilisés</b> <span>".$nombre_plugins."</span></div>\n";
     258        $debug_toolbar .= "<div class='toolbar-info-element'><b>Inutilisés</b> <span>".$nombre_plugins_inutiles."</span></div>\n";
     259        $debug_toolbar .= "<div class='toolbar-info-element'><b>Total</b> <span>".($nombre_plugins_inutiles + $nombre_plugins)."</span></div>\n";
     260        $debug_toolbar .= "</div></div>\n";
     261
     262        $debug_toolbar .= "<div class='toolbar-block'>\n";
     263        $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-memory'></i> <span>".memoryUsage($udiff)."</span></div>\n";
     264        $debug_toolbar .= "<div class='toolbar-info'>\n";
     265        $debug_toolbar .= "<div class='toolbar-info-element'><b>Mémoire :</b></div>\n";
     266        $debug_toolbar .= "<div class='toolbar-info-element'><b>Au début</b> <span>".memoryUsage($ustart)."</span></div>\n";
     267        $debug_toolbar .= "<div class='toolbar-info-element'><b>À la fin</b> <span>".memoryUsage($uend)."</span></div>\n";
     268        $debug_toolbar .= "<div class='toolbar-info-element'><b>Différence</b> <span>".memoryUsage($udiff)."</span></div>\n";
     269        $debug_toolbar .= "</div></div>\n";
     270
     271        $debug_toolbar .= "<div class='toolbar-block'>\n";
     272        $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-time'></i> <span>".$page_load_time." s</span></div>\n";
     273        $debug_toolbar .= "<div class='toolbar-info'>";
     274        $debug_toolbar .= "<div class='toolbar-info-element'><b>Début du script</b> <span>".date('H:i:s', $timestart)."</span></div>\n";
     275        $debug_toolbar .= "<div class='toolbar-info-element'><b>Fin du script</b> <span>".date('H:i:s', $timeend)."</span></div>\n";
     276        $debug_toolbar .= "<div class='toolbar-info-element'><b>Temps d'exécution</b> <span>".$page_load_time." s</span></div>\n";
     277        $debug_toolbar .= "</div></div>\n";
     278
     279        $debug_toolbar .= "</div>\n";
     280
     281        $page = str_replace('</body>', $debug_toolbar."\n </body>", $page);
     282    }
     283    echo $page;
     284}
     285
     286function test_upgrade_site($meta)
     287{
     288    if ($GLOBALS['spip_version_base']
     289    != str_replace(',', '.', $meta['version_installee'])) {
     290        $secret = $meta['version_installee'].'-'.$meta['popularite_total'];
     291        $secret = md5($secret);
     292
     293        return <<<EOF
    286294<form action='$meta[adresse_site]/ecrire/index.php?exec=mutualisation' method='post' class='upgrade' target='_blank'>
    287295<div>
     
    293301</form>
    294302EOF;
    295         }
    296 }
    297 
    298 function adminplugin_site($meta, $liste_plug_compat, $liste_plug_compat_base) {
    299         if ($cfg = @unserialize($meta['plugin'])) {
    300                 $plugins = array_keys($cfg);
    301                 ksort($plugins);
    302                 foreach ($plugins as $plugin) {
    303                         $vplugin_base = $meta[strtolower($plugin).'_base_version'];
    304                         $nouvelle_version_plugin_base = $liste_plug_compat_base[$liste_plug_compat[$plugin]['dir_type']][$liste_plug_compat[$plugin]['dir']]['version_base'];
    305                         if ($cfg[$plugin]['version'] != $liste_plug_compat[$plugin]['version']
    306                         AND !is_null($liste_plug_compat[$plugin]['version'])
    307                         AND ($vplugin_base != $nouvelle_version_plugin_base) ) {
    308                                 $secret = $meta['version_installee'].'-'.$meta['popularite_total'];
    309                                 $secret = md5($secret);
    310                                 $vplugin = $vplugin_base . '&rarr;' . $nouvelle_version_plugin_base;
    311                                 return <<<EOF
     303    }
     304}
     305
     306function adminplugin_site($meta, $liste_plug_compat, $liste_plug_compat_base)
     307{
     308    if ($cfg = @unserialize($meta['plugin'])) {
     309        $plugins = array_keys($cfg);
     310        ksort($plugins);
     311        foreach ($plugins as $plugin) {
     312            $vplugin_base = $meta[strtolower($plugin).'_base_version'];
     313            $nouvelle_version_plugin_base = $liste_plug_compat_base[$liste_plug_compat[$plugin]['dir_type']][$liste_plug_compat[$plugin]['dir']]['version_base'];
     314            if ($cfg[$plugin]['version'] != $liste_plug_compat[$plugin]['version']
     315            and !is_null($liste_plug_compat[$plugin]['version'])
     316            and ($vplugin_base != $nouvelle_version_plugin_base)) {
     317                $secret = $meta['version_installee'].'-'.$meta['popularite_total'];
     318                $secret = md5($secret);
     319                $vplugin = $vplugin_base.'&rarr;'.$nouvelle_version_plugin_base;
     320
     321                return <<<EOF
    312322<form action='$meta[adresse_site]/ecrire/index.php?exec=mutualisation' method='post' class='upgrade' target='_blank'>
    313323<div>
     
    319329</form>
    320330EOF;
    321                         }
    322                 }
    323         }
    324         return '';
    325 }
    326 
    327 
    328 function date_creation_repertoire_site ($v) {
    329         return (date("d/M/y", @filectime('../'.$GLOBALS['mutualisation_dir'].'/'.$v."/config/connect.php"))) ; 
     331            }
     332        }
     333    }
     334
     335    return '';
     336}
     337
     338function date_creation_repertoire_site($v)
     339{
     340    return (date('d/M/y', @filectime('../'.$GLOBALS['mutualisation_dir'].'/'.$v.'/config/connect.php')));
    330341}
    331342
    332343// lister les sites qui ont des sites/xx/config/connect.php
    333344// avec 'connect.php' ne changeant pas de nom
    334 function mutualisation_lister_sites_dist() {
    335         $sites = array();
    336         foreach(glob('../'.$GLOBALS['mutualisation_dir'].'/*/config/connect.php') as $s) {
    337                 $sites[] = preg_replace(',^\.\./'.$GLOBALS['mutualisation_dir'].'/(.*)/config/connect.php,', '\1', $s);
    338         }
    339         sort($sites);
    340         return $sites;
     345function mutualisation_lister_sites_dist()
     346{
     347    $sites = array();
     348    foreach (glob('../'.$GLOBALS['mutualisation_dir'].'/*/config/connect.php') as $s) {
     349        $sites[] = preg_replace(',^\.\./'.$GLOBALS['mutualisation_dir'].'/(.*)/config/connect.php,', '\1', $s);
     350    }
     351    sort($sites);
     352
     353    return $sites;
    341354}
    342355
    343356// lister les sites qui ont des sites/xx/config/connect.php
    344357// avec 'connect.php' ne changeant pas de nom
    345 function test_credential_site($meta, $v) {
    346         if (defined("_INSTALL_USER_DB_ROOT")) {
    347                 $file = file_get_contents('../'.$GLOBALS['mutualisation_dir'].'/'.$v.'/config/connect.php');
    348                 $credential = strpos($file, _INSTALL_USER_DB_ROOT);
    349                 if ($credential) {
    350                         preg_match("/.*^spip_connect_db\((.*)\);$/m", $file, $conn_string);
    351                         $var_connect = explode(',',str_replace("'",'',$conn_string[1]));
    352                         if (trim($var_connect[6])=='') {
    353                                 $secret = $meta['version_installee'].'-'.$meta['popularite_total'];
    354                                 $secret = md5($secret);
    355                                 return <<<EOF
     358function test_credential_site($meta, $v)
     359{
     360    if (defined('_INSTALL_USER_DB_ROOT')) {
     361        $file = file_get_contents('../'.$GLOBALS['mutualisation_dir'].'/'.$v.'/config/connect.php');
     362        $credential = strpos($file, _INSTALL_USER_DB_ROOT);
     363        if ($credential) {
     364            preg_match("/.*^spip_connect_db\((.*)\);$/m", $file, $conn_string);
     365            $var_connect = explode(',', str_replace("'", '', $conn_string[1]));
     366            if (trim($var_connect[6]) == '') {
     367                $secret = $meta['version_installee'].'-'.$meta['popularite_total'];
     368                $secret = md5($secret);
     369
     370                return <<<EOF
    356371<form action='$meta[adresse_site]/ecrire/index.php?exec=mutualisation' method='post' class='upgrade' target='_blank'>
    357372<div>
     
    363378</form>
    364379EOF;
    365                         }
    366                 }
    367         }
    368         return '';
     380            }
     381        }
     382    }
     383
     384    return '';
    369385}
    370386
     
    375391/*
    376392function mutualisation_lister_sites() {
    377         $sites = array();
    378         if (is_dir(_DIR_CONNECT)) {
    379                 if ($dh = @opendir(_DIR_CONNECT)) {
    380                         while (($file = readdir($dh)) !== false) {
    381                                 if (substr($file,-4)=='.php') {
    382                                         $sites[] = substr($file,0,-4);
    383                                 }
    384                         }
    385                 }
    386         }
    387         sort($sites);
    388         return $sites;
     393    $sites = array();
     394    if (is_dir(_DIR_CONNECT)) {
     395        if ($dh = @opendir(_DIR_CONNECT)) {
     396            while (($file = readdir($dh)) !== false) {
     397                if (substr($file,-4)=='.php') {
     398                    $sites[] = substr($file,0,-4);
     399                }
     400            }
     401        }
     402    }
     403    sort($sites);
     404    return $sites;
    389405}
    390406*/
    391407
    392408// faire une ancre vers le tableau des sites en haut de page
    393 function ancre_site($c) {
    394         foreach ($c as $key => $value) {
    395                 $c[$key] = "<a href='#$value'>" . $value . "</a>";
    396         }
    397         return $c;
    398 }
    399 
    400 function memoryUsage($bytes) {
    401         $bytes = (int) $bytes;
    402 
    403         if ($bytes > 1024*1024) {
    404             return round($bytes/1024/1024, 2).' MB';
    405         } elseif ($bytes > 1024) {
    406             return round($bytes/1024, 2).' KB';
    407         }
    408 
    409         return $bytes . ' B';
    410 }
    411 
    412 ?>
     409function ancre_site($c)
     410{
     411    foreach ($c as $key => $value) {
     412        $c[$key] = "<a href='#$value'>".$value.'</a>';
     413    }
     414
     415    return $c;
     416}
     417
     418function memoryUsage($bytes)
     419{
     420    $bytes = (int) $bytes;
     421
     422    if ($bytes > 1024 * 1024) {
     423        return round($bytes / 1024 / 1024, 2).' MB';
     424    } elseif ($bytes > 1024) {
     425        return round($bytes / 1024, 2).' KB';
     426    }
     427
     428    return $bytes.' B';
     429}
  • _plugins_/mutualisation/branches/v0/plugin.xml

    r86558 r90132  
    1010        <auteur>Fil</auteur>
    1111        <licence>&#169; 2007-2013 GNU/LGPL- 2013 GPL V.3</licence>
    12         <version>0.10.2</version>
     12        <version>0.10.3</version>
    1313        <etat>stable</etat>
    1414        <description>
  • _plugins_/mutualisation/trunk/exec/mutualisation.php

    r87599 r90132  
    11<?php
     2
    23header('charset:UTF-8');
    34
    4 if (!defined("_ECRIRE_INC_VERSION"))
    5         return;
    6 
    7 function exec_mutualisation_dist() {
    8         $ustart = memory_get_peak_usage(true);
    9         $timestart = microtime(true);
    10         $memory_limit = strtolower(ini_get('memory_limit'));
    11 
    12         include_spip('inc/minipres');
    13         include_spip('inc/filtres');
    14 
    15         // pas admin ? passe ton chemin
    16         if (($GLOBALS['visiteur_session']['statut'] != '0minirezo') and ($_SERVER["REMOTE_ADDR"] != '127.0.0.1'))
    17                 die('pas admin !');
    18 
    19         $lister_sites = charger_fonction('lister_sites', 'mutualisation');
    20         $sites = $lister_sites();
    21 
    22         $branche_nom = "spip-" . $GLOBALS['spip_version_branche'];
    23         $version_spip = intval($GLOBALS['spip_version_branche']);
    24 
    25         $url_stats = 'ecrire/?exec=stats_visites';
    26         $url_compresseur = 'ecrire/?exec=configurer_avancees#formulaire_configurer_compresseur';
    27         $url_admin_plugin = 'ecrire/?exec=admin_plugin';
    28         $url_admin_vider = 'ecrire/?exec=admin_vider';
    29 
    30         if (!file_exists(_DIR_IMG . 'mutualiser.png'))
    31                 @copy(find_in_path('mutualiser.png'), _DIR_IMG . 'mutualiser.png');
    32 
    33         $titre .= _L(count($sites) . ' ' . 'sites mutualis&#233;s <em>(' . _T('version') . ' ' . $GLOBALS['spip_version_base'] . ')</em>');
    34 
    35         //$page .= "<div id='trace'></div>" ;
    36         $page .= "<table style='clear:both;'>
     5if (!defined('_ECRIRE_INC_VERSION')) {
     6    return;
     7}
     8
     9function exec_mutualisation_dist()
     10{
     11    $ustart = memory_get_peak_usage(true);
     12    $timestart = microtime(true);
     13    $memory_limit = strtolower(ini_get('memory_limit'));
     14
     15    include_spip('inc/minipres');
     16    include_spip('inc/filtres');
     17
     18    // pas admin ? passe ton chemin
     19    if (($GLOBALS['visiteur_session']['statut'] != '0minirezo') and ($_SERVER['REMOTE_ADDR'] != '127.0.0.1')) {
     20        die('pas admin !');
     21    }
     22
     23    $lister_sites = charger_fonction('lister_sites', 'mutualisation');
     24    $sites = $lister_sites();
     25
     26    $branche_nom = 'spip-'.$GLOBALS['spip_version_branche'];
     27    $version_spip = intval($GLOBALS['spip_version_branche']);
     28
     29    $url_stats = 'ecrire/?exec=stats_visites';
     30    $url_compresseur = 'ecrire/?exec=configurer_avancees#formulaire_configurer_compresseur';
     31    $url_admin_plugin = 'ecrire/?exec=admin_plugin';
     32    $url_admin_vider = 'ecrire/?exec=admin_vider';
     33
     34    if (!file_exists(_DIR_IMG.'mutualiser.png')) {
     35        @copy(find_in_path('mutualiser.png'), _DIR_IMG.'mutualiser.png');
     36    }
     37
     38    $titre .= _L(count($sites).' '.'sites mutualis&#233;s <em>('._T('version').' '.$GLOBALS['spip_version_base'].')</em>');
     39
     40    //$page .= "<div id='trace'></div>" ;
     41    $page .= "<table style='clear:both;'>
    3742        <thead>
    3843                <tr>
     
    5459        <tbody>";
    5560
    56         $nsite = 1;
    57 
    58         # aliases pour l'affichage court
    59         $alias = array();
    60         foreach ($sites as $v) {
    61                 $redux = preg_replace(',^www\.|\..*$,', '', $v);
    62                 if (!in_array($redux, $alias))
    63                         $alias[$v] = $redux;
    64                 else
    65                         $alias[$v] = $v;
    66         }
    67 
    68         // Recuperer la liste des plugins connus de l'instance SPIP en cours (celle qui est appelee par ecrire/?exec=mutualisation)
    69         include_spip('inc/plugin');
    70         $liste_plug = liste_plugin_files();
    71         $liste_plug_compat = liste_plugin_valides($liste_plug);
    72         $liste_plug_compat_base = $liste_plug_compat[2];
    73         $liste_plug_compat = $liste_plug_compat[0];
    74 
    75         foreach ($sites as $v) {
    76                 $nom_site = $stats = $plugins = $erreur = $version_installee = "";
    77 
    78                 if (lire_fichier_securise(_DIR_RACINE . $GLOBALS['mutualisation_dir'] . '/' . $v . '/tmp/meta_cache.php', $meta) AND is_array($meta = @unserialize($meta)) AND $url = $meta['adresse_site']) {
    79                         $url .= '/';
    80                         $nom_site = sinon(importer_charset($meta['nom_site'], $meta['charset']), $v);
    81                         $stats = intval($meta['popularite_total']);
    82                         if ($cfg = @unserialize($meta['plugin'])) {
    83                                 $plugins = array_keys($cfg);
    84                                 ksort($plugins);
    85                                 foreach ($plugins as $plugin) {
    86                                         $lsplugs[strtolower($plugin)][] = $alias[$v];
    87                                         $versionplug[strtolower($plugin)] = $cfg[$plugin]['version'];
    88                                         // Spip n'est pas un plugin… Mais en fait oui.
    89                                         // unset($lsplugs['spip']);
    90                                         // unset($versionplug['spip']);
    91                                 }
    92                                 $cntplugins = count($plugins);
    93                                 $plugins = strtolower(join(', ', $plugins));
    94                         } else
    95                                 $plugins = '-';
    96 
    97                         // S'il faut upgrader, creer un bouton qui permettra
    98                         // de faire la mise a jour directement depuis le site maitre
    99                         // Pour cela, on cree un bouton avec un secret, que mutualiser.php
    100                         // va intercepter (pas terrible ?)
    101                         $erreur = test_upgrade_site($meta);
    102                         $adminplugin = adminplugin_site($meta, $liste_plug_compat, $liste_plug_compat_base);
    103                         $version_installee = ' <em><small>' . $meta['version_installee'] . '</small></em>';
    104                 } else {
    105                         $url = 'http://' . $v . '/';
    106                         $erreur = ' <em><small><span class="erreur">Erreur&nbsp;!</span></small></em>';
    107                         $plugins = '-';
    108                 }
    109 
    110                 $compression = '';
    111                 if ($meta['auto_compress_css'] == 'oui')
    112                         $compression .= 'CSS';
    113                 if ($meta['auto_compress_js'] == 'oui')
    114                         $compression .= ($compression != '') ? '+JS' : 'JS';
    115                 if ($meta['auto_compress_http'] == 'oui')
    116                         $compression .= ($compression != '') ? '+HTTP' : 'HTTP';
    117                 if ($compression == '')
    118                         $compression = _L('Activer');
    119                 $page .= '<script type="text/javascript">
     61    $nsite = 1;
     62
     63    # aliases pour l'affichage court
     64    $alias = array();
     65    foreach ($sites as $v) {
     66        $redux = preg_replace(',^www\.|\..*$,', '', $v);
     67        if (!in_array($redux, $alias)) {
     68            $alias[$v] = $redux;
     69        } else {
     70            $alias[$v] = $v;
     71        }
     72    }
     73
     74    // Recuperer la liste des plugins connus de l'instance SPIP en cours (celle qui est appelee par ecrire/?exec=mutualisation)
     75    include_spip('inc/plugin');
     76    $liste_plug = liste_plugin_files();
     77    $liste_plug_compat = liste_plugin_valides($liste_plug);
     78    $liste_plug_compat_base = $liste_plug_compat[2];
     79    $liste_plug_compat = $liste_plug_compat[0];
     80
     81    foreach ($sites as $v) {
     82        $nom_site = $stats = $plugins = $erreur = $version_installee = '';
     83
     84        if (lire_fichier_securise(_DIR_RACINE.$GLOBALS['mutualisation_dir'].'/'.$v.'/tmp/meta_cache.php', $meta) and is_array($meta = @unserialize($meta)) and $url = $meta['adresse_site']) {
     85            $url .= '/';
     86            $nom_site = sinon(importer_charset($meta['nom_site'], $meta['charset']), $v);
     87            $stats = intval($meta['popularite_total']);
     88            if ($cfg = @unserialize($meta['plugin'])) {
     89                $plugins = array_keys($cfg);
     90                ksort($plugins);
     91                foreach ($plugins as $plugin) {
     92                    $lsplugs[strtolower($plugin)][] = $alias[$v];
     93                    $versionplug[strtolower($plugin)] = $cfg[$plugin]['version'];
     94                    // Spip n'est pas un plugin… Mais en fait oui.
     95                    // unset($lsplugs['spip']);
     96                    // unset($versionplug['spip']);
     97                }
     98                $cntplugins = count($plugins);
     99                $plugins = strtolower(implode(', ', $plugins));
     100            } else {
     101                $plugins = '-';
     102            }
     103
     104            // S'il faut upgrader, creer un bouton qui permettra
     105            // de faire la mise a jour directement depuis le site maitre
     106            // Pour cela, on cree un bouton avec un secret, que mutualiser.php
     107            // va intercepter (pas terrible ?)
     108            $erreur = test_upgrade_site($meta);
     109            $adminplugin = adminplugin_site($meta, $liste_plug_compat, $liste_plug_compat_base);
     110            $version_installee = ' <em><small>'.$meta['version_installee'].'</small></em>';
     111        } else {
     112            $url = 'http://'.$v.'/';
     113            $erreur = ' <em><small><span class="erreur">Erreur&nbsp;!</span></small></em>';
     114            $plugins = '-';
     115        }
     116
     117        $compression = '';
     118        if ($meta['auto_compress_css'] == 'oui') {
     119            $compression .= 'CSS';
     120        }
     121        if ($meta['auto_compress_js'] == 'oui') {
     122            $compression .= ($compression != '') ? '+JS' : 'JS';
     123        }
     124        if ($meta['auto_compress_http'] == 'oui') {
     125            $compression .= ($compression != '') ? '+HTTP' : 'HTTP';
     126        }
     127        if ($compression == '') {
     128            $compression = _L('Activer');
     129        }
     130        $page .= '<script type="text/javascript">
    120131                //<![CDATA[
    121                 tableau_sites.push(["../../' . $GLOBALS['mutualisation_dir'] . '/' . $v . '"]);
     132                tableau_sites.push(["../../'.$GLOBALS['mutualisation_dir'].'/'.$v.'"]);
    122133                //]]>
    123134                </script>
    124135                ';
    125136
    126                 $page .= "<tr class='tr" . $nsite % 2 . "'" . " style='background-image: url(${url}ecrire/index.php?exec=mutualisation&amp;renouvelle_alea=yo)' id='$alias[$v]'>\n
     137        $page .= "<tr class='tr".$nsite % 2 ."'"." style='background-image: url(${url}ecrire/index.php?exec=mutualisation&amp;renouvelle_alea=yo)' id='$alias[$v]'>\n
    127138                        <td style='text-align:right;'><img src='${url}favicon.ico' style='float:left;' />$v$erreur$version_installee</td>\n
    128                         <td><a href='${url}'>" . typo($nom_site) . "</a></td>\n
     139                        <td><a href='${url}'>".typo($nom_site)."</a></td>\n
    129140                        <td><a href='${url}ecrire/'>ecrire</a><br />
    130141                                <a href='${url}$url_admin_plugin'>plugins</a><br />
     
    136147                        <td>$adminplugin<a href='${url}$url_admin_plugin'>${cntplugins}</a> <small>${plugins}</small></td>\n
    137148                        <td><a href='${url}$url_compresseur'>$compression</a></td>\n
    138                         <td style='text-align:right;'>" . date_creation_repertoire_site($v) . "</td>\n
     149                        <td style='text-align:right;'>".date_creation_repertoire_site($v)."</td>\n
    139150                        </tr>\n";
    140                 $nsite++;
    141         }
    142         $page .= "</tbody></table>";
    143 
    144         // On liste ici tous les plugins-dist de la mutu.
    145         // Ça sera calculé une seule fois pour toute et réutilisé dans la fonction plus loin.
    146         $list_dist = array();
    147         // correspond à plugins-dist/nom_plugin/paquet.xml
    148         if (glob(_DIR_PLUGINS_DIST . '*/paquet.xml', GLOB_NOSORT)) {
    149                 foreach (glob(_DIR_PLUGINS_DIST . '*/paquet.xml',GLOB_NOSORT) as $value) {
    150                         if (preg_match('/prefix="([^"]*)"/i', file_get_contents($value), $r)) {
    151                                 $list_dist[] = strtolower(trim($r[1]));
    152                         }
    153                 }
    154         }
    155 
    156         if ($lsplugs) {
    157                 $nombre_plugins = count($lsplugs);
    158                 $page .= "<br /><br /><table style='clear:both;'>
     151        $nsite++;
     152    }
     153    $page .= '</tbody></table>';
     154
     155    // On liste ici tous les plugins-dist de la mutu.
     156    // Ça sera calculé une seule fois pour toute et réutilisé dans la fonction plus loin.
     157    $list_dist = array();
     158    // correspond à plugins-dist/nom_plugin/paquet.xml
     159    if ($les_paquets = glob(_DIR_PLUGINS_DIST.'*/paquet.xml', GLOB_NOSORT)) {
     160        foreach ($les_paquets as $value) {
     161            if (preg_match('/prefix="([^"]*)"/i', file_get_contents($value), $r)) {
     162                $list_dist[] = strtolower(trim($r[1]));
     163            }
     164        }
     165    }
     166
     167    if ($lsplugs) {
     168        $nombre_plugins = count($lsplugs);
     169        $page .= "<br /><br /><table style='clear:both;'>
    159170        <thead>\n
    160171                <tr>
     
    167178        </thead>
    168179        <tbody>";
    169                 foreach ($lsplugs as $plugin => $c) {
    170                         $plnum[count($c)] .= "<tr>\n<td>" . count($c) . "</td>\n<td>$plugin</td>\n" . "<td>" . pluginDist($list_dist, $plugin) . "</td>\n<td>" . $versionplug[$plugin] . "</td>\n<td>" . join(', ', ancre_site($c)) . '</td>' . "\n" . '</tr>' . "\n";
    171                 }
    172                 krsort($plnum);
    173                 $page .= join('', $plnum);
    174                 $page .= "</tbody>\n</table>\n";
    175 
    176                 $inutile = $extract = $list = array();
    177                 // On crée une variable ici qui regardera les particularités des fichiers xml d'un plugin.
    178                 // Si à l'avenir on change de terminologie de fichier xml, il suffira de l'ajouter dans un nouvel array()
    179                 $cfg = array( array('fn' => 'paquet.xml', 'pre' => '/prefix="([^"]*)"/i', 'ver' => '/version="([^"]*)"/i', ), array('fn' => 'plugin.xml', 'pre' => ',<prefix>([^<]+),ims', 'ver' => ',<version>([^<]+),ims', ), );
    180 
    181                 $ustart_glob = memory_get_peak_usage(true);
    182 
    183                 // Ici on est en SPIP 3.
    184                 // En spip 3, avec SVP, on liste les plugins dans des sous-répertoires.
    185                 // Ca peut aller jusqu'a 3 sous-répertoires.
    186                 // On garde l'ancien principe d'un sous-répertoire pour ne pas casser la compat.
    187 
    188                 // Utiliser la classe si elle existe (PHP 5.3+)
    189                 $dir = _DIR_PLUGINS;
    190                 if (class_exists('FilesystemIterator') AND is_dir(_DIR_PLUGINS)) {
    191                         $dir_it = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
    192                         $it = new RecursiveIteratorIterator($dir_it, RecursiveIteratorIterator::SELF_FIRST);
    193 
    194                         foreach ($it as $path => $fo) {
    195                                 if (!$fo -> isDir()) {
    196                                         continue;
    197                                 }
    198 
    199                                 $path .= '/';
    200 
    201                                 foreach ($cfg as $k => $v) {
    202                                         if (file_exists($path . $v['fn'])) {
    203                                                 $res = processConfig($cfg[$k], $lsplugs, $path);
    204                                                 if (false !== $res) {
    205                                                         $inutile[] = $res;
    206                                                 }
    207                                                 break;
    208                                         }
    209                                 }
    210                         }
    211                 } else {
    212                         // Pour php < 5.3
    213                         // correspond à plugins/nom_plugin/fichier.xml
    214                         if (glob(_DIR_PLUGINS . '*/{paquet,plugin}.xml', GLOB_BRACE)) {
    215                                 foreach (glob(_DIR_PLUGINS . '*/{paquet,plugin}.xml',GLOB_BRACE) as $value) {
    216                                         $list[] = $value;
    217                                 }
    218                         }
    219                         // correspond à plugins/auto/nom_plugin/fichier.xml
    220                         if (glob(_DIR_PLUGINS . '*/*/{paquet,plugin}.xml', GLOB_BRACE)) {
    221                                 foreach (glob(_DIR_PLUGINS . '*/*/{paquet,plugin}.xml',GLOB_BRACE) as $value) {
    222                                         $list[] = $value;
    223                                 }
    224                         }
    225                         // correspond à plugins/auto/nom_plugin/x.y.z/fichier.xml
    226                         if (glob(_DIR_PLUGINS . '*/*/*/{paquet,plugin}.xml', GLOB_BRACE)) {
    227                                 foreach (glob(_DIR_PLUGINS . '*/*/*/{paquet,plugin}.xml',GLOB_BRACE) as $value) {
    228                                         $list[] = $value;
    229                                 }
    230                         }
    231 
    232                         // Ici on va prendre les chemins d'extrusion uniquement, sans distinction du fichier xml
    233                         foreach ($list as $value) {
    234                                 $extract[] = str_replace(array('plugin.xml', 'paquet.xml'), '', $value);
    235                         }
    236                         // On dédoublonne
    237                         $extract = array_unique($extract);
    238                         foreach ($extract as $url) {
    239                                 // Et on refait une recherche pour paquet.xml d'abord
    240                                 if (glob($url . 'paquet.xml', GLOB_NOSORT)) {
    241                                         $result = glob($url . 'paquet.xml', GLOB_NOSORT);
    242                                         $result = $result[0];
    243                                         // dans paquet.xml on cherche la valeur de l'attribut prefix
    244                                         if (preg_match('/prefix="([^"]*)"/i', file_get_contents($result), $r) AND !$lsplugs[strtolower(trim($r[1]))]) {
    245                                                 preg_match('/version="([^"]*)"/i', file_get_contents($result), $n);
    246                                                 $inutile[] = trim($r[1]) . ' (' . $n[1] . ')';
    247                                         }
    248 
    249                                 } else {// Si pas de paquet.xml, on cherche plugin.xml
    250                                         $result = glob($url . 'plugin.xml', GLOB_NOSORT);
    251                                         $result = $result[0];
    252                                         // là, on reprend l'ancien code. On cherche la valeur de la balise prefix
    253                                         if (preg_match(',<prefix>([^<]+),ims', file_get_contents($result), $r) AND !$lsplugs[strtolower(trim($r[1]))]) {
    254                                                 preg_match(',<version>([^<]+),ims', file_get_contents($result), $n);
    255                                                 $inutile[] = trim($r[1]) . ' (' . $n[1] . ')';
    256                                         }
    257                                 }
    258                         }
    259                 }
    260 
    261                 $uend_glob = memory_get_peak_usage(true);
    262                 $inutile = array_map('mb_strtolower', $inutile);
    263                 sort($inutile);
    264 
    265                 if ($inutile) {
    266                         $nombre_plugins_inutiles = count($inutile);
    267                         $page .= "<div class='inutilises'>\n<p><strong>" . _L('Plugins inutilis&#233;s :') . "</strong> " . join(', ', $inutile) . ".<br />";
    268                         $page .= "<em>Soit " . $nombre_plugins_inutiles . _L(' plugins inutilis&#233;s') . ".</em></p>\n</div>";
    269                 }
    270         }
    271 
    272         $page .= '<div style="text-align:center;"><img src="' . find_in_path('mutualisation/mutualiser.png') . '" alt="" /></div>';
    273 
    274         $page = minipres($titre, $page);
    275 
    276         $page = str_replace('</head>', '
     180        foreach ($lsplugs as $plugin => $c) {
     181            $plnum[count($c)] .= "<tr>\n<td>".count($c)."</td>\n<td>$plugin</td>\n".'<td>'.pluginDist($list_dist, $plugin)."</td>\n<td>".$versionplug[$plugin]."</td>\n<td>".implode(', ', ancre_site($c)).'</td>'."\n".'</tr>'."\n";
     182        }
     183        krsort($plnum);
     184        $page .= implode('', $plnum);
     185        $page .= "</tbody>\n</table>\n";
     186
     187        $inutile = $extract = $list = array();
     188        // On crée une variable ici qui regardera les particularités des fichiers xml d'un plugin.
     189        // Si à l'avenir on change de terminologie de fichier xml, il suffira de l'ajouter dans un nouvel array()
     190        $cfg = array(array('fn' => 'paquet.xml', 'pre' => '/prefix="([^"]*)"/i', 'ver' => '/version="([^"]*)"/i'), array('fn' => 'plugin.xml', 'pre' => ',<prefix>([^<]+),ims', 'ver' => ',<version>([^<]+),ims'));
     191
     192        $ustart_glob = memory_get_peak_usage(true);
     193
     194        // Ici on est en SPIP 3.
     195        // En spip 3, avec SVP, on liste les plugins dans des sous-répertoires.
     196        // Ca peut aller jusqu'a 3 sous-répertoires.
     197        // On garde l'ancien principe d'un sous-répertoire pour ne pas casser la compat.
     198
     199        // Utiliser la classe si elle existe (PHP 5.3+)
     200        $dir = _DIR_PLUGINS;
     201        if (class_exists('FilesystemIterator') and is_dir(_DIR_PLUGINS)) {
     202            $dir_it = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
     203            $it = new RecursiveIteratorIterator($dir_it, RecursiveIteratorIterator::SELF_FIRST);
     204
     205            foreach ($it as $path => $fo) {
     206                if (!$fo->isDir()) {
     207                    continue;
     208                }
     209
     210                $path .= '/';
     211
     212                foreach ($cfg as $k => $v) {
     213                    if (file_exists($path.$v['fn'])) {
     214                        $res = processConfig($cfg[$k], $lsplugs, $path);
     215                        if (false !== $res) {
     216                            $inutile[] = $res;
     217                        }
     218                        break;
     219                    }
     220                }
     221            }
     222        } else {
     223            // Pour php < 5.3
     224            // correspond à plugins/nom_plugin/fichier.xml
     225            if ($les_paquets = glob(_DIR_PLUGINS.'*/{paquet,plugin}.xml', GLOB_BRACE)) {
     226                foreach ($les_paquets as $value) {
     227                    $list[] = $value;
     228                }
     229            }
     230            // correspond à plugins/auto/nom_plugin/fichier.xml
     231            if ($les_paquets = glob(_DIR_PLUGINS.'*/*/{paquet,plugin}.xml', GLOB_BRACE)) {
     232                foreach ($les_paquets as $value) {
     233                    $list[] = $value;
     234                }
     235            }
     236            // correspond à plugins/auto/nom_plugin/x.y.z/fichier.xml
     237            if ($les_paquets = glob(_DIR_PLUGINS.'*/*/*/{paquet,plugin}.xml', GLOB_BRACE)) {
     238                foreach ($les_paquets as $value) {
     239                    $list[] = $value;
     240                }
     241            }
     242
     243            // Ici on va prendre les chemins d'extrusion uniquement, sans distinction du fichier xml
     244            foreach ($list as $value) {
     245                $extract[] = str_replace(array('plugin.xml', 'paquet.xml'), '', $value);
     246            }
     247            // On dédoublonne
     248            $extract = array_unique($extract);
     249            foreach ($extract as $url) {
     250                // Et on refait une recherche pour paquet.xml d'abord
     251                if ($result = glob($url.'paquet.xml', GLOB_NOSORT)) {
     252                    $result = $result[0];
     253                    // dans paquet.xml on cherche la valeur de l'attribut prefix
     254                    if (preg_match('/prefix="([^"]*)"/i', file_get_contents($result), $r) and !$lsplugs[strtolower(trim($r[1]))]) {
     255                        preg_match('/version="([^"]*)"/i', file_get_contents($result), $n);
     256                        $inutile[] = trim($r[1]).' ('.$n[1].')';
     257                    }
     258                } else {
     259                    // Si pas de paquet.xml, on cherche plugin.xml
     260                    $result = glob($url.'plugin.xml', GLOB_NOSORT);
     261                    $result = $result[0];
     262                    // là, on reprend l'ancien code. On cherche la valeur de la balise prefix
     263                    if (preg_match(',<prefix>([^<]+),ims', file_get_contents($result), $r) and !$lsplugs[strtolower(trim($r[1]))]) {
     264                        preg_match(',<version>([^<]+),ims', file_get_contents($result), $n);
     265                        $inutile[] = trim($r[1]).' ('.$n[1].')';
     266                    }
     267                }
     268            }
     269        }
     270
     271        $uend_glob = memory_get_peak_usage(true);
     272        $inutile = array_map('mb_strtolower', $inutile);
     273        sort($inutile);
     274
     275        if ($inutile) {
     276            $nombre_plugins_inutiles = count($inutile);
     277            $page .= "<div class='inutilises'>\n<p><strong>"._L('Plugins inutilis&#233;s :').'</strong> '.implode(', ', $inutile).'.<br />';
     278            $page .= '<em>Soit '.$nombre_plugins_inutiles._L(' plugins inutilis&#233;s').".</em></p>\n</div>";
     279        }
     280    }
     281
     282    $page .= '<div style="text-align:center;"><img src="'.find_in_path('mutualisation/mutualiser.png').'" alt="" /></div>';
     283
     284    $page = minipres($titre, $page);
     285
     286    $page = str_replace('</head>', '
    277287                <link rel="stylesheet" type="text/css" href="../mutualisation/mutualisation.css" />
    278288                <script src="../prive/javascript/jquery.js" type="text/javascript"></script>
     
    282292                ', $page);
    283293
    284         $uend = memory_get_peak_usage(true);
    285         $udiff = $uend - $ustart;
    286         $udiff_glob = $uend_glob - $ustart_glob;
    287         $timeend = microtime(true);
    288         $time = $timeend - $timestart;
    289         $page_load_time = number_format($time, 3);
    290 
    291         // On génère le contenu de notre toolbar.
    292         $debug_toolbar = "<div class='toolbar'>\n";
    293 
    294         $debug_toolbar .= "<div class='toolbar-block'>\n";
    295         $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-php_info'></i></div>\n";
    296         $debug_toolbar .= "<div class='toolbar-info'>\n";
    297         $debug_toolbar .= "<div class='toolbar-info-element'><b>SPIP</b> <span>" . $GLOBALS['spip_version_branche'] . "</span></div>\n";
    298         $debug_toolbar .= "<div class='toolbar-info-element'><b>PHP</b> <span>" . phpversion() . "</span></div>\n";
    299         $debug_toolbar .= "<div class='toolbar-info-element'><b>Mémoire allouée</b> <span>" . $memory_limit . "</span></div>\n";
    300         $debug_toolbar .= "<div class='toolbar-info-element'><b>Serveur</b> <span>" . $_SERVER["SERVER_SOFTWARE"] . "</span></div>\n";
    301         $debug_toolbar .= "</div></div>\n";
    302 
    303         $debug_toolbar .= "<div class='toolbar-block'>\n";
    304         $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-plugins'></i><span>" . ($nombre_plugins_inutiles + $nombre_plugins) . " plugins</span></div>\n";
    305         $debug_toolbar .= "<div class='toolbar-info'>\n";
    306         $debug_toolbar .= "<div class='toolbar-info-element'><b>Utilisés</b> <span>" . $nombre_plugins . "</span></div>\n";
    307         $debug_toolbar .= "<div class='toolbar-info-element'><b>Inutilisés</b> <span>" . $nombre_plugins_inutiles . "</span></div>\n";
    308         $debug_toolbar .= "<div class='toolbar-info-element'><b>Total</b> <span>" . ($nombre_plugins_inutiles + $nombre_plugins) . "</span></div>\n";
    309         $debug_toolbar .= "</div></div>\n";
    310 
    311         $debug_toolbar .= "<div class='toolbar-block'>\n";
    312         $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-memory'></i> <span>" . memoryUsage($udiff) . "</span></div>\n";
    313         $debug_toolbar .= "<div class='toolbar-info'>\n";
    314         $debug_toolbar .= "<div class='toolbar-info-element'><b>Mémoire :</b></div>\n";
    315         $debug_toolbar .= "<div class='toolbar-info-element'><b>Au début</b> <span>" . memoryUsage($ustart) . "</span></div>\n";
    316         $debug_toolbar .= "<div class='toolbar-info-element'><b>À la fin</b> <span>" . memoryUsage($uend) . "</span></div>\n";
    317         $debug_toolbar .= "<div class='toolbar-info-element'><b>Différence</b> <span>" . memoryUsage($udiff) . "</span></div>\n";
    318         $debug_toolbar .= "</div></div>\n";
    319 
    320         $debug_toolbar .= "<div class='toolbar-block'>\n";
    321         $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-time'></i> <span>" . $page_load_time . " s</span></div>\n";
    322         $debug_toolbar .= "<div class='toolbar-info'>";
    323         $debug_toolbar .= "<div class='toolbar-info-element'><b>Début du script</b> <span>" . date("H:i:s", $timestart) . "</span></div>\n";
    324         $debug_toolbar .= "<div class='toolbar-info-element'><b>Fin du script</b> <span>" . date("H:i:s", $timeend) . "</span></div>\n";
    325         $debug_toolbar .= "<div class='toolbar-info-element'><b>Temps d'exécution</b> <span>" . $page_load_time . " s</span></div>\n";
    326         $debug_toolbar .= "</div></div>\n";
    327 
    328         $debug_toolbar .= "</div>\n";
    329 
    330         $page = str_replace('</body>', $debug_toolbar . "\n </body>", $page);
    331 
    332         echo $page;
    333 }
    334 
    335 function test_upgrade_site($meta) {
    336         if ($GLOBALS['spip_version_base'] != str_replace(',', '.', $meta['version_installee'])) {
    337                 $secret = $meta['version_installee'] . '-' . $meta['popularite_total'];
    338                 $secret = md5($secret);
    339                 return <<<EOF
     294    $uend = memory_get_peak_usage(true);
     295    $udiff = $uend - $ustart;
     296    $udiff_glob = $uend_glob - $ustart_glob;
     297    $timeend = microtime(true);
     298    $time = $timeend - $timestart;
     299    $page_load_time = number_format($time, 3);
     300
     301    // On génère le contenu de notre toolbar.
     302    $debug_toolbar = "<div class='toolbar'>\n";
     303
     304    $debug_toolbar .= "<div class='toolbar-block'>\n";
     305    $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-php_info'></i></div>\n";
     306    $debug_toolbar .= "<div class='toolbar-info'>\n";
     307    $debug_toolbar .= "<div class='toolbar-info-element'><b>SPIP</b> <span>".$GLOBALS['spip_version_branche']."</span></div>\n";
     308    $debug_toolbar .= "<div class='toolbar-info-element'><b>PHP</b> <span>".phpversion()."</span></div>\n";
     309    $debug_toolbar .= "<div class='toolbar-info-element'><b>Mémoire allouée</b> <span>".$memory_limit."</span></div>\n";
     310    $debug_toolbar .= "<div class='toolbar-info-element'><b>Serveur</b> <span>".$_SERVER['SERVER_SOFTWARE']."</span></div>\n";
     311    $debug_toolbar .= "</div></div>\n";
     312
     313    $debug_toolbar .= "<div class='toolbar-block'>\n";
     314    $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-plugins'></i><span>".($nombre_plugins_inutiles + $nombre_plugins)." plugins</span></div>\n";
     315    $debug_toolbar .= "<div class='toolbar-info'>\n";
     316    $debug_toolbar .= "<div class='toolbar-info-element'><b>Utilisés</b> <span>".$nombre_plugins."</span></div>\n";
     317    $debug_toolbar .= "<div class='toolbar-info-element'><b>Inutilisés</b> <span>".$nombre_plugins_inutiles."</span></div>\n";
     318    $debug_toolbar .= "<div class='toolbar-info-element'><b>Total</b> <span>".($nombre_plugins_inutiles + $nombre_plugins)."</span></div>\n";
     319    $debug_toolbar .= "</div></div>\n";
     320
     321    $debug_toolbar .= "<div class='toolbar-block'>\n";
     322    $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-memory'></i> <span>".memoryUsage($udiff)."</span></div>\n";
     323    $debug_toolbar .= "<div class='toolbar-info'>\n";
     324    $debug_toolbar .= "<div class='toolbar-info-element'><b>Mémoire :</b></div>\n";
     325    $debug_toolbar .= "<div class='toolbar-info-element'><b>Au début</b> <span>".memoryUsage($ustart)."</span></div>\n";
     326    $debug_toolbar .= "<div class='toolbar-info-element'><b>À la fin</b> <span>".memoryUsage($uend)."</span></div>\n";
     327    $debug_toolbar .= "<div class='toolbar-info-element'><b>Différence</b> <span>".memoryUsage($udiff)."</span></div>\n";
     328    $debug_toolbar .= "</div></div>\n";
     329
     330    $debug_toolbar .= "<div class='toolbar-block'>\n";
     331    $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-time'></i> <span>".$page_load_time." s</span></div>\n";
     332    $debug_toolbar .= "<div class='toolbar-info'>";
     333    $debug_toolbar .= "<div class='toolbar-info-element'><b>Début du script</b> <span>".date('H:i:s', $timestart)."</span></div>\n";
     334    $debug_toolbar .= "<div class='toolbar-info-element'><b>Fin du script</b> <span>".date('H:i:s', $timeend)."</span></div>\n";
     335    $debug_toolbar .= "<div class='toolbar-info-element'><b>Temps d'exécution</b> <span>".$page_load_time." s</span></div>\n";
     336    $debug_toolbar .= "</div></div>\n";
     337
     338    $debug_toolbar .= "</div>\n";
     339
     340    $page = str_replace('</body>', $debug_toolbar."\n </body>", $page);
     341
     342    echo $page;
     343}
     344
     345function test_upgrade_site($meta)
     346{
     347    if ($GLOBALS['spip_version_base'] != str_replace(',', '.', $meta['version_installee'])) {
     348        $secret = $meta['version_installee'].'-'.$meta['popularite_total'];
     349        $secret = md5($secret);
     350
     351        return <<<EOF
    340352<form action='$meta[adresse_site]/ecrire/index.php?exec=mutualisation' method='post' class='upgrade' target='_blank'>
    341353<div>
     
    347359</form>
    348360EOF;
    349         }
    350 }
    351 
    352 function adminplugin_site($meta, $liste_plug_compat, $liste_plug_compat_base) {
    353         if ($cfg = @unserialize($meta['plugin'])) {
    354                 $plugins = array_keys($cfg);
    355                 ksort($plugins);
    356                 foreach ($plugins as $plugin) {
    357                         $vplugin_base = $meta[strtolower($plugin) . '_base_version'];
    358                         $nouvelle_version_plugin_base = $liste_plug_compat_base[$liste_plug_compat[$plugin]['dir_type']][$liste_plug_compat[$plugin]['dir']]['version_base'];
    359                         if ($cfg[$plugin]['version'] != $liste_plug_compat[$plugin]['version'] AND !is_null($liste_plug_compat[$plugin]['version']) AND ($vplugin_base != $nouvelle_version_plugin_base)) {
    360                                 $secret = $meta['version_installee'] . '-' . $meta['popularite_total'];
    361                                 $secret = md5($secret);
    362                                 $vplugin = $vplugin_base . '&rarr;' . $nouvelle_version_plugin_base;
    363                                 return <<<EOF
     361    }
     362}
     363
     364function adminplugin_site($meta, $liste_plug_compat, $liste_plug_compat_base)
     365{
     366    if ($cfg = @unserialize($meta['plugin'])) {
     367        $plugins = array_keys($cfg);
     368        ksort($plugins);
     369        foreach ($plugins as $plugin) {
     370            $vplugin_base = $meta[strtolower($plugin).'_base_version'];
     371            $nouvelle_version_plugin_base = $liste_plug_compat_base[$liste_plug_compat[$plugin]['dir_type']][$liste_plug_compat[$plugin]['dir']]['version_base'];
     372            if ($cfg[$plugin]['version'] != $liste_plug_compat[$plugin]['version'] and !is_null($liste_plug_compat[$plugin]['version']) and ($vplugin_base != $nouvelle_version_plugin_base)) {
     373                $secret = $meta['version_installee'].'-'.$meta['popularite_total'];
     374                $secret = md5($secret);
     375                $vplugin = $vplugin_base.'&rarr;'.$nouvelle_version_plugin_base;
     376
     377                return <<<EOF
    364378<form action='$meta[adresse_site]/ecrire/index.php?exec=mutualisation' method='post' class='upgrade' target='_blank'>
    365379<div>
     
    371385</form>
    372386EOF;
    373                         }
    374                 }
    375         }
    376         return '';
    377 }
    378 
    379 function date_creation_repertoire_site($v) {
    380         return (date("d/M/y", @filectime('../' . $GLOBALS['mutualisation_dir'] . '/' . $v . "/config/connect.php")));
    381 }
    382 
     387            }
     388        }
     389    }
     390
     391    return '';
     392}
     393
     394function date_creation_repertoire_site($v)
     395{
     396    return (date('d/M/y', @filectime('../'.$GLOBALS['mutualisation_dir'].'/'.$v.'/config/connect.php')));
     397}
    383398
    384399/**
    385400 * lister les sites qui ont des sites/xx/config/connect.php
    386  * avec 'connect.php' ne changeant pas de nom
     401 * avec 'connect.php' ne changeant pas de nom.
    387402 */
    388 function mutualisation_lister_sites_dist() {
    389         $sites = array();
    390         foreach (glob('../'.$GLOBALS['mutualisation_dir'].'/*/config/connect.php') as $s) {
    391                 $sites[] = preg_replace(',^\.\./' . $GLOBALS['mutualisation_dir'] . '/(.*)/config/connect.php,', '\1', $s);
    392         }
    393         sort($sites);
    394         return $sites;
     403function mutualisation_lister_sites_dist()
     404{
     405    $sites = array();
     406    foreach (glob('../'.$GLOBALS['mutualisation_dir'].'/*/config/connect.php') as $s) {
     407        $sites[] = preg_replace(',^\.\./'.$GLOBALS['mutualisation_dir'].'/(.*)/config/connect.php,', '\1', $s);
     408    }
     409    sort($sites);
     410
     411    return $sites;
    395412}
    396413/**
    397414 * autre exemple pour ceux qui mettent tous leurs fichiers de connexion
    398415 * dans /config/connect/xx.php
    399  * fonction a mettre dans mes_options.php ou dans mutualisations/lister_sites.php
     416 * fonction a mettre dans mes_options.php ou dans mutualisations/lister_sites.php.
    400417 */
    401  
     418
    402419/*
    403420 function mutualisation_lister_sites() {
     
    418435
    419436// faire une ancre vers le tableau des sites en haut de page
    420 function ancre_site($c) {
    421         foreach ($c as $key => $value) {
    422                 $c[$key] = "<a href='#$value'>" . $value . "</a>";
    423         }
    424         return $c;
    425 }
    426 
    427 function memoryUsage($bytes) {
    428         $bytes = (int)$bytes;
    429 
    430         if ($bytes > 1024 * 1024)
    431                 return round($bytes / 1024 / 1024, 2) . ' MB';
    432         else if ($bytes > 1024)
    433                 return round($bytes / 1024, 2) . ' KB';
    434 
    435         return $bytes . ' B';
    436 }
    437 
    438 function pluginDist($array, $plugin) {
    439 
    440         $p = "-";
    441         if (in_array($plugin, $array))
    442                 $p = "Oui";
    443         return $p;
     437function ancre_site($c)
     438{
     439    foreach ($c as $key => $value) {
     440        $c[$key] = "<a href='#$value'>".$value.'</a>';
     441    }
     442
     443    return $c;
     444}
     445
     446function memoryUsage($bytes)
     447{
     448    $bytes = (int) $bytes;
     449
     450    if ($bytes > 1024 * 1024) {
     451        return round($bytes / 1024 / 1024, 2).' MB';
     452    } elseif ($bytes > 1024) {
     453        return round($bytes / 1024, 2).' KB';
     454    }
     455
     456    return $bytes.' B';
     457}
     458
     459function pluginDist($array, $plugin)
     460{
     461    $p = '-';
     462    if (in_array($plugin, $array)) {
     463        $p = 'Oui';
     464    }
     465
     466    return $p;
    444467}
    445468
    446469/**
    447470 * Petite fonction qui va automatiser la recherche de paquet.xml ou plugin.xml
    448  * quelque soit la profondeur dans l'arborescence
     471 * quelque soit la profondeur dans l'arborescence.
    449472 */
    450 function processConfig(&$cfg, &$lsplugs, $path) {
    451         // echo "<!-- Process: " . $path . $cfg['fn'] . "--> \n";
    452         $data = file_get_contents($path . $cfg['fn']);
    453 
    454         if (1 === preg_match($cfg['pre'], $data, $r) AND !$lsplugs[strtolower(trim($r[1]))]) {
    455                 preg_match($cfg['ver'], $data, $n);
    456                 return trim($r[1]) . ' (' . $n[1] . ')';
    457         }
    458 
    459         return false;
    460 }
    461 ?>
     473function processConfig(&$cfg, &$lsplugs, $path)
     474{
     475    // echo "<!-- Process: " . $path . $cfg['fn'] . "--> \n";
     476    $data = file_get_contents($path.$cfg['fn']);
     477
     478    if (1 === preg_match($cfg['pre'], $data, $r) and !$lsplugs[strtolower(trim($r[1]))]) {
     479        preg_match($cfg['ver'], $data, $n);
     480
     481        return trim($r[1]).' ('.$n[1].')';
     482    }
     483
     484    return false;
     485}
  • _plugins_/mutualisation/trunk/mutualisation_toolbar.js

    r74053 r90132  
    11jQuery(document).ready(function($) {
    2        
     2
    33        $('.toolbar-block .toolbar-icon').on({
    44                mouseover: function(){
  • _plugins_/mutualisation/trunk/mutualiser.php

    r90098 r90132  
    132132            // nom d'utilisateur et mot de passe
    133133            define('_INSTALL_USER_DB', _INSTALL_NAME_DB);
    134             define('_INSTALL_PASS_DB',
     134            /*
     135             * _INSTALL_PASS_DB_ROOT : secret du site
     136             * $_SERVER['HTTP_HOST'] : un truc variable, mais reutilisable site par site
     137             * _INSTALL_USER_DB : un autre truc variable
     138             */
     139            define(
     140                '_INSTALL_PASS_DB',
    135141                substr(md5(
    136                     _INSTALL_PASS_DB_ROOT   # secret du site
    137 .$_SERVER['HTTP_HOST'] # un truc variable, mais reutilisable site par site
    138 ._INSTALL_USER_DB # un autre truc variable
     142                    _INSTALL_PASS_DB_ROOT.$_SERVER['HTTP_HOST']._INSTALL_USER_DB
    139143                ), 0, 8)
    140144            );
     
    172176     * Tout est pret, on execute la mutualisation.
    173177     */
    174     define('_SPIP_PATH',
     178    define(
     179        '_SPIP_PATH',
    175180        _DIR_SITE.':'.
    176181        _DIR_RACINE.':'.
    177182        _DIR_RACINE.'squelettes-dist/:'.
    178183        _DIR_RACINE.'prive/:'.
    179         _DIR_RESTREINT);
     184        _DIR_RESTREINT
     185    );
    180186
    181187    if (is_dir(_DIR_SITE.'squelettes')) {
     
    262268 *
    263269 * @param string $flux
    264  *              L'URL à réécrire
     270 *        L'URL à réécrire
    265271 */
    266272function mutualisation_url_img_courtes($flux)
     
    291297 *
    292298 * @param string $site
    293  *              Le nom du site
     299 *        Le nom du site
    294300 */
    295301function prefixe_mutualisation($site)
  • _plugins_/mutualisation/trunk/mutualiser_creer.php

    r90098 r90132  
    134134                '<div>'.$menu_langues."<br /></div>\n".
    135135                "<div><img alt='SPIP' src='".find_in_path('images/logo-spip.gif')."' /></div>\n".
    136 
    137136                (isset($_REQUEST['code_activation'])
    138137                    ? _T('mutu:install_err')
    139138                    : ''
    140139                ).
    141 
    142140                '<h3>'.
    143141                ($options['utiliser_panel'] ? _T('mutu:install_code_panel') : _T('mutu:install_code')).
    144142                '</h3>'.
    145 
    146143                "<form method='post' action='".self()."'><div>
    147144                                <input type='password' name='code_activation' size='10' />
     
    172169            and defined('_INSTALL_NAME_DB')) {
    173170            if (defined('_INSTALL_USER_DB_ROOT')) {
    174                 $link = mutu_connect_db(_INSTALL_HOST_DB, 0,  _INSTALL_USER_DB_ROOT, _INSTALL_PASS_DB_ROOT, '', _INSTALL_SERVER_DB);
     171                $link = mutu_connect_db(_INSTALL_HOST_DB, 0, _INSTALL_USER_DB_ROOT, _INSTALL_PASS_DB_ROOT, '', _INSTALL_SERVER_DB);
    175172            } else {
    176                 $link = mutu_connect_db(_INSTALL_HOST_DB, 0,  _INSTALL_USER_DB, _INSTALL_PASS_DB, '', _INSTALL_SERVER_DB);
     173                $link = mutu_connect_db(_INSTALL_HOST_DB, 0, _INSTALL_USER_DB, _INSTALL_PASS_DB, '', _INSTALL_SERVER_DB);
    177174            }
    178175
     
    181178            if (!sql_selectdb(_INSTALL_NAME_DB, _INSTALL_SERVER_DB)) {
    182179                if (_request('creerbase') == 'oui') {
    183 
    184180                    // mode de creation par un ping sur une URL (AlternC)
    185181                    // on le fait en local et en POST, donc pas de trou de secu
     
    218214                         */
    219215                        if ($options['creer_user_base']) {
    220 
    221216                            // le nom de la machine MySQL peut etre different
    222217                            // du nom de la connexion via DNS
     
    258253                            }
    259254                            mutu_close();
    260                             $link = mutu_connect_db(_INSTALL_HOST_DB, '',  _INSTALL_USER_DB, _INSTALL_PASS_DB, '', _INSTALL_SERVER_DB);
     255                            $link = mutu_connect_db(_INSTALL_HOST_DB, '', _INSTALL_USER_DB, _INSTALL_PASS_DB, '', _INSTALL_SERVER_DB);
    261256                        }
    262257
     
    387382            }
    388383            exit;
    389         } elseif (
    390             !is_dir($e._NOM_PERMANENTS_INACCESSIBLES)
     384        } elseif (!is_dir($e._NOM_PERMANENTS_INACCESSIBLES)
    391385            || !is_dir($e._NOM_PERMANENTS_ACCESSIBLES)
    392386            || !is_dir($e._NOM_TEMPORAIRES_INACCESSIBLES)
     
    436430    echo mutu_minipres(
    437431        _T('mutu:install_rep_bd_ok'),
    438 
    439         "<div><img alt='SPIP' src='".find_in_path('images/logo-spip.gif')."' /></div>\n"
    440         .'<h3>'.
    441             _T('mutu:install_spip_3', array('url' => generer_url_ecrire('install')))
     432        "<div><img alt='SPIP' src='"
     433        .find_in_path('images/logo-spip.gif')
     434        ."' /></div>\n"
     435        .'<h3>'
     436        ._T('mutu:install_spip_3', array('url' => generer_url_ecrire('install')))
    442437        .'</h3>',
    443438        " id='mutu'"
  • _plugins_/mutualisation/trunk/mutualiser_gerer_img.php

    r90098 r90132  
    8080            array(_DIR_VAR, _DIR_IMG),
    8181            array(_URL_VAR, _URL_IMG),
    82         $flux);
     82            $flux
     83        );
    8384    } else {
    8485        return $flux;
  • _plugins_/mutualisation/trunk/mutualiser_upgrade.php

    r90098 r90132  
    3434    if ($old == $new
    3535    or $new != $GLOBALS['spip_version_base']) {
    36         echo minipres(_T('titre_page_upgrade'),
    37             _L('Erreur de mise &#224; jour de @old@ vers @new@',
    38                 array('old' => $old, 'new' => $new))
     36        echo minipres(
     37            _T('titre_page_upgrade'),
     38            _L('Erreur de mise &#224; jour de @old@ vers @new@', array('old' => $old, 'new' => $new))
    3939        );
    4040    } else {
    41         echo minipres(_T('titre_page_upgrade'),
    42             _L('La base de donn&#233;es a &#233;t&#233; mise &#224; jour de @old@ vers @new@',
    43                 array('old' => $old, 'new' => $new))
     41        echo minipres(
     42            _T('titre_page_upgrade'),
     43            _L('La base de donn&#233;es a &#233;t&#233; mise &#224; jour de @old@ vers @new@', array('old' => $old, 'new' => $new))
    4444        );
    4545        // Installer les plugins
     
    5353        purger_repertoire(_DIR_TMP);
    5454        ecrire_metas();
    55         echo minipres(_T('titre_page_upgrade'),
    56             _L('Aller dans <a href="@ecrire@">ecrire/</a>',
    57                 array('ecrire' => $GLOBALS['meta']['adresse_site'].'/'._DIR_RESTREINT_ABS))
     55        echo minipres(
     56            _T('titre_page_upgrade'),
     57            _L('Aller dans <a href="@ecrire@">ecrire/</a>', array('ecrire' => $GLOBALS['meta']['adresse_site'].'/'._DIR_RESTREINT_ABS))
    5858        );
    5959    }
  • _plugins_/mutualisation/trunk/mutualiser_upgradeplugins.php

    r90098 r90132  
    1313    if (_request('secret')
    1414    != md5(
    15     $GLOBALS['meta']['version_installee'].'-'.$GLOBALS['meta']['popularite_total']
     15        $GLOBALS['meta']['version_installee'].'-'.$GLOBALS['meta']['popularite_total']
    1616    )) {
    1717        include_spip('inc/headers');
     
    2222    // faire l'upgrade
    2323    lire_metas();
    24     echo minipres(_T('titre_page_upgrade'),
     24    echo minipres(
     25        _T('titre_page_upgrade'),
    2526        _L('Mise &agrave; jour des plugins')
    2627    );
     
    3536    purger_repertoire(_DIR_TMP);
    3637    ecrire_metas();
    37     echo minipres(_T('titre_page_upgrade'),
    38         _L('Aller dans <a href="@ecrire@">ecrire/</a>',
    39             array('ecrire' => $GLOBALS['meta']['adresse_site'].'/'._DIR_RESTREINT_ABS))
     38    echo minipres(
     39        _T('titre_page_upgrade'),
     40        _L('Aller dans <a href="@ecrire@">ecrire/</a>', array('ecrire' => $GLOBALS['meta']['adresse_site'].'/'._DIR_RESTREINT_ABS))
    4041    );
    4142    exit;
  • _plugins_/mutualisation/trunk/paquet.xml

    r90098 r90132  
    22        prefix="Mutualisation"
    33        categorie="maintenance"
    4         version="1.2.4"
     4        version="1.2.5"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
    77        logo="mutualiser.png"
    88        documentation="http://contrib.spip.net/La-mutualisation-facile-modifications-manuelles"
    9 >       
     9>
    1010
    1111        <nom>Mutualisation facile</nom>
     
    1313
    1414        <auteur>Fil</auteur>
    15         <auteur mail="teddy.spip@gmail.com">Teddy</auteur>
     15        <auteur>Teddy</auteur>
    1616
    1717        <copyright>2007-2015</copyright>
Note: See TracChangeset for help on using the changeset viewer.