source: spip-zone/_plugins_/couteau_suisse/exec/admin_couteau_suisse.php @ 49237

Last change on this file since 49237 was 49237, checked in by patfr@…, 10 years ago

visiteurs connectés : la description indique désormais des statistiques inactives.

File size: 12.4 KB
Line 
1<?php
2#-----------------------------------------------------#
3#  Plugin  : Couteau Suisse - Licence : GPL           #
4#  Auteur  : Patrice Vanneufville, 2006               #
5#  Contact : patrice¡.!vanneufville¡@!laposte¡.!net   #
6#  Infos : http://www.spip-contrib.net/?article2166   #
7#-----------------------------------------------------#
8if(!defined("_ECRIRE_INC_VERSION")) return;
9
10include_spip('inc/autoriser');
11include_spip('inc/texte');
12include_spip('inc/layer');
13include_spip('inc/presentation');
14include_spip('base/cout_upgrade');
15
16// mise a jour des donnees si envoi via formulaire
17function enregistre_modif_outils($cmd){
18cs_log("INIT : enregistre_modif_outils()");
19        global $outils, $metas_outils;
20        // recuperer les outils dans $_POST ou $_GET
21        $toggle = array();
22        if(isset($_GET['outil'])) $toggle[] = $_GET['outil'];
23                elseif(isset($_POST['cs_selection'])) $toggle = explode(',', $_POST['cs_selection']);
24                else return;
25        $_GET['outil'] = ($cmd!='hide' && count($toggle)==1)?$toggle[0]:'';
26        $i = $cmd=='hide'?'cache':'actif';
27        ${$i} = isset($GLOBALS['meta']["tweaks_{$i}s"])?unserialize($GLOBALS['meta']["tweaks_{$i}s"]):array();
28        foreach($toggle as $o) if(autoriser('configurer', 'outil', 0, NULL, $outils[$o])) {
29                if(isset(${$i}[$o][$i]))
30                        unset(${$i}[$o][$i]); 
31                else ${$i}[$o][$i] = 1;
32        }
33        if(defined('_SPIP19300')) $connect_id_auteur = $GLOBALS['auteur_session']['id_auteur'];
34                else global $connect_id_auteur;
35        spip_log("Changement de statut ($i) des outils par l'auteur id=$connect_id_auteur : ".implode(', ',array_keys(${$i})));
36        ecrire_meta("tweaks_{$i}s", serialize(${$i}));
37        if($cmd=='switch') $metas_outils = ${$i};
38
39        include_spip('inc/plugin');
40        defined('_SPIP20100')?actualise_plugins_actifs():verif_plugin();
41
42cs_log(" FIN : enregistre_modif_outils()");
43}
44
45function exec_admin_couteau_suisse() {
46cs_log("INIT : exec_admin_couteau_suisse()");
47        global $spip_lang_right;
48        global $outils, $afficher_outil, $metas_vars, $metas_outils;
49
50        // cette valeur par defaut n'est pas definie sous SPIP 1.92
51        @define('_ID_WEBMESTRES', 1);
52        cs_minipres();
53        $cmd = _request('cmd');
54        $exec = _request('exec');
55
56        include_spip('inc/cs_outils');
57        cs_init_plugins();
58
59        // id de l'auteur en session
60        if(defined('_SPIP19300')) $connect_id_auteur = $GLOBALS['auteur_session']['id_auteur'];
61                else global $connect_id_auteur;
62
63        // reset general
64        if($cmd=='resetall'){
65                spip_log("Reset General du Couteau Suisse par l'auteur id=$connect_id_auteur");
66                foreach(array_keys($GLOBALS['meta']) as $meta) {
67                        if(strpos($meta, 'tweaks_') === 0) effacer_meta($meta);
68                        if(strpos($meta, 'cs_') === 0) effacer_meta($meta);
69                }
70                $metas_vars = $metas_outils = array();
71                // ici, pas d'initialisation...
72                include_spip('cout_lancement');
73                cout_exec_redirige('cmd=resetjs');
74        }
75        // installation personnalisee
76        if(strlen($pack = _request('pack')) && isset($GLOBALS['cs_installer'][$pack]['outils'])) {
77                if($cmd=='install'){
78                        spip_log("Installation personnalisee de '$pack' par l'auteur id=$connect_id_auteur");
79                        // installer le pack et rediriger
80                        cout_install_pack($pack, true);
81                } elseif($cmd=='delete'){
82                        spip_log("Suppression de '$pack' par l'auteur id=$connect_id_auteur");
83                        $p = preg_quote($pack,'/');
84                        $r = "[$]GLOBALS\['cs_installer'\]\['$p'\] *=";
85                        cs_ecrire_config(
86                                array("/$r/", "/# [^\\n\\r]+[\\n\\r]+if\(0\) {$r}.*?# $p #[\\n\\r]+/s"),
87                                array('if(0) \0', ''));
88                        // simplement prendre en compte la supression
89                        cout_exec_redirige('cmd=pack', false);
90                }
91        }
92        // reset des variables d'un outil
93        if($cmd=='reset' && strlen($_GET['outil'])){
94                spip_log("Reset des variables de '$_GET[outil]' par l'auteur id=$connect_id_auteur");
95                global $outils;
96                include_spip('cout_utils');
97                include_spip('config_outils');
98                if(autoriser('configurer', 'outil', 0, NULL, $outils[$_GET['outil']])) {
99                        include_spip('inc/cs_outils');
100                        cs_initialisation_d_un_outil($_GET['outil'], charger_fonction('description_outil', 'inc'), true);
101                        foreach ($outils[$_GET['outil']]['variables'] as $a)
102                                if(autoriser('configurer', 'variable', 0, NULL, array('nom'=>$a, 'outil'=>$outils[$_GET['outil']])))
103                                        unset($metas_vars[$a]);
104                                else spip_log("Reset interdit de la variable %$a% !!");
105                        ecrire_meta('tweaks_variables', serialize($metas_vars));
106                }
107                // tout recompiler
108                cout_exec_redirige("cmd=descrip&outil={$_GET[outil]}#cs_infos");
109        }
110        // reset de l'affichage
111        if($cmd=='showall'){
112                spip_log("Reset de tous les affichages du Couteau Suisse par l'auteur id=$connect_id_auteur");
113                effacer_meta('tweaks_caches');
114                cout_exec_redirige();
115        }
116
117        // afficher la description d'un outil ?
118        $afficher_outil = ($cmd=='descrip' OR $cmd=='switch')?$_GET['outil']:'';
119
120        // initialisation generale forcee : recuperation de $outils;
121        cs_initialisation(true, $cmd!='noinclude');
122        cs_installe_outils();
123
124        // mise a jour des donnees si envoi via formulaire
125        // sinon fait une passe de verif sur les outils
126        if($cmd=='switch' OR $cmd=='hide'){
127                enregistre_modif_outils($cmd);
128                cout_exec_redirige(strlen($_GET['outil'])?"cmd=descrip&outil={$_GET[outil]}#cs_infos":'');
129        }
130//      else
131//              verif_outils();
132
133        $t = charger_fonction('commencer_page', 'inc');
134        echo $t(couteauprive_T('titre'), 'configuration', 'couteau_suisse');
135
136        // versions du Couteau Suisse et de la barre typo
137        include_spip('inc/plugin');
138        if(isset($GLOBALS['meta']['plugin'])) {
139                $t = unserialize($GLOBALS['meta']['plugin']);
140                $dir = $t['COUTEAU_SUISSE']['dir'];
141                $dir_type = $t['COUTEAU_SUISSE']['dir_type'];
142                $bt_dir = $t['BARRETYPOENRICHIE']['dir'];
143                $bt_version = $t['BARRETYPOENRICHIE']['version'];
144        }
145        if(!strlen($dir)) $dir = 'couteau_suisse';
146        if(!strlen($bt_dir)) $bt_dir = 'barre_typo_v2';
147        $get_infos = defined('_SPIP20100')?charger_fonction('get_infos','plugins'):'plugin_get_infos';
148        $t = isset($dir_type)?$get_infos($dir, false, constant($dir_type)):$get_infos($dir);
149        $cs_version_base = $t['version_base']; $cs_version = $t['version'];
150        if(!function_exists('installe_un_plugin')) {
151                // ici SPIP >= 3.0
152                // TODO: redondances probables a revoir
153                // mises a jour eventuelles de la base
154                $installer_plugins = charger_fonction('installer', 'plugins');
155                /*$infos = */$installer_plugins('couteau_suisse', 'install');
156                parse_str(parametres_css_prive(), $paramcss);
157        } else {
158                // compatibilite SPIP < 3.0
159                // mises a jour eventuelles de la base
160                $paramcss = array();
161                installe_un_plugin($dir, $t, $dir_type);
162        }
163        if(!strlen($bt_version)) { $bt_version = $get_infos($bt_dir); $bt_version = $bt_version['version']; }
164       
165        // precaution (inutile ?) sur mes_fonctions.php
166        include_spip('public/parametrer');
167
168        $cs_revision = ((lire_fichier(_DIR_PLUGIN_COUTEAU_SUISSE.'svn.revision',$t)) && (preg_match(',<revision>(\d+)</revision>,',$t, $r)))
169                ?'<br/>'.couteauprive_T('version_revision', array('revision'=>$r[1])):"";
170        include_spip('public/assembler');
171        echo recuperer_fond('exec/admin_couteau_suisse_head', array_merge(
172         $paramcss,
173         array(
174                'force' => in_array(_request('var_mode'), array('calcul', 'recalcul'))?'oui':null,
175                'cs_version' => $cs_version,
176                'exec' => _request('exec'),
177        )));
178        echo "<br /><br /><br />";
179        gros_titre(couteauprive_T('titre'), '', false);
180        echo barre_onglets("configuration", 'couteau_suisse');
181
182        echo quelques_verifications($bt_version);
183
184        // chargement des outils
185        include_spip('inc/cs_outils'); 
186        list($outils_affiches_actifs, $liste_outils) = liste_outils();
187
188        // cadre de gauche
189        echo debut_gauche('', true);
190        $t = '';
191        if(isset($GLOBALS['cs_installer'])) foreach(array_keys($GLOBALS['cs_installer']) as $pack)
192                $t .= "\n_ " . couteauprive_T('pack_du', array('pack'=>"{[{$pack}|".couteauprive_T('pack_installe').'->' . generer_url_ecrire($exec,'cmd=install&pack='.urlencode($pack)) . ']}'));
193        $t = couteauprive_T('help2', array(
194                        'version' => $cs_version.$cs_revision.'<br/>'.
195                                (defined('_CS_PAS_DE_DISTANT')?'('.couteauprive_T('version_distante_off').')':'<span class="cs_version">'.couteauprive_T('version_distante').'</span>')
196                                ))
197                . chargement_automatique()
198                . '<br/>&bull;&nbsp;['.couteauprive_T('pack_titre') . '|' . couteauprive_T('pack_alt') . '->' . generer_url_ecrire($exec,'cmd=pack#cs_infos') . "]\n\n"
199                . couteauprive_T('help3', array(
200                        'reset' => generer_url_ecrire($exec,'cmd=resetall'),
201                        'hide' => generer_url_ecrire($exec,'cmd=showall'),
202                        'contribs' => "\n_ &bull; " . cs_liste_contribs(25, "\n_ &bull; "),
203                        'install' => $t
204        ));
205        if(function_exists('redirige_action_post')) $t = redirige_action_post('charger_plugin', '', 'admin_couteau_suisse', '', $t); // SPIP >= 2.0
206        $t = '<div class="cs_aide">'.couteauprive_T('help')."\n\n$t</div>";
207        echo debut_boite_info(true), propre($t), fin_boite_info(true);
208        $t = cs_aide_raccourcis();
209        if(strlen($t))
210                echo debut_boite_info(true), $t, fin_boite_info(true);
211        $t = cs_aide_pipelines($outils_affiches_actifs);
212        if(strlen($t))
213                echo debut_boite_info(true), $t, fin_boite_info(true);
214        echo pipeline('affiche_gauche',array('args'=>array('exec'=>$exec),'data'=>''));
215
216        // cadre de droite
217        echo creer_colonne_droite('', true);
218        echo pipeline('affiche_droite',array('args'=>array('exec'=>$exec),'data'=>'')),
219                debut_droite('', true),
220                debut_cadre_trait_couleur(find_in_path('img/couteau-24.gif'),true,'','&nbsp;'.couteauprive_T('outils_liste')),
221                couteauprive_T('outil_intro'),
222                "\n<table border='0' cellspacing='0' cellpadding='5' style='width:100%;'><tr><td class='sansserif'>";
223
224        $_GET['source'] = $exec;
225        echo '<div class="conteneur">', $liste_outils,
226                '</div><br class="conteneur" /><div class="cs_patience"><br />'.http_img_pack('searching.gif','*','').' ...</div>';
227        flush();
228        echo '<div class="conteneur"><div id="cs_infos" class="cs_infos">',
229                $cmd=='pack'?cs_description_pack():description_outil2($afficher_outil),
230                '</div><script type="text/javascript"><!--
231var cs_descripted = "', $afficher_outil, '";
232document.write("<style type=\'text/css\'>#csjs{display:none;}<\/style>");
233//--></script><div id="csjs" style="color:red;"><br/>', couteauprive_T('erreur:js'),'</div>
234<noscript><style type="text/css">#csjs{display:none;}</style><div style="color:red;"><br/>', couteauprive_T('erreur:nojs'),
235$_GET['modif']=='oui'?'<br/>'.couteauprive_T('vars_modifiees').'.':'','</div></noscript>',
236                '</div></td></tr></table>',
237                '<style type="text/css">.cs_patience{display:none;}</style>',
238                fin_cadre_trait_couleur(true),
239
240                pipeline('affiche_milieu',array('args'=>array('exec'=>$exec),'data'=>'')),
241                fin_gauche(), fin_page();
242cs_log(" FIN : exec_admin_couteau_suisse()");
243}
244
245// messages d'avertissments eventuels
246function quelques_verifications($bt_version) {
247        // test sur jQuery
248        $res = "<script type=\"text/javascript\"><!--
249if(!window.jQuery) document.write('".str_replace('/','\/',addslashes(propre('<p>'.couteauprive_T('erreur:jquery').'</p>')))."');
250//--></script>";
251        // verification d'une base venant de SPIP 1.8
252        $tmp = spip_query('DESCRIBE spip_meta valeur');
253        $tmp = function_exists('spip_fetch_array')?spip_fetch_array($tmp):sql_fetch($tmp);
254        if($tmp['Type']!='text')
255                $res .= "<p style=\"color:red;\">Attention : votre base semble ancienne et le Couteau Suisse ne va pas bien fonctionner.</p><p>La table 'spip_meta' a pour type de valeur '$tmp[Type]' au lieu de 'text'.</p>";
256        // verification de la barre typo V2
257        $mini = '2.5.3';
258        if(strlen($bt_version) and (version_compare($bt_version,$mini,'<'))) 
259                $res .= "<p>".couteauprive_T('erreur:bt', array('version'=>$bt_version, 'mini'=>$mini))."</p>";
260        return "<div style='font-size:85%'>$res</div>";
261}
262
263// clic pour la mise a jour du Couteau Suisse
264function chargement_automatique() {
265        // si le plugin est installe par procedure automatique, on permet la mise a jour directe (SPIP >= 2.0)
266        $arg_chargeur = $GLOBALS['spip_version_base']>=15828?'url_zip_plugin2':'url_zip_plugin'; // eq. SPIP >= 2.1.2
267        $res = preg_match(',plugins/auto/couteau_suisse/$,',_DIR_PLUGIN_COUTEAU_SUISSE)?
268                "<input type='hidden' name='$arg_chargeur' value='http://files.spip.org/spip-zone/couteau_suisse.zip' />"
269                . "<br/><div class='cs_sobre'><input type='submit' value='&bull; " . attribut_html(couteauprive_T('version_update')) . "' class='cs_sobre' title='"
270                . attribut_html(couteauprive_T('version_update_title')) . "' /></div>"
271                :"";
272        // un lien si le plugin plugin "Telechargeur" est present (SPIP < 2.0)
273        if(!strlen($res) && defined('_DIR_PLUGIN_CHARGEUR'))
274                $res = "<br/>&bull; <a title='" . attribut_html(couteauprive_T('version_update_chargeur_title')) 
275                . "' href='../spip.php?action=charger&plugin=couteau_suisse&url_retour=".urlencode(generer_url_ecrire('admin_couteau_suisse'))."'>".couteauprive_T('version_update_chargeur').'</a>';
276        return $res;
277}
278
279// callback pour les contribs
280function cs_couper_25($matches) { return couper(couteauprive_T($matches[1]), 25); }
281
282?>
Note: See TracBrowser for help on using the repository browser.