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

Last change on this file since 32592 was 32592, checked in by fil@…, 11 years ago

utiliser glob() pour choper la liste des sites (php 4.3.0 mini), et lister les plugins utilises

File size: 5.5 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5function exec_mutualisation_dist() {
6        global $auteur_session;
7
8        include_spip('inc/minipres');
9        include_spip('inc/filtres');
10
11        // pas admin ? passe ton chemin
12        if ( ($auteur_session['statut'] != '0minirezo') and ( $_SERVER["REMOTE_ADDR"]!='127.0.0.1'))
13                die('pas admin !');
14
15        $lister_sites = charger_fonction('lister_sites','mutualisation');
16        $sites = $lister_sites();
17
18
19        if (!file_exists(_DIR_IMG.'mutualiser.png'))
20                @copy(find_in_path('mutualiser.png'), _DIR_IMG.'mutualiser.png');
21
22        $titre .= _L(count($sites).' '.'sites mutualis&#233;s <em>('._T('version')
23                . ' ' . $GLOBALS['spip_version_base'].')</em>');
24
25        $page = '';
26
27
28        $page .= "<table style='clear:both;'>
29        <thead>
30                <tr>
31                        <td>Site</td>
32                        <td>Nom</td>
33                        <td>Admin</td>
34                        <td title='Popularit&eacute; totale du site'>Stats</td>
35                        <td>Plugins</td>
36                        <td>Date</td>
37                </tr>
38        </thead>
39        <tbody>";
40
41        $nsite = 1;
42        foreach ($sites as $v) {
43                $nom_site=$stats=$plugins=$erreur=$version_installee="";
44
45                if (lire_fichier_securise(_DIR_RACINE.$GLOBALS['mutualisation_dir'].'/'.$v.'/tmp/meta_cache.php', $meta)
46                AND is_array($meta = @unserialize($meta))
47                AND $url = $meta['adresse_site']) {
48                        $url .= '/';
49                        $nom_site = sinon($meta['nom_site'], $v);
50                        $stats = intval($meta['popularite_total']);
51                        if ($plugins = @unserialize($meta['plugin'])) {
52                                $plugins = array_keys($plugins);
53                                ksort($plugins);
54                                foreach ($plugins as $plugin)
55                                        $lsplugs[$plugin][] = $v;
56                                $plugins = count($plugins)
57                                . ' <small>'
58                                . strtolower(join(', ', $plugins))
59                                . '</small>';
60                        } else
61                                $plugins = '-';
62
63                        // S'il faut upgrader, creer un bouton qui permettra
64                        // de faire la mise a jour directement depuis le site maitre
65                        // Pour cela, on cree un bouton avec un secret, que mutualiser.php
66                        // va intercepter (pas terrible ?)
67                        $erreur = test_upgrade_site($meta);
68                        $version_installee = ' <em><small>'.$meta['version_installee'].'</small></em>';
69                }
70                else {
71                        $url = 'http://'.$v.'/';
72                        $erreur = ' <em><small><span class="erreur">Erreur&nbsp;!</span></small></em>';
73                        $plugins = '-';
74                }
75                $page .= "<tr class='tr". $nsite % 2 ."'"
76                        . " style='background-image: url(${url}spip.php?action=cron&amp;renouvelle_alea=yo);'>
77                        <td style='text-align:right;'>$v$erreur$version_installee</td>
78                        <td><a href='${url}'>".typo($nom_site)."</a></td>
79                        <td><a href='${url}ecrire/'>ecrire</a></td>
80                        <td style='text-align:right;'><a href='${url}ecrire/index.php?exec=statistiques_visites'>${stats}</a></td>
81                        <td><a href='${url}ecrire/index.php?exec=admin_plugin'>${plugins}</a></td>
82                        <td style='text-align:right;'>".date_creation_repertoire_site($v)."</td>
83                        </tr>\n";
84                $nsite++;
85        }
86        $page .= "</tbody></table>";
87
88        if ($lsplugs) {
89                $page .= "<br /><br /><table style='clear:both;'>
90        <thead>
91                <tr>
92                        <td>#</td>
93                        <td>Plugins utilis&#233;s</td>
94                        <td>Sites</td>
95                </tr>
96        </thead>
97        <tbody>";
98                foreach ($lsplugs as $plugin => $c)
99                        $plnum[count($c)] .= "<tr><td>".count($c)."</td><td>$plugin</td><td>".join(', ', $c).'</td></tr>';
100                krsort($plnum);
101                $page .= join('', $plnum);
102                $page .= "</tbody></table>\n";
103        }
104
105        $page .= '<div style="text-align:center;"><img src="'
106                . _DIR_IMG.'mutualiser.png'
107                . '" alt="" /></div>';
108
109        $page = minipres($titre, $page);
110       
111        $page = str_replace('</head>', '
112                <style type="text/css">
113                a {color:#5a3463;}
114                table {border-collapse: collapse; border: 1px solid #999;}
115                tr {vertical-align:top;border: 1px solid #999;}
116                .tr0 {background-color:#ddded5}
117                thead tr {font-weight:bold;background-color:#333;color:#fff;}
118                td {text-align:left;border-left: 1px solid #ccc;}
119                td em {color:#aaa;}
120                #minipres{width:auto;}
121                .upgrade {text-align: center; padding:0 .5em; display:inline;}
122                .upgrade div {display:inline;}
123                .upgrade input { border: 2px solid red;color:red; background-color:#fff; font-weight:bold;}
124                .erreur {color:red;font-weight:bold;}
125                </style>
126                </head>
127                ', $page);
128               
129
130
131        echo $page;
132}
133
134
135function test_upgrade_site($meta) {
136        if ($GLOBALS['spip_version_base']
137        != str_replace(',','.',$meta['version_installee'])) {
138                $secret = $meta['version_installee'].'-'.$meta['alea_ephemere'];
139                $secret = md5($secret);
140                return <<<EOF
141<form action='$meta[adresse_site]/ecrire/index.php?exec=mutualisation' method='post' class='upgrade' target='_blank'>
142<div>
143<input type='hidden' name='secret' value='$secret' />
144<input type='hidden' name='exec' value='mutualisation' />
145<input type='hidden' name='upgrade' value='oui' />
146<input type='submit' value='Upgrade site' />
147</div>
148</form>
149EOF;
150        }
151}
152
153function date_creation_repertoire_site ($v) {
154        return (date("d/M/y", @filectime('../'.$GLOBALS['mutualisation_dir'].'/'.$v."/config/connect.php"))) ; 
155}
156
157// lister les sites qui ont des sites/xx/config/connect.php
158// avec 'connect.php' ne changeant pas de nom
159function mutualisation_lister_sites_dist() {
160        $sites = array();
161        foreach(glob('../'.$GLOBALS['mutualisation_dir'].'/*/config/connect.php') as $s) {
162                $sites[] = preg_replace(',^\.\./'.$GLOBALS['mutualisation_dir'].'/(.*)/config/connect.php,', '\1', $s);
163        }
164        sort($sites);
165        return $sites;
166}
167
168/* autre exemple pour ceux qui mettent tous leurs fichiers de connexion
169 * dans /config/connect/xx.php
170 * fonction a mettre dans mes_options.php ou dans mutualisations/lister_sites.php
171 */
172/*
173function mutualisation_lister_sites() {
174        $sites = array();
175        if (is_dir(_DIR_CONNECT)) {
176                if ($dh = @opendir(_DIR_CONNECT)) {
177                        while (($file = readdir($dh)) !== false) {
178                                if (substr($file,-4)=='.php') {
179                                        $sites[] = substr($file,0,-4);
180                                }
181                        }
182                }
183        }
184        sort($sites);
185        return $sites;
186}
187*/
188?>
Note: See TracBrowser for help on using the repository browser.