source: spip-zone/_plugins_/mutualisation/trunk/exec/mutualisation.php @ 104581

Last change on this file since 104581 was 104581, checked in by teddy.spip@…, 3 years ago

Des warnings en moins

File size: 20.6 KB
Line 
1<?php
2
3header('charset:UTF-8');
4
5if (!defined('_ECRIRE_INC_VERSION')) {
6        return;
7}
8
9function exec_mutualisation_dist() {
10        $ustart = memory_get_peak_usage(true);
11        $timestart = microtime(true);
12        $memory_limit = strtolower(ini_get('memory_limit'));
13
14        $plnum = $lsplugs = $versionplug = array();
15        $adminplugin = $compression = '';
16        $cntplugins = 0;
17
18        include_spip('inc/minipres');
19        include_spip('inc/filtres');
20
21        // pas admin ? passe ton chemin
22        if (($GLOBALS['visiteur_session']['statut'] != '0minirezo') and ($_SERVER['REMOTE_ADDR'] != '127.0.0.1')) {
23                die('pas admin !');
24        }
25
26        $lister_sites = charger_fonction('lister_sites', 'mutualisation');
27        $sites = $lister_sites();
28
29        $branche_nom = 'spip-' . $GLOBALS['spip_version_branche'];
30        $version_spip = intval($GLOBALS['spip_version_branche']);
31
32        $url_stats = 'ecrire/?exec=stats_visites';
33        $url_compresseur = 'ecrire/?exec=configurer_avancees#formulaire_configurer_compresseur';
34        $url_admin_plugin = 'ecrire/?exec=admin_plugin';
35        $url_admin_vider = 'ecrire/?exec=admin_vider';
36
37        if (!file_exists(_DIR_IMG . 'mutualiser.png')) {
38                @copy(find_in_path('mutualiser.png'), _DIR_IMG . 'mutualiser.png');
39        }
40
41        $titre = _L(count($sites) . ' ' . 'sites mutualis&#233;s <em>(' . _T('version') . ' ' . $GLOBALS['spip_version_base'] . ')</em>');
42
43        //$page .= "<div id='trace'></div>" ;
44        $page = "<table class='sites'>
45    <thead>
46        <tr>
47            <td>Site</td>
48            <td>Nom</td>
49            <td>Admin</td>
50            <td id='IMG'>IMG<span class='unite'>&nbsp;(Mo)</span><br />
51                <input type='button' name='IMGcalculer' id='IMGcalculer' value='Calculer' onclick='rechercher_tailles(\"IMG\");' /></td>
52            <td id='local'>local<span class='unite'>&nbsp;(Mo)</span><br />
53                <input type='button' name='localcalculer' id='localcalculer' value='Calculer' onclick='rechercher_tailles(\"local\");' /></td>
54            <td id='cache'>cache<span class='unite'>&nbsp;(Mo)</span><br />
55                <input type='button' name='cachecalculer' id='cachecalculer' value='Calculer' onclick='rechercher_tailles(\"cache\");' /></td>
56            <td title='Popularit&eacute; totale du site'>Stats</td>
57            <td>Plugins<br />
58                <input type='button' name='pluginsupgrade' id='pluginsupgrade' value='Upgrader tout' onclick='plugins_upgrade();' /></td>
59            <td>Compression</td>
60            <td>Date</td>
61        </tr>
62    </thead>
63    <tbody>";
64        $page .= '<script type="text/javascript">
65        //<![CDATA[
66        tableau_sites = new Array();
67        tableau_upgrade = new Array();
68        //]]>
69        </script>
70        ';
71
72        $nsite = 1;
73
74        # aliases pour l'affichage court
75        $alias = array();
76        foreach ($sites as $v) {
77                $redux = preg_replace(',^www\.|\..*$,', '', $v);
78                if (!in_array($redux, $alias)) {
79                        $alias[$v] = $redux;
80                } else {
81                        $alias[$v] = $v;
82                }
83        }
84
85        // Recuperer la liste des plugins connus de l'instance SPIP en cours (celle qui est appelee par ecrire/?exec=mutualisation)
86        include_spip('inc/plugin');
87        $liste_plug = liste_plugin_files();
88        $liste_plug_compat = liste_plugin_valides($liste_plug);
89        $liste_plug_compat_base = $liste_plug_compat[1];
90        // echo '<pre>';
91        // var_dump($liste_plug_compat_base);
92        // echo '</pre>';
93        $liste_plug_compat = $liste_plug_compat[0];
94
95        foreach ($sites as $v) {
96                $nom_site = $stats = $plugins = $erreur = $version_installee = '';
97
98                if (lire_fichier_securise(_DIR_RACINE . $GLOBALS['mutualisation_dir'] . '/' . $v . '/tmp/meta_cache.php',
99                                $meta) and is_array($meta = @unserialize($meta)) and $url = $meta['adresse_site']
100                ) {
101                        $url .= '/';
102                        $nom_site = sinon(importer_charset($meta['nom_site'], $meta['charset']), $v);
103                        $popularite_total = (isset($meta['popularite_total']) ? $meta['popularite_total'] : 0);
104                        $stats = intval($popularite_total);
105                        if ($cfg = @unserialize($meta['plugin'])) {
106                                $plugins = array_keys($cfg);
107                                ksort($plugins);
108                                foreach ($plugins as $plugin) {
109                                        $lsplugs[strtolower($plugin)][] = $alias[$v];
110                                        $versionplug[strtolower($plugin)] = $cfg[$plugin]['version'];
111                                        // Spip n'est pas un plugin… Mais en fait oui.
112                                        // unset($lsplugs['spip']);
113                                        // unset($versionplug['spip']);
114                                }
115                                $cntplugins = count($plugins);
116                                $plugins = strtolower(implode(', ', $plugins));
117                        } else {
118                                $plugins = '-';
119                        }
120
121                        // S'il faut upgrader, creer un bouton qui permettra
122                        // de faire la mise a jour directement depuis le site maitre
123                        // Pour cela, on cree un bouton avec un secret, que mutualiser.php
124                        // va intercepter (pas terrible ?)
125                        $erreur = test_upgrade_site($meta);
126                        $adminplugin = adminplugin_site($meta, $liste_plug_compat, $liste_plug_compat_base);
127                        $version_installee = ' <em><small>' . $meta['version_installee'] . '</small></em>';
128                } else {
129                        $url = 'http://' . $v . '/';
130                        $erreur = ' <em><small><span class="erreur">Erreur&nbsp;!</span></small></em>';
131                        $plugins = '-';
132                }
133
134                if (is_array($meta)) {
135                        $compression = '';
136                        if ($meta['auto_compress_css'] == 'oui') {
137                                $compression .= 'CSS';
138                        }
139                        if ($meta['auto_compress_js'] == 'oui') {
140                                $compression .= ($compression != '') ? '+JS' : 'JS';
141                        }
142                        if ($meta['auto_compress_http'] == 'oui') {
143                                $compression .= ($compression != '') ? '+HTTP' : 'HTTP';
144                        }
145                        if ($compression == '') {
146                                $compression = _L('Activer');
147                        }
148                }
149                $page .= '<script type="text/javascript">
150        //<![CDATA[
151        tableau_sites.push(["../' . $GLOBALS['mutualisation_dir'] . '/' . $v . '"]);
152        //]]>
153        </script>
154        ';
155
156                $page .= "<tr class='tr" . $nsite%2 . "' style='background-image: url(" . $url . "ecrire/index.php?exec=mutualisation&amp;renouvelle_alea=yo)' id='$alias[$v]'>\n
157            <td class='text-right'><img src='" . $url . "favicon.ico' class='favicon' />$v$erreur$version_installee</td>\n
158            <td><a href='" . $url . "'>" . typo($nom_site) . "</a></td>\n
159            <td><a href='" . $url . "ecrire/'>ecrire</a><br />
160                <a href='" . $url . "$url_admin_plugin'>plugins</a><br />
161                <a href='" . $url . "$url_admin_vider'>cache</a></td>
162            <td><div id='IMG$nsite' class='taille loading'></div></td>\n
163            <td><div id='local$nsite' class='taille loading'></div></td>\n
164            <td><div id='cache$nsite' class='taille loading'></div></td>\n
165            <td class='text-right'><a href='" . $url . "$url_stats'>${stats}</a></td>\n
166            <td>$adminplugin<div class='liste-plugins'><a href='" . $url . "$url_admin_plugin'>${cntplugins}</a> <small>${plugins}</small></div></td>\n
167            <td><a href='" . $url . "$url_compresseur'>$compression</a></td>\n
168            <td class='text-right'>" . date_creation_repertoire_site($v) . "</td>\n
169            </tr>\n";
170                ++$nsite;
171        }
172        $page .= '</tbody></table>';
173
174        // On liste ici tous les plugins-dist de la mutu.
175        // Ça sera calculé une seule fois pour toute et réutilisé dans la fonction plus loin.
176        $list_dist = array();
177        // correspond à plugins-dist/nom_plugin/paquet.xml
178        if ($les_paquets = glob(_DIR_PLUGINS_DIST . '*/paquet.xml', GLOB_NOSORT)) {
179                foreach ($les_paquets as $value) {
180                        if (preg_match('/prefix="([^"]*)"/i', file_get_contents($value), $r)) {
181                                $list_dist[] = strtolower(trim($r[1]));
182                        }
183                }
184        }
185
186        if ($lsplugs) {
187                $nombre_plugins = count($lsplugs);
188                $page .= "<br /><br /><table class='plugins'>
189    <thead>\n
190        <tr>
191            <td class='nombre'>#</td>
192            <td class='prefixe'>Plugins utilis&#233;s ($nombre_plugins) </td>
193            <td class='dist'>Plugins-dist</td>
194            <td class='version'>Version</td>
195            <td class='liste'>Sites</td>
196        </tr>\n
197    </thead>
198    <tbody>";
199                foreach ($lsplugs as $plugin => $c) {
200                        $ligne = "<tr class='plugin $plugin'>\n<td class='nombre'>"
201                                . count($c)
202                                . "</td>\n<td class='prefixe'>$plugin</td>\n"
203                                . '<td class=\'dist\'>'
204                                . pluginDist($list_dist, $plugin)
205                                . "</td>\n<td class='version'>"
206                                . $versionplug[$plugin]
207                                . "</td>\n<td class='liste'>"
208                                . implode(' ', ancre_site($c))
209                                . '</td>'
210                                . "\n"
211                                . '</tr>'
212                                . "\n";
213                        if (isset($plnum[intval(count($c))])) {
214                                $plnum[intval(count($c))] .= $ligne;
215                        } else {
216                                $plnum[intval(count($c))] = $ligne;
217                        }
218                }
219                krsort($plnum);
220                $page .= implode('', $plnum);
221                $page .= "</tbody>\n</table>\n";
222
223                $inutile = $extract = $list = array();
224                // On crée une variable ici qui regardera les particularités des fichiers xml d'un plugin.
225                // Si à l'avenir on change de terminologie de fichier xml, il suffira de l'ajouter dans un nouvel array()
226                $cfg = array(
227                        array('fn' => 'paquet.xml', 'pre' => '/prefix="([^"]*)"/i', 'ver' => '/version="([^"]*)"/i'),
228                        array('fn' => 'plugin.xml', 'pre' => ',<prefix>([^<]+),ims', 'ver' => ',<version>([^<]+),ims')
229                );
230
231                $ustart_glob = memory_get_peak_usage(true);
232
233                // Ici on est en SPIP 3.
234                // En spip 3, avec SVP, on liste les plugins dans des sous-répertoires.
235                // Ca peut aller jusqu'a 3 sous-répertoires.
236                // On garde l'ancien principe d'un sous-répertoire pour ne pas casser la compat.
237
238                // Utiliser la classe si elle existe (PHP 5.3+)
239                $dir = _DIR_PLUGINS;
240                if (class_exists('FilesystemIterator') and is_dir(_DIR_PLUGINS)) {
241                        $dir_it = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
242                        $it = new RecursiveIteratorIterator($dir_it, RecursiveIteratorIterator::SELF_FIRST);
243
244                        foreach ($it as $path => $fo) {
245                                if (!$fo->isDir()) {
246                                        continue;
247                                }
248
249                                $path .= '/';
250
251                                foreach ($cfg as $k => $v) {
252                                        if (file_exists($path . $v['fn'])) {
253                                                $res = processConfig($cfg[$k], $lsplugs, $path);
254                                                if (false !== $res) {
255                                                        $inutile[] = $res;
256                                                }
257                                                break;
258                                        }
259                                }
260                        }
261                } else {
262                        // Pour php < 5.3
263                        // correspond à plugins/nom_plugin/fichier.xml
264                        if ($les_paquets = glob(_DIR_PLUGINS . '*/{paquet,plugin}.xml', GLOB_BRACE)) {
265                                foreach ($les_paquets as $value) {
266                                        $list[] = $value;
267                                }
268                        }
269                        // correspond à plugins/auto/nom_plugin/fichier.xml
270                        if ($les_paquets = glob(_DIR_PLUGINS . '*/*/{paquet,plugin}.xml', GLOB_BRACE)) {
271                                foreach ($les_paquets as $value) {
272                                        $list[] = $value;
273                                }
274                        }
275                        // correspond à plugins/auto/nom_plugin/x.y.z/fichier.xml
276                        if ($les_paquets = glob(_DIR_PLUGINS . '*/*/*/{paquet,plugin}.xml', GLOB_BRACE)) {
277                                foreach ($les_paquets as $value) {
278                                        $list[] = $value;
279                                }
280                        }
281
282                        // Ici on va prendre les chemins d'extrusion uniquement, sans distinction du fichier xml
283                        foreach ($list as $value) {
284                                $extract[] = str_replace(array('plugin.xml', 'paquet.xml'), '', $value);
285                        }
286                        // On dédoublonne
287                        $extract = array_unique($extract);
288                        foreach ($extract as $url) {
289                                // Et on refait une recherche pour paquet.xml d'abord
290                                if ($result = glob($url . 'paquet.xml', GLOB_NOSORT)) {
291                                        $result = $result[0];
292                                        // dans paquet.xml on cherche la valeur de l'attribut prefix
293                                        if (preg_match('/prefix="([^"]*)"/i', file_get_contents($result),
294                                                        $r) and !$lsplugs[strtolower(trim($r[1]))]
295                                        ) {
296                                                preg_match('/version="([^"]*)"/i', file_get_contents($result), $n);
297                                                $inutile[] = trim($r[1]) . ' (' . $n[1] . ')';
298                                        }
299                                } else {
300                                        // Si pas de paquet.xml, on cherche plugin.xml
301                                        $result = glob($url . 'plugin.xml', GLOB_NOSORT);
302                                        $result = $result[0];
303                                        // là, on reprend l'ancien code. On cherche la valeur de la balise prefix
304                                        if (preg_match(',<prefix>([^<]+),ims', file_get_contents($result),
305                                                        $r) and !$lsplugs[strtolower(trim($r[1]))]
306                                        ) {
307                                                preg_match(',<version>([^<]+),ims', file_get_contents($result), $n);
308                                                $inutile[] = trim($r[1]) . ' (' . $n[1] . ')';
309                                        }
310                                }
311                        }
312                }
313
314                $uend_glob = memory_get_peak_usage(true);
315                $inutile = array_map('mb_strtolower', $inutile);
316                sort($inutile);
317
318                if ($inutile) {
319                        $nombre_plugins_inutiles = count($inutile);
320                        $page .= "<div class='inutilises'>\n<p><strong>" . _L('Plugins inutilis&#233;s :') . '</strong> ' . implode(', ',
321                                        $inutile) . '.<br />';
322                        $page .= '<em>Soit ' . $nombre_plugins_inutiles . _L(' plugins inutilis&#233;s') . ".</em></p>\n</div>";
323                }
324        }
325
326        $page .= '<div class="logo_mutualisation"><img src="' . find_in_path('mutualisation/mutualiser.png') . '" alt="" /></div>';
327
328        $page = minipres($titre, $page);
329
330        $page = str_replace('</head>', '
331        <link rel="stylesheet" type="text/css" href="../mutualisation/mutualisation.css" />
332        <script src="../prive/javascript/jquery.js" type="text/javascript"></script>
333        <script src="../mutualisation/mutualisation_tailles.js" type="text/javascript"></script>
334        <script src="../mutualisation/mutualisation_upgrade.js" type="text/javascript"></script>
335        <script src="../mutualisation/mutualisation_toolbar.js" type="text/javascript"></script>
336        </head>
337        ', $page);
338
339        $uend = memory_get_peak_usage(true);
340        $udiff = $uend-$ustart;
341        $udiff_glob = $uend_glob-$ustart_glob;
342        $timeend = microtime(true);
343        $time = $timeend-$timestart;
344        $page_load_time = number_format($time, 3);
345
346        // On génère le contenu de notre toolbar.
347        $debug_toolbar = "<div class='toolbar'>\n";
348
349        $debug_toolbar .= "<div class='toolbar-block'>\n";
350        $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-php_info'></i></div>\n";
351        $debug_toolbar .= "<div class='toolbar-info'>\n";
352        $debug_toolbar .= "<div class='toolbar-info-element'><b>SPIP</b> <span>" . $GLOBALS['spip_version_branche'] . "</span></div>\n";
353        $debug_toolbar .= "<div class='toolbar-info-element'><b>PHP</b> <span>" . phpversion() . "</span></div>\n";
354        $debug_toolbar .= "<div class='toolbar-info-element'><b>Mémoire allouée</b> <span>" . $memory_limit . "</span></div>\n";
355        $debug_toolbar .= "<div class='toolbar-info-element'><b>Serveur</b> <span>" . $_SERVER['SERVER_SOFTWARE'] . "</span></div>\n";
356        $debug_toolbar .= "</div></div>\n";
357
358        $debug_toolbar .= "<div class='toolbar-block'>\n";
359        $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-plugins'></i><span>" . ($nombre_plugins_inutiles+$nombre_plugins) . " plugins</span></div>\n";
360        $debug_toolbar .= "<div class='toolbar-info'>\n";
361        $debug_toolbar .= "<div class='toolbar-info-element'><b>Utilisés</b> <span>" . $nombre_plugins . "</span></div>\n";
362        $debug_toolbar .= "<div class='toolbar-info-element'><b>Inutilisés</b> <span>" . $nombre_plugins_inutiles . "</span></div>\n";
363        $debug_toolbar .= "<div class='toolbar-info-element'><b>Total</b> <span>" . ($nombre_plugins_inutiles+$nombre_plugins) . "</span></div>\n";
364        $debug_toolbar .= "</div></div>\n";
365
366        $debug_toolbar .= "<div class='toolbar-block'>\n";
367        $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-memory'></i> <span>" . memoryUsage($udiff) . "</span></div>\n";
368        $debug_toolbar .= "<div class='toolbar-info'>\n";
369        $debug_toolbar .= "<div class='toolbar-info-element'><b>Mémoire :</b></div>\n";
370        $debug_toolbar .= "<div class='toolbar-info-element'><b>Au début</b> <span>" . memoryUsage($ustart) . "</span></div>\n";
371        $debug_toolbar .= "<div class='toolbar-info-element'><b>À la fin</b> <span>" . memoryUsage($uend) . "</span></div>\n";
372        $debug_toolbar .= "<div class='toolbar-info-element'><b>Différence</b> <span>" . memoryUsage($udiff) . "</span></div>\n";
373        $debug_toolbar .= "</div></div>\n";
374
375        $debug_toolbar .= "<div class='toolbar-block'>\n";
376        $debug_toolbar .= "<div class='toolbar-icon'><i class='icon-time'></i> <span>" . $page_load_time . " s</span></div>\n";
377        $debug_toolbar .= "<div class='toolbar-info'>";
378        $debug_toolbar .= "<div class='toolbar-info-element'><b>Début du script</b> <span>" . date('H:i:s',
379                        $timestart) . "</span></div>\n";
380        $debug_toolbar .= "<div class='toolbar-info-element'><b>Fin du script</b> <span>" . date('H:i:s',
381                        $timeend) . "</span></div>\n";
382        $debug_toolbar .= "<div class='toolbar-info-element'><b>Temps d'exécution</b> <span>" . $page_load_time . " s</span></div>\n";
383        $debug_toolbar .= "</div></div>\n";
384
385        $debug_toolbar .= "</div>\n";
386
387        $page = str_replace('</body>', $debug_toolbar . "\n </body>", $page);
388
389        echo $page;
390}
391
392function test_upgrade_site($meta) {
393        if ($GLOBALS['spip_version_base'] != str_replace(',', '.', $meta['version_installee'])) {
394                $secret = $meta['version_installee'] . '-' . (isset($meta['popularite_total']) ? $meta['popularite_total'] : '0');
395                $secret = md5($secret);
396                $adresse_site = isset($meta['adresse_site']) ? $meta["adresse_site"] : '';
397
398                return <<<EOF
399<form action='$adresse_site/ecrire/index.php?exec=mutualisation' method='post' class='upgrade' target='_blank'>
400<div>
401<input type='hidden' name='secret' value='$secret' />
402<input type='hidden' name='exec' value='mutualisation' />
403<input type='hidden' name='upgrade' value='oui' />
404<input type='submit' value='Upgrade site' />
405</div>
406</form>
407EOF;
408        }
409}
410
411function adminplugin_site($meta, $liste_plug_compat, $liste_plug_compat_base) {
412        if ($cfg = @unserialize($meta['plugin'])) {
413                $plugins = array_keys($cfg);
414                ksort($plugins);
415                $repertoires_plugins = array('_DIR_PLUGINS', '_DIR_PLUGINS_DIST', '_DIR_RESTREINT');
416                foreach ($plugins as $plugin) {
417                        $vplugin_base = $nouvelle_version_plugin_base = $info_plugin = '';
418                        $vplugin_base = (isset($meta[strtolower($plugin) . '_base_version'])) ? trim($meta[strtolower($plugin) . '_base_version']) : '0.0.0';
419                        foreach ($repertoires_plugins as $repertoire) {
420                                if (isset($liste_plug_compat[$repertoire][strtolower($plugin)])) {
421                                        $info_plugin = $liste_plug_compat[$repertoire][strtolower($plugin)];
422                                }
423                        }
424                        $nouvelle_version_plugin_base = (isset($info_plugin['schema'])) ? trim($info_plugin['schema']) : '0.0.0';
425
426                        if ((isset($cfg[$plugin]['version']) and isset($info_plugin['version'])) and
427                                (
428                                        ($cfg[$plugin]['version'] != $info_plugin['version'])
429                                        or
430                                        (spip_version_compare($vplugin_base, $nouvelle_version_plugin_base, '<'))
431                                )
432                        ) {
433                                $vplugin = $vplugin_base . ' / ' . $cfg[$plugin]['version'] . ' &rarr; ' . $nouvelle_version_plugin_base . ' / ' . $info_plugin['version'];
434
435                                return upgrade_placeholder($meta, "$plugin $vplugin");
436                        }
437                }
438                if (defined('_MUTUALISATION_UPGRADE_FORCE')) {
439                        return upgrade_placeholder($meta);
440                }
441        }
442
443        return '';
444}
445
446function upgrade_placeholder($meta, $buttontxt = 'Upgrade plugins (forcé)') {
447        static $id = 0;
448        $id++;
449        $secret = $meta['version_installee'] . '-' . $meta['secret_du_site'];
450        $secret = md5($secret);
451        $adresse_site = isset($meta['adresse_site']) ? $meta["adresse_site"] : '';
452        $upgrade = '<script type="text/javascript">
453        //<![CDATA[
454        tableau_upgrade.push(["' . $adresse_site . '/ecrire/?exec=mutualisation&secret=' . $secret . '&upgradeplugins=oui&ajax=oui"]);
455        //]]>
456        </script>
457        ';
458
459        return <<<EOF
460$upgrade
461<form action='$adresse_site/ecrire/?exec=mutualisation' method='get' class='upgrade' target='_blank'>
462<div id='upgrade$id' class='taille'>
463<input type='hidden' name='secret' value='$secret' />
464<input type='hidden' name='exec' value='mutualisation' />
465<input type='hidden' name='upgradeplugins' value='oui' />
466<button type='submit' value='Upgrade plugins'>$buttontxt</button>
467</div>
468</form>
469EOF;
470}
471
472function date_creation_repertoire_site($v) {
473        return (date('d/M/y', @filectime('../' . $GLOBALS['mutualisation_dir'] . '/' . $v . '/config/connect.php')));
474}
475
476/**
477 * lister les sites qui ont des sites/xx/config/connect.php
478 * avec 'connect.php' ne changeant pas de nom.
479 */
480function mutualisation_lister_sites_dist() {
481        $sites = array();
482        foreach (glob('../' . $GLOBALS['mutualisation_dir'] . '/*/config/connect.php') as $s) {
483                $sites[] = preg_replace(',^\.\./' . $GLOBALS['mutualisation_dir'] . '/(.*)/config/connect.php,', '\1', $s);
484        }
485        sort($sites);
486
487        return $sites;
488}
489
490/**
491 * autre exemple pour ceux qui mettent tous leurs fichiers de connexion
492 * dans /config/connect/xx.php
493 * fonction a mettre dans mes_options.php ou dans mutualisations/lister_sites.php.
494 */
495
496/*
497 function mutualisation_lister_sites() {
498 $sites = array();
499 if (is_dir(_DIR_CONNECT)) {
500 if ($dh = @opendir(_DIR_CONNECT)) {
501 while (($file = readdir($dh)) !== false) {
502 if (substr($file,-4)=='.php') {
503 $sites[] = substr($file,0,-4);
504 }
505 }
506 }
507 }
508 sort($sites);
509 return $sites;
510 }
511 */
512
513// faire une ancre vers le tableau des sites en haut de page
514function ancre_site($c) {
515        foreach ($c as $key => $value) {
516                $c[$key] = "<a href='#$value' class='$value'>" . $value . ',</a> ';
517        }
518
519        return $c;
520}
521
522function memoryUsage($bytes) {
523        $bytes = (int)$bytes;
524
525        if ($bytes > 1024*1024) {
526                return round($bytes/1024/1024, 2) . ' MB';
527        } elseif ($bytes > 1024) {
528                return round($bytes/1024, 2) . ' KB';
529        }
530
531        return $bytes . ' B';
532}
533
534function pluginDist($array, $plugin) {
535        $p = '-';
536        if (in_array($plugin, $array)) {
537                $p = 'Oui';
538        }
539
540        return $p;
541}
542
543/**
544 * Petite fonction qui va automatiser la recherche de paquet.xml ou plugin.xml
545 * quelque soit la profondeur dans l'arborescence.
546 */
547function processConfig(&$cfg, &$lsplugs, $path) {
548        // echo "<!-- Process: " . $path . $cfg['fn'] . "--> \n";
549        $data = file_get_contents($path . $cfg['fn']);
550
551        if (1 === preg_match($cfg['pre'], $data, $r) and !isset($lsplugs[strtolower(trim($r[1]))])) {
552                preg_match($cfg['ver'], $data, $n);
553
554                return trim($r[1]) . ' (' . $n[1] . ')';
555        }
556
557        return false;
558}
Note: See TracBrowser for help on using the repository browser.