source: spip-zone/_plugins_/couteau_suisse/couteau_suisse_administrations.php @ 60201

Last change on this file since 60201 was 53934, checked in by patfr@…, 8 years ago

Renforcement du fonctionnement du plugin
+ report http://zone.spip.org/trac/spip-zone/changeset/53843

File size: 5.7 KB
Line 
1<?php
2
3if(!defined('_SPIP20100')) {
4        // Versions SPIP anterieures a 2.1
5        function couteau_suisse_install($action){
6                static $ok = 0;
7                if(defined('_LOG_CS')) cs_log("couteau_suisse_install($action)");
8                include_spip('inc/meta');
9                include_spip('inc/plugin');
10                $t = plugin_get_infos('couteau_suisse');
11                switch ($action){
12                        case 'test':
13                                // affichage d'un lien ici, puisque le pipeline 'affiche_gauche' n'est pas pris en compte dans 'admin_plugin'...
14                                if(!$ok && _request('exec') == 'admin_plugin') {
15                                        if(!defined('_SPIP19300')) echo '<br />';
16                                        include_spip('inc/presentation');
17                                        echo debut_cadre_enfonce('', true),
18                                                icone_horizontale(_T('couteau:titre'), generer_url_ecrire('admin_couteau_suisse'), find_in_path('img/couteau-24.gif'), '', false),
19                                                fin_cadre_enfonce(true);
20                                        $ok++;
21                                }
22                                return isset($GLOBALS['meta']['couteau_suisse_base_version'])
23                                        AND ($GLOBALS['meta']['couteau_suisse_base_version']>=$t['version_base'])
24                                        AND isset($GLOBALS['meta']['tweaks_actifs']);
25                                break;
26                        case 'install':
27                                couteau_suisse_upgrade('couteau_suisse_base_version',$t['version_base']);
28                                break;
29                        case 'uninstall':
30                                couteau_suisse_vider_tables('couteau_suisse_base_version');
31                                break;
32                }
33        }
34}
35
36// desinstallation des donnees du plugin
37function couteau_suisse_vider_tables($nom_meta_base_version) {
38        effacer_meta($nom_meta_base_version);
39        // effacement de toutes les metas du Couteau Suisse
40        foreach(array_keys($GLOBALS['meta']) as $meta) {
41                if(strpos($meta, 'tweaks_') === 0) effacer_meta($meta);
42                if(strpos($meta, 'cs_') === 0) effacer_meta($meta);
43        }
44        ecrire_metas(); # Pour SPIP 1.92
45        // effacement des repertoires temporaires
46        include_spip('inc/getdocument');
47        foreach(array(_DIR_CS_TMP, _DIR_VAR.'couteau-suisse') as $dir) 
48                if(@file_exists($dir)) effacer_repertoire_temporaire($dir);
49        // fichier RSS temporaire
50        include_spip('cout_define');
51        @unlink(_CS_TMP_RSS);
52        // retrait de l'inclusion eventuelle dans config/mes_options.php
53        include_spip('cout_utils');
54        cs_verif_FILE_OPTIONS(false, true);
55}
56
57// installation des tables du plugin et mises a jour
58function couteau_suisse_upgrade($nom_meta_base_version, $version_cible){
59if(defined('_LOG_CS')) cs_log("cout_upgrade($nom_meta_base_version, $version_cible)");
60        $current_version = 0.0;
61        if(     (!isset($GLOBALS['meta'][$nom_meta_base_version]))
62                        || (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
63                if ($current_version==0.0){
64                        include_spip('base/create');
65                        creer_base();
66                }
67                if (version_compare($current_version, $tmp='1.0','<')){
68                        echo '<h4>',_T('couteau:titre'),' - Upgrade ',$tmp,'</h4>';
69                        cs_suppr_metas_var('set_options');
70                        cs_suppr_metas_var('radio_set_options3');
71                        cs_suppr_metas_var('radio_set_options', 'radio_set_options4');
72                        cs_suppr_metas_var('radio_type_urls', 'radio_type_urls3');
73                        cs_suppr_metas_var('radio_type_urls2', 'radio_type_urls3');
74                        cs_suppr_metas_var('radio_filtrer_javascript', 'radio_filtrer_javascript3');
75                        cs_suppr_metas_var('radio_filtrer_javascript2', 'radio_filtrer_javascript3');
76                        cs_suppr_metas_var('radio_suivi_forums', 'radio_suivi_forums3');
77                        cs_suppr_metas_var('desactive_cache');
78                        cs_suppr_metas_var('radio_desactive_cache', 'radio_desactive_cache3');
79                        cs_suppr_metas_var('target_blank');
80                        cs_suppr_metas_var('url_glossaire_externe', 'url_glossaire_externe2');
81                        cs_suppr_metas_var('');
82                        effacer_meta('cs_decoupe');
83                        if(defined('_SPIP19300')) {
84                                if(@$metas_vars['radio_desactive_cache3']==1) $metas_vars['radio_desactive_cache4']=-1;
85                                cs_suppr_metas_var('radio_desactive_cache3');
86                        }
87                        foreach(array('cs_decoration', 'cs_decoration_racc', 'cs_smileys', 'cs_smileys_racc', 'cs_chatons', 'cs_chatons_racc',
88                                        'cs_jcorner', 'cs_couleurs', 'cs_couleurs_racc', 'cs_filets_sep', 'cs_filets_sep_racc', 'cs_insertions') as $meta) 
89                                effacer_meta($meta);
90                        ecrire_meta($nom_meta_base_version, $current_version=$tmp);
91                }
92                if (version_compare($current_version, $tmp='1.1','<')){
93                        echo '<h4>',_T('couteau:titre'),' - Upgrade ',$tmp,'</h4>';
94                        effacer_meta('tweaks_contribs');
95                        ecrire_meta($nom_meta_base_version, $current_version=$tmp);
96                }
97                ecrire_metas();
98        }
99}
100
101function cs_suppr_metas_var($meta, $new = false) {
102 global $metas_vars;
103 if(!isset($metas_vars[$meta])) return;
104 if($new) {
105        if(preg_match(',([0-9A-Za-z_-]*)\(('.'[0-9A-Za-z_-]*=[A-Za-z_:-]+\|[0-9A-Za-z_:=>|-]+'.')\),', $metas_vars[$meta], $reg))
106                $metas_vars[$new] = $reg[1];
107        else $metas_vars[$new] = $metas_vars[$meta];
108 }
109 unset($metas_vars[$meta]);
110}
111
112/*******************/
113/* PACKS DE CONFIG */
114/*******************/
115
116function cout_install_pack($pack, $redirige=false) {
117        global $metas_vars, $metas_outils;
118        $pack = &$GLOBALS['cs_installer'][$pack];
119        if(is_string($pack) && function_exists($pack)) $pack = $pack();
120        effacer_meta('tweaks_actifs');
121        $metas_vars = $metas_outils = array();
122        foreach(preg_split('%\s*[,|]\s*%', $pack['outils']) as $o) $metas_outils[trim($o)]['actif'] = 1;
123        if(is_array($pack['variables'])) foreach($pack['variables'] as $i=>$v) $metas_vars[$i] = $v;
124        ecrire_meta('tweaks_actifs', serialize($metas_outils));
125        ecrire_meta('tweaks_variables', serialize($metas_vars));
126        // tout recompiler
127        if($redirige) cout_exec_redirige();
128}
129
130// redirige vers la page exec en cours en vue une reinitialisation du Couteau Suisse
131// si $arg==false alors la redirection ne se fera pas (procedure d'installation par exemple)
132function cout_exec_redirige($arg='', $recompiler=true) {
133        if($recompiler) {
134                ecrire_metas();
135                cs_initialisation(true);
136                include_spip('inc/invalideur');
137                suivre_invalideur("1"); # tout effacer
138                purger_repertoire(_DIR_SKELS);
139                purger_repertoire(_DIR_CACHE);
140        }
141        if($arg!==false) {
142                include_spip('inc/headers');
143                redirige_par_entete(generer_url_ecrire(_request('exec'), $arg, true));
144        }
145}
146
147?>
Note: See TracBrowser for help on using the repository browser.