source: spip-zone/_plugins_/_dev_/rangement_plugs/exec/rangement_plugin.php @ 5823

Last change on this file since 5823 was 5823, checked in by franck.ducas@…, 15 years ago

Changement de trategie pour nettoyer charger_plugins_options.php. Rien de très fonctionnel en golbalite.

File size: 17.2 KB
Line 
1<?php
2$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
3define('_DIR_PLUGIN_RANGEMENT_PLUGS',(_DIR_PLUGINS.end($p)));
4
5if (!defined("_ECRIRE_INC_VERSION")) return;
6
7include_spip('inc/config');
8include_spip('inc/plugin');
9include_spip('inc/presentation');
10include_spip('inc/layer');
11include_spip('inc/actions');
12include_spip('inc/rangement_flock');
13
14// http://doc.spip.org/@exec_admin_plugin
15function exec_rangement_plugin() {
16        global $connect_statut;
17        global $connect_toutes_rubriques;
18        global $spip_lang_right;
19       
20        # Definition des variables.
21        $dossier_encours = _request('famille');
22        $xml_encours = preg_files(_DIR_PLUGINS,"/$dossier_encours/plugin[.]xml$");
23        $xml_racine = rangement_plugs_preg_files_plugs(_DIR_PLUGINS.$dossier_encours,"/plugin[.]xml$");
24        $start_file = "<"."?php\nif (!defined('_ECRIRE_INC_VERSION')) return;\n";
25        $end_file = "\n?".">";
26       
27        $surligne = "";
28
29        if ($connect_statut != '0minirezo' OR !$connect_toutes_rubriques) {
30                debut_page(_T('icone_admin_plugin'), "configuration", "plugin");
31                echo _T('avis_non_acces_page');
32                fin_page();
33                exit;
34        }
35
36        // mise a jour des donnees si envoi via formulaire
37        // sinon fait une passe de verif sur les plugin
38        if (_request('changer_plugin')=='oui'){
39               
40                if (_request('famille')=='') {
41                        enregistre_modif_plugin();
42                }
43        }
44        else
45                //verif_plugin();
46        if (isset($_GET['surligne']))
47                $surligne = $_GET['surligne'];
48        global $couleur_claire;
49        debut_page(_T('icone_admin_plugin'), "configuration", "plugin");
50        echo "<style type='text/css'>\n";
51        echo <<<EOF
52div.cadre-padding ul li {
53        list-style:none ;
54}
55div.cadre-padding ul {
56        padding-left:1em;
57        margin:.5em 0 .5em 0;
58}
59div.cadre-padding ul ul {
60        border-left:5px solid #DFDFDF;
61}
62div.cadre-padding ul li li {
63        margin:0;
64        padding:0 0 0.25em 0;
65}
66div.cadre-padding ul li li div.nomplugin, div.cadre-padding ul li li div.nomplugin_on {
67        border:1px solid #AFAFAF;
68        padding:.3em .3em .6em .3em;
69        font-weight:normal;
70}
71div.cadre-padding ul li li div.nomplugin a, div.cadre-padding ul li li div.nomplugin_on a {
72        outline:0;
73        outline:0 !important;
74        -moz-outline:0 !important;
75}
76div.cadre-padding ul li li div.nomplugin_on {
77        background:$couleur_claire;
78        font-weight:bold;
79}
80div.cadre-padding div.droite label {
81        padding:.3em;
82        background:#EFEFEF;
83        border:1px dotted #95989F !important;
84        border:1px solid #95989F;
85        cursor:pointer;
86        margin:.2em;
87        display:block;
88        width:10.1em;
89}
90div.cadre-padding input {
91        cursor:pointer;
92}
93div.detailplugin {
94        border-top:1px solid #B5BECF;
95        padding:.6em;
96        background:#F5F5F5;
97}
98div.detailplugin hr {
99        border-top:1px solid #67707F;
100        border-bottom:0;
101        border-left:0;
102        border-right:0;
103        }
104EOF;
105        echo "</style>";
106
107        echo "<br/><br/>";
108       
109        echo '<img src="' . _DIR_PLUGIN_RANGEMENT_PLUGS. '/../img_pack/rangement-48.png">';
110        gros_titre(_T('icone_admin_plugin'));
111        // barre_onglets("configuration", "plugin"); // a creer dynamiquement en fonction des plugin charges qui utilisent une page admin ?
112       
113        debut_gauche();
114        debut_boite_info();
115        echo "<a href='".generer_url_ecrire('rangement_plugin')."'><strong>Accueil</strong></a>";
116        barre_onglets("plugins", "");
117        fin_boite_info();
118
119        debut_droite();
120
121        debut_cadre_relief();
122
123        global $couleur_foncee;
124        echo "<table border='0' cellspacing='0' cellpadding='5' width='100%'>";
125       
126        if (_request('famille') == "") {
127                echo "<tr><td bgcolor='$couleur_foncee' background='' colspan='4'><b>";
128                echo "<font face='Verdana,Arial,Sans,sans-serif' size='3' color='#ffffff'>";
129                echo _T('rangement:plugins_liste')."</font></b></td></tr>";
130       
131                echo "<tr><td class='serif' colspan=4>";
132                echo _T('rangement:texte_presente_plugin');
133       
134                if (_request('famille')=='') {
135                        echo generer_url_post_ecrire("rangement_plugin");
136                }
137               
138                else if (_request('famille')!='') {
139                        echo generer_url_post_ecrire("rangement_plugin", 'famille='._request('famille'));
140                }
141       
142                echo "<ul>";
143                                                                                               
144                # Ecrire les plugins deja actives.
145                $meta_plugin = isset($GLOBALS['meta']['plugin'])?$GLOBALS['meta']['plugin']:'';
146                if (strlen($meta_plugin)>0)
147                        $plugins_actifs = explode(",",$meta_plugin);
148                else
149                        return array();
150               
151                if (is_array($plugins_actifs)){
152                foreach ($plugins_actifs as $plugins_actives) {
153       
154                        $fichier_xml = preg_files(_DIR_PLUGINS,"/$plugins_actives/plugin[.]xml$");
155                        foreach ($fichier_xml as $fichier){
156                               
157                                lire_fichier($fichier, $texte);
158                                $arbre = parse_plugin_xml($texte);
159                                $arbre = $arbre['plugin'][0];
160                               
161                                $nom_plugin = applatit_arbre($arbre['nom']);
162                                $auteur_plugin = applatit_arbre($arbre['auteur']);
163                                $etat_plugin = applatit_arbre($arbre['etat']);
164                                $version_plugin = applatit_arbre($arbre['version']);
165                                $description_plugin = applatit_arbre($arbre['description']);
166                               
167               
168                                        if (isset($etat_plugin))
169                                        $etat = trim($etat_plugin);
170                                        switch ($etat) {
171                                                case 'experimental':
172                                                        $couleur_txt = "CA2F2F";
173                                                        $titre_etat = _T('rangement:plugin_etat_experimental');
174                                                        break;
175                                                case 'test':
176                                                        $couleur_txt = "E85600";
177                                                        $titre_etat = _T('rangement:plugin_etat_test');
178                                                        break;
179                                                case 'stable':
180                                                        $couleur_txt = "149E06";
181                                                        $titre_etat = _T('rangement:plugin_etat_stable');
182                                                        break;
183                                                default:
184                                                        $couleur_txt = "900B06";
185                                                        $titre_etat = _T('rangement:plugin_etat_developpement');
186                                                        break;
187                                        }
188                               
189                                debut_boite_info();
190                                echo "<input type='checkbox' name='statusplug_$plugins_actives' value='O' checked='checked'>";
191                                echo "<strong>".$nom_plugin."</strong>(version ".$version_plugin.")<label for='label_$id_input' style='display:none'>"._T('activer_plugin')."</label>";
192                                echo "<br /><hr>";
193                                echo "<small>".propre($description_plugin)."</small><br /><hr>";
194                                echo propre($auteur_plugin)."<br /><hr>";
195                                echo "<img src='"._DIR_PLUGIN_RANGEMENT_PLUGS."/../img_pack/".$etat.".png' />";
196                                echo "&nbsp;<small><strong><font COLOR='#".$couleur_txt."'>".$titre_etat."</font></strong></small><br />";
197                                fin_boite_info();
198                        }
199                }
200                }
201                       
202                echo "</ul>";
203        }
204       
205        else if (_request('famille')!='' && _request('Valider')!='Valider') {
206                                echo "<tr><td bgcolor='$couleur_foncee' background='' colspan='4'><b>";
207                echo "<font face='Verdana,Arial,Sans,sans-serif' size='3' color='#ffffff'>";
208                echo _T('rangement:plugins_liste_famille')."</font></b></td></tr>";
209       
210                echo "<tr><td class='serif' colspan=4>";
211                echo _T('rangement:texte_presente_plugin_famille');
212       
213                if (_request('famille')=='') {
214                        echo generer_url_post_ecrire("rangement_plugin");
215                }
216               
217                else if (_request('famille')!='') {
218                        echo generer_url_post_ecrire("rangement_plugin", 'famille='._request('famille'));
219                }
220
221                echo "<ul>";
222               
223                # Ecrire les plugins de la meme famille. Decouper tout ca en fonctions.
224                       
225                                if ($xml_encours) {
226                                        $xml = $xml_encours;
227                                }
228                                else if ($xml_racine) {
229                                        $xml = $xml_racine;
230                                }
231                       
232                        foreach ($xml as $fichier){
233                                $chemin_dossier = dirname ($fichier);
234                                if ($xml_encours) {
235                                        $recherche_nom = eregi(_DIR_PLUGINS.'(.*)', $chemin_dossier, $nom_chemin);
236                                        $dossier_plugin = $nom_chemin[1];
237                                        $nom_plugin = $nom_chemin[1];
238                                }
239                                else if ($xml_racine) {
240                                        $recherche_nom = eregi(_DIR_PLUGINS.'(.*)\/(.*)', $chemin_dossier, $nom_chemin);
241                                        $dossier_plugin = $nom_chemin[1]."/".$nom_chemin[2];
242                                        $nom_plugin = $nom_chemin[2];
243                                }
244                               
245                                $fichiers_plugin=array();
246                                $fichiers_plugin[]=substr(dirname($fichier), strlen(_DIR_PLUGINS));
247                               
248                                lire_fichier($fichier, $texte);
249                                $arbre = parse_plugin_xml($texte);
250                                $arbre = $arbre['plugin'][0];
251                               
252                                $nom_plugin = applatit_arbre($arbre['nom']);
253                                $auteur_plugin = applatit_arbre($arbre['auteur']);
254                                $etat_plugin = applatit_arbre($arbre['etat']);
255                                $version_plugin = applatit_arbre($arbre['version']);
256                                $description_plugin = applatit_arbre($arbre['description']);
257                                $fonctions_plugin = trim(applatit_arbre($arbre['fonctions']));
258                                $options_plugin = trim(applatit_arbre($arbre['options']));
259                                $prefix_plugin = trim(applatit_arbre($arbre['prefix']));
260                               
261                                        if (isset($etat_plugin))
262                                        $etat = trim($etat_plugin);
263                                        switch ($etat) {
264                                                case 'experimental':
265                                                        $couleur_txt = "CA2F2F";
266                                                        $titre_etat = _T('rangement:plugin_etat_experimental');
267                                                        break;
268                                                case 'test':
269                                                        $couleur_txt = "E85600";
270                                                        $titre_etat = _T('rangement:plugin_etat_test');
271                                                        break;
272                                                case 'stable':
273                                                        $couleur_txt = "149E06";
274                                                        $titre_etat = _T('rangement:plugin_etat_stable');
275                                                        break;
276                                                default:
277                                                        $couleur_txt = "900B06";
278                                                        $titre_etat = _T('rangement:plugin_etat_developpement');
279                                                        break;
280                                        }
281                                       
282                                        $plug_actif = "";
283                                        $meta_plugin = isset($GLOBALS['meta']['plugin'])?$GLOBALS['meta']['plugin']:'';
284                                        $plugin_actif = eregi($dossier_plugin, $meta_plugin, $plug_actif);
285                                       
286                                        if ($plug_actif[0] != "") {
287                                                $checked = " value='O' checked='checked'";
288                                        }
289                                        else {
290                                                $checked = " value='O'";
291                                        }
292                               
293                                debut_boite_info();
294                                echo "<input type='checkbox' name='statusplug_$dossier_plugin'$checked>";
295                                echo "<strong>".$nom_plugin."</strong>(version ".$version_plugin.")<label for='label_$id_input' style='display:none'>"._T('activer_plugin')."</label>";
296                                echo "<br /><hr>";
297                                echo "<small>".propre($description_plugin)."</small><br /><hr>";
298                                echo propre($auteur_plugin)."<br /><hr>";
299                                echo "<img src='"._DIR_PLUGIN_RANGEMENT_PLUGS."/../img_pack/".$etat.".png' />";
300                                echo "&nbsp;<small><strong><font COLOR='#".$couleur_txt."'>".$titre_etat."</font></strong></small><br />";
301                                fin_boite_info();
302                        }
303                       
304                echo "</ul>";
305                               
306        }
307       
308        else {
309                echo "<tr><td bgcolor='$couleur_foncee' background='' colspan='4'><b>";
310                echo "<font face='Verdana,Arial,Sans,sans-serif' size='3' color='#ffffff'>";
311                echo _T('rangement:plugins_liste_famille')."</font></b></td></tr>";
312       
313                echo "<tr><td class='serif' colspan=4>";
314                echo _T('rangement:texte_presente_plugin_famille');
315       
316                if (_request('famille')=='') {
317                        echo generer_url_post_ecrire("rangement_plugin");
318                }
319               
320                else if (_request('famille')!='') {
321                        echo generer_url_post_ecrire("rangement_plugin", 'famille='._request('famille'));
322                }
323
324                echo "<ul>";
325               
326                # Ecrire les plugins de la meme famille. Decouper tout ca en fonctions.
327                       
328                                if ($xml_encours) {
329                                        $xml = $xml_encours;
330                                }
331                                else if ($xml_racine) {
332                                        $xml = $xml_racine;
333                                }
334                       
335                        foreach ($xml as $fichier){
336                                $chemin_dossier = dirname ($fichier);
337                                if ($xml_encours) {
338                                        $recherche_nom = eregi(_DIR_PLUGINS.'(.*)', $chemin_dossier, $nom_chemin);
339                                        $dossier_plugin = $nom_chemin[1];
340                                        $nom_plugin = $nom_chemin[1];
341                                }
342                                else if ($xml_racine) {
343                                        $recherche_nom = eregi(_DIR_PLUGINS.'(.*)\/(.*)', $chemin_dossier, $nom_chemin);
344                                        $dossier_plugin = $nom_chemin[1]."/".$nom_chemin[2];
345                                        $nom_plugin = $nom_chemin[2];
346                                }
347                               
348                                $fichiers_plugin=array();
349                                $fichiers_plugin[]=substr(dirname($fichier), strlen(_DIR_PLUGINS));
350                               
351                                lire_fichier($fichier, $texte);
352                                $arbre = parse_plugin_xml($texte);
353                                $arbre = $arbre['plugin'][0];
354                               
355                                $nom_plugin = applatit_arbre($arbre['nom']);
356                                $auteur_plugin = applatit_arbre($arbre['auteur']);
357                                $etat_plugin = applatit_arbre($arbre['etat']);
358                                $version_plugin = applatit_arbre($arbre['version']);
359                                $description_plugin = applatit_arbre($arbre['description']);
360                                $fonctions_plugin = trim(applatit_arbre($arbre['fonctions']));
361                                $options_plugin = trim(applatit_arbre($arbre['options']));
362                                $prefix_plugin = trim(applatit_arbre($arbre['prefix']));
363                               
364                                $testo = array();
365                                foreach($fichiers_plugin as $filo){
366                                        $testo["statusplug_$filo"] = $filo;
367                                       
368                                        $plugin = "";
369                                        $plugin=array();
370                                                if (!isset($_POST['desactive_tous'])){
371                                                        foreach($_POST as $choix=>$val){
372                                                                if (isset($testo[$choix])&&$val=='O') {
373                                                                        $plugin[]=$testo[$choix];
374                                                                }
375                                                        }
376                                                       
377                                                       
378                                                        $lire_meta_plugin = isset($GLOBALS['meta']['plugin'])?$GLOBALS['meta']['plugin']:'';
379                                                        $plugin_actif = ereg($filo, $lire_meta_plugin, $pleug_actif);
380                                                       
381                                                        if ($filo != $plugin[0] && isset($pleug_actif[0])) {
382                                                                        $effacer_plug = str_replace ($filo, '', $lire_meta_plugin);
383                                                                        ecrire_meta('plugin',$effacer_plug);
384                                                                        ecrire_metas();
385                                                                       
386                                                                                $fichier_options = _DIR_TMP."charger_plugins_options.php";
387                                                                                $lire_fichier = file_get_contents($fichier_options);
388                                                                                $plugin_deja_active = eregi($prefix_plugin, $lire_fichier, $plugin_present);
389                                                                               
390                                                                                if (isset($plugin_present[0])){
391                                                                                        echo "options doit être vide";
392                                                                                        $options_persos = eregi_replace('\/\*debut_rangement_plugins_'.$prefix_plugin.'(.*)fin_rangement_plugins_'.$prefix_plugin.'\*\/', '', $lire_fichier);
393                                                                                        ecrire_fichier(_DIR_TMP."charger_plugins_options.php", $options_persos);
394                                                                                }
395                                                                               
396                                                        }
397                                                       
398                                                        else if ($plugin[0] != "") {
399                                                                $pleug_actif="";
400                                                                $lire_meta_plugin ="";
401                                                                $plugin_actif="";
402                                                                $lire_meta_plugin = isset($GLOBALS['meta']['plugin'])?$GLOBALS['meta']['plugin']:'';
403                                                                $plugin_actif = ereg($plugin[0], $lire_meta_plugin, $pleug_actif);
404
405                                                                        if (!isset($pleug_actif[0])) {
406                                                                                ecrire_meta('plugin',$lire_meta_plugin.','.$plugin[0]);
407                                                                                ecrire_metas();
408                                                                       
409                                                                                $fichier_options = _DIR_TMP."charger_plugins_options.php";
410                                                                                $lire_fichier = file_get_contents($fichier_options);
411                                                                                $plugin_deja_active = eregi($prefix_plugin, $lire_fichier, $plugin_present);
412                                                                               
413                                                                                if (!isset($plugin_present[0])){
414                                                                                        $prefix = strtoupper($prefix_plugin);
415                                                                                        $splugs .= "/*debut_rangement_plugins_$prefix_plugin*/";
416                                                                                        $splugs .= '$GLOBALS[\'plugins\'][]=\''.$prefix_plugin.'\';';
417                                                                                        $splugs .= "define(_DIR_PLUGINS_$prefix,_DIR_PLUGINS.'$plugin[0]/');";
418                                                                                                if ($options_plugin){
419                                                                                                $splugs .= "\n@include_once _DIR_PLUGINS.'$plugin[0]/".trim($options_plugin)."';\n";
420                                                                                                }
421                                                                                        $splugs .= "/*fin_rangement_plugins_$prefix_plugin*/";
422                                                                                        $splugs .= "\n\n?>";
423                                                                                        $contenu_modifie = str_replace ('?>', $splugs, $lire_fichier);
424                                                                                        ecrire_fichier(_DIR_TMP."charger_plugins_options.php", $contenu_modifie);
425                                                                                       
426                                                                                        if (isset($fonctions_plugin)){
427                                                                                                $fichier_fonctions = _DIR_TMP."charger_plugins_fonctions.php";
428                                                                                                $lire_fichier_fonctions = file_get_contents($fichier_fonctions);
429                                                                                                $plugin_deja_active_fonctions = eregi($prefix_plugin, $lire_fichier_fonctions, $plugin_present_fonctions);
430                                                                                                $splugsfct .= "\n@include_once _DIR_PLUGINS.'$plugin[0]/".trim($fonctions_plugin)."';\n";
431                                                                                                $splugsfct .= "\n\n?>";
432                                                                                               
433                                                                                                if (!isset($plugin_present_fonctions[0])) {
434                                                                                                        $contenu_modifie_fonctions = str_replace ('?>', $splugsfct, $lire_fichier_fonctions);
435                                                                                                        ecrire_fichier(_DIR_TMP."charger_plugins_fonctions.php", $contenu_modifie_fonctions);
436                                                                                                }
437                                                                                                }
438                                                                                }
439               
440                                                                        }
441                                                                }
442                                                        }
443                                }
444                               
445               
446                                        if (isset($etat_plugin))
447                                        $etat = trim($etat_plugin);
448                                        switch ($etat) {
449                                                case 'experimental':
450                                                        $couleur_txt = "CA2F2F";
451                                                        $titre_etat = _T('rangement:plugin_etat_experimental');
452                                                        break;
453                                                case 'test':
454                                                        $couleur_txt = "E85600";
455                                                        $titre_etat = _T('rangement:plugin_etat_test');
456                                                        break;
457                                                case 'stable':
458                                                        $couleur_txt = "149E06";
459                                                        $titre_etat = _T('rangement:plugin_etat_stable');
460                                                        break;
461                                                default:
462                                                        $couleur_txt = "900B06";
463                                                        $titre_etat = _T('rangement:plugin_etat_developpement');
464                                                        break;
465                                        }
466                                       
467                                        $plug_actif = "";
468                                        $meta_plugin = isset($GLOBALS['meta']['plugin'])?$GLOBALS['meta']['plugin']:'';
469                                        $plugin_actif = eregi($dossier_plugin, $meta_plugin, $plug_actif);
470                                       
471                                        if ($plug_actif[0] != "") {
472                                                $checked = " value='O' checked='checked'";
473                                        }
474                                        else {
475                                                $checked = " value='O'";
476                                        }
477                               
478                                debut_boite_info();
479                                echo "<input type='checkbox' name='statusplug_$dossier_plugin'$checked>";
480                                echo "<strong>".$nom_plugin."</strong>(version ".$version_plugin.")<label for='label_$id_input' style='display:none'>"._T('activer_plugin')."</label>";
481                                echo "<br /><hr>";
482                                echo "<small>".propre($description_plugin)."</small><br /><hr>";
483                                echo propre($auteur_plugin)."<br /><hr>";
484                                echo "<img src='"._DIR_PLUGIN_RANGEMENT_PLUGS."/../img_pack/".$etat.".png' />";
485                                echo "&nbsp;<small><strong><font COLOR='#".$couleur_txt."'>".$titre_etat."</font></strong></small><br />";
486                                fin_boite_info();
487                        }
488                       
489                echo "</ul>";
490        }
491       
492        echo "</table></div>\n";
493
494        echo "\n<input type='hidden' name='id_auteur' value='$connect_id_auteur' />";
495        echo "\n<input type='hidden' name='hash' value='" . calculer_action_auteur("valide_plugin") . "'>";
496        echo "\n<input type='hidden' name='changer_plugin' value='oui'>";
497
498        echo "\n<p>";
499
500        echo "<div style='text-align:$spip_lang_right'>";
501        echo "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo'>";
502        echo "</div>";
503        echo "</form></tr></table>\n";
504
505        echo "<br />";
506
507        fin_page();
508
509}
510
511?>
Note: See TracBrowser for help on using the repository browser.