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

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

MAJ auto : mode réparation compatible SPIP3
Une demande de mise à jour d'un plugin n'ayant pas de nouvelle version disponible (nouvelle release ou non) provoque le remplacement de ses fichiers.
+ Rajeunissement des librairies de SPIP2 ('icon' devenue 'logo', et mode return dans redirection brutale apres decompression d'archive)

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