source: spip-zone/_plugins_/_amelioration_admin_/icones_admin/exec/config_habillage_prive.php @ 5193

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

La version precedente ne marchait pas quand le fichier mes_options original contenait un define sur img_pack. Ca devrait marcher maintenant...

File size: 6.9 KB
Line 
1<?php
2
3$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(dirname(__FILE__)))));
4define('_DIR_PLUGIN_HABILLAGE_PRIVE',(_DIR_PLUGINS.end($p)));
5
6// Fonction qui gere les habillages. Tentative de faire la fonction sans appel a la
7// base de donnees, et donc sans manipulation sql.
8function exec_config_habillage_prive() {
9  global $connect_statut, $connect_toutes_rubriques;
10
11  include_spip("inc/presentation");
12  include_spip ("base/abstract_sql");
13
14  debut_page('&laquo; '._T('habillageprive:titre_page').' &raquo;', 'configurations', 'habillage_prive','',_DIR_PLUGIN_HABILLAGE_PRIVE.'/img_pack/habillage_prive.css');
15
16  if ($connect_statut != '0minirezo' OR !$connect_toutes_rubriques) {
17        echo _T('avis_non_acces_page');
18        exit;
19  }
20
21  if ($connect_statut == '0minirezo' AND $connect_toutes_rubriques ) {
22
23        echo '<br><br>';
24        echo '<img src="' . _DIR_PLUGIN_HABILLAGE_PRIVE. '/img_pack/habillage_prive-48.png">';
25        gros_titre(_T('habillageprive:gros_titre'));
26
27        barre_onglets("configuration", "config_habillage_prive");
28
29        /*Affichage*/
30        debut_gauche(); 
31       
32        debut_boite_info();
33        echo propre(_T('habillageprive:help'));
34        fin_boite_info();
35
36        debut_droite();
37
38        echo '<form action="'.generer_url_ecrire('config_habillage_prive').'" method="post">';
39       
40        // Debut des manipulations de mes_options.php. Le fichier mes_options sert de
41        // reference pour savoir quel habillage a choisi l'utilisateur.
42       
43        $options_file = "mes_options.php";
44        $theme = $_REQUEST['theme'];
45        $plugin_directory = _DIR_PLUGIN_HABILLAGE_PRIVE;
46
47       
48        // Si le fichier inc/mes_options.php existe deja
49        if (file_exists($options_file)) {
50                $backup_file = "$options_file.backup";
51                rename($options_file, $backup_file);
52                $open_backup_file = fopen($backup_file, 'r');
53                $backup_file_size = filesize ($backup_file);
54                $read_backup_file = fread ($open_backup_file, $backup_file_size);
55                $search_comment = eregi("//start_define_img_pack(.*)//end_define_img_pack", $read_backup_file, $comment);
56                $search_original_content = eregi("define\(\'_DIR_IMG_PACK\', \(\'(.*)\'\)\)\;", $read_backup_file, $original_content);
57                $search_content = eregi("define\(\'_DIR_IMG_PACK\', \(\'(.*)\'\)\)\;(.*)//end_define_img_pack", $read_backup_file, $content);
58                $search_all_content = eregi("<\?(.*)define\(\'_DIR_IMG_PACK\', \(\'(.*)\'\)\)\;(.*)\?>", $read_backup_file, $all_content);
59               
60                # Si l'utilisateur ou l'utilisatrice ne demande pas a revenir a la situation
61                # initiale (= a son chemin vers img_pack d'origine).
62                if ($theme != "initial") {
63
64                        # Si le fichier ecrire/mes_options.php contient le commentaire ajoute par
65                        # le plugin, cela signifie que le plugin a deja ete active pour un habillage.
66                        # Il faut donc modifier la ligne existante personnalisee du chemin vers
67                        # img_pack. :
68                        if ($search_comment) {
69                                $open_options_file = fopen($options_file, 'w+');
70                                $new_content = $plugin_directory."/themes/".$theme."/img_pack/";
71                                $insert_new_content = ereg_replace($content[1], $new_content, $read_backup_file);
72                                $write = fwrite($open_options_file, $insert_new_content);
73                                fclose($open_options_file);
74                        }
75                       
76                        # Si le fichier mes_options sauvegarde redefinissait le chemin d'img_pack
77                        # par la ligne define('_DIR_IMG_PACK', [...]) avant le choix d'un autre
78                        # habillage :
79                        else if ($search_original_content) {
80                                $search_comment_backup = eregi("//backup(.*)", $read_backup_file);
81                               
82                                if ($search_comment_backup) {
83                                        $open_options_file = fopen($options_file, 'w+');
84                                        $new_content = "//start_define_img_pack\ndefine('_DIR_IMG_PACK', ('".$plugin_directory."/themes/".$theme."/img_pack/'));\n//end_define_img_pack\n?>";
85                                        $insert_new_content = ereg_replace( '\?>', $new_content, $read_backup_file);
86                                        $write = fwrite($open_options_file, $insert_new_content);
87                                        fclose($open_options_file);
88                                }
89                                else {
90                                        $open_options_file = fopen($options_file, 'w+');
91                                        $replaced_content = "define\(\'_DIR_IMG_PACK\', \(\'";
92                                        $new_content = "//start_define_img_pack\ndefine('_DIR_IMG_PACK', ('".$plugin_directory."/themes/".$theme."/img_pack/'));\n//end_define_img_pack\n//backup_define('_DIR_IMG_PACK', ('";
93                                        $insert_new_content = ereg_replace( $replaced_content, $new_content, $read_backup_file);
94                                        $write = fwrite($open_options_file, $insert_new_content);
95                                        fclose($open_options_file);
96                                }
97                        }
98                       
99                        # Si le fichier ecrire/mes_options.php existe deja mais qu'il ne redefinie
100                        # pas le chemin vers img_pack.
101                        else {
102                                $open_options_file = fopen($options_file, 'w+');
103                                $new_content = "//start_define_img_pack\ndefine('_DIR_IMG_PACK', ('".$plugin_directory."/themes/".$theme."/img_pack/'));\n//end_define_img_pack\n?>";
104                                $insert_new_content = ereg_replace( '\?>', $new_content, $read_backup_file);
105                                $write = fwrite($open_options_file, $insert_new_content);
106                                fclose($open_options_file);
107                        }
108                       
109                }
110               
111                # Si l'utilisateur ou l'utilisatrice veut revenir a la situation initiale.
112                # ! Manque la restauration du define d'origine !
113                else if ($theme == "initial") {
114                        $search_comment_backup = eregi("//backup_define\(\'_DIR_IMG_PACK\', \(\'(.*)\'\)\)\;", $read_backup_file);
115                       
116                        if ($search_comment) {
117                                $open_options_file = fopen($options_file, 'w+');
118                                $erased_content = "//start_define_img_pack(.*)//end_define_img_pack";
119                                $insert_new_content = ereg_replace($erased_content, '', $read_backup_file);
120                                $write = fwrite($open_options_file, $insert_new_content);
121                                fclose($open_options_file);
122                        }
123                       
124                        else if ($search_comment_backup){
125                                $open_options_file = fopen($options_file, 'w+');
126                                $insert_new_content = ereg_replace( '//backup_define', 'define', $read_backup_file);
127                                $write = fwrite($open_options_file, $insert_new_content);
128                                fclose($open_options_file);
129                               
130                        }
131                        else {
132                                rename($backup_file, $options_file);
133                        }
134                }
135        }
136       
137        else {
138                $open_options_file = fopen($options_file, 'w+');
139                $new_content = "<?\ndefine('_DIR_IMG_PACK', ('".$plugin_directory."/themes/".$theme."/img_pack/'));\n?>";
140                $write = fwrite($open_options_file, $new_content);
141                fclose($open_options_file);
142        }
143       
144        echo '<INPUT type=radio name="theme" value="initial"';
145                if ($_REQUEST['theme'] == "initial") {
146                        echo "checked";
147                }
148        echo ">";
149        echo "Revenir &agrave; l'habillage d'origine";
150        echo "<br />";
151       
152        $dossier = opendir (_DIR_PLUGIN_HABILLAGE_PRIVE.'/themes/');
153        while ($fichier = readdir ($dossier)) {
154        if ($fichier != "." && $fichier != "..") {
155                echo '<INPUT type=radio name="theme" value="'.$fichier.'"';
156                if ($_REQUEST['theme'] == $fichier) {
157                        echo " checked";
158                }
159                echo ">";
160                echo $fichier.'<br />';
161        }
162        }
163        closedir ($dossier);
164       
165        echo '<input type="submit" value="'._T('valider').'"/>';
166        echo '</form>';
167  } 
168 
169  fin_page();
170 
171}
172
173?>
Note: See TracBrowser for help on using the repository browser.