source: spip-zone/_dev_/univers_spip/base/univers.php @ 113538

Last change on this file since 113538 was 113538, checked in by marcimat@…, 4 months ago

Comme ça fonctionne, écrire la méta d’upgrade :)

File size: 5.6 KB
Line 
1<?php
2
3/**
4 * Plugin Univers SPIP
5 * (c) 2010 Cedric
6 * Distribue sous licence GPL
7 */
8
9if (!defined('_ECRIRE_INC_VERSION')) {
10        return;
11}
12
13function univers_declarer_tables_interfaces($interface) {
14        // 'spip_' dans l'index de $tables_principales
15        $interface['table_des_tables']['websites']='websites';
16
17        return $interface;
18}
19
20function univers_declarer_tables_principales($tables_principales) {
21        $spip_websites = array(
22                'id_website'    => 'bigint(21) NOT NULL',
23                'url' => "varchar(255) default '' NOT NULL",
24                'titre' => "text DEFAULT '' NOT NULL",
25                'descriptif'    => "text DEFAULT '' NOT NULL",
26                'ip' => "varchar(255) default '' NOT NULL",
27                'spip' => "varchar(255) default '' NOT NULL",
28                'server' => "varchar(255) default '' NOT NULL",
29                'php' => "varchar(255) default '' NOT NULL",
30                'gzip' => "varchar(3) default '' NOT NULL",
31                'length' => 'bigint(21) NOT NULL',
32                'size' => 'bigint(21) NOT NULL',
33                'plugins' => 'bigint(21) default NULL',
34                'pays' => "char(3) default '' NOT NULL",
35                'url_clean' => "varchar(255) default '' NOT NULL",
36
37                'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
38                'statut' => "varchar(10) default 'prop' NOT NULL",
39
40                'retry'         => 'int(5) default 0 NOT NULL',
41                'status'        => "varchar(10) default '' NOT NULL",
42                );
43
44        $spip_websites_key = array(
45                'PRIMARY KEY'   => 'id_website',
46        );
47
48        $tables_principales['spip_websites'] = array(
49                'field' => &$spip_websites,
50                'key' => &$spip_websites_key);
51
52        return $tables_principales;
53}
54
55
56function univers_declarer_tables_auxiliaires($tables_auxiliaires) {
57        $spip_websites_plugins = array(
58                'id_website'    => 'bigint(21) NOT NULL',
59                'plugin' => "varchar(64) default '' NOT NULL",
60                'version' => "varchar(255) default '' NOT NULL",
61                );
62
63        $spip_websites_plugins_key = array(
64                'PRIMARY KEY'   => 'id_website, plugin',
65        );
66
67        $tables_auxiliaires['spip_websites_plugins'] = array(
68                'field' => &$spip_websites_plugins,
69                'key' => &$spip_websites_plugins_key);
70
71        return $tables_auxiliaires;
72}
73
74function univers_upgrade($nom_meta_base_version, $version_cible) {
75        $current_version = 0.0;
76        if ((!isset($GLOBALS['meta'][$nom_meta_base_version]))
77                        || (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)) {
78                include_spip('base/abstract_sql');
79                if (version_compare($current_version, '0.1.2', '<')) {
80                        echo 'Creation des tables';
81                        include_spip('base/serial');
82                        include_spip('base/auxiliaires');
83                        include_spip('base/create');
84                        creer_base();
85                        ecrire_meta($nom_meta_base_version, $current_version = $version_cible, 'non');
86                }
87                if (version_compare($current_version, '0.1.4', '<')) {
88                        include_spip('inc/univers');
89                        $res = sql_select(
90                                'referer',
91                                'spip_referers',
92                                "referer LIKE '%spip.php%' AND referer NOT LIKE 'https://contrib.spip.net%'".
93                                " AND referer NOT LIKE '%localhost%'"
94                        );
95                        echo 'Import depuis les referer %spip.php% : '.sql_count($res).' <br />';
96                        while ($row = sql_fetch($res)) {
97                                univers_proposer_site($row['referer']);
98                        }
99                        ecrire_meta($nom_meta_base_version, $current_version = '0.1.4', 'non');
100                }
101                if (version_compare($current_version, '0.1.5', '<')) {
102                        $res = sql_select(
103                                'referer',
104                                'spip_referers',
105                                "referer LIKE '%/ecrire/%' AND referer NOT LIKE 'https://contrib.spip.net%'".
106                                " AND referer NOT LIKE '%localhost%'"
107                        );
108                        echo 'Import depuis les referer %/ecrire/% : '.sql_count($res).' <br />';
109                        while ($row = sql_fetch($res)) {
110                                univers_proposer_site(preg_replace(',/ecrire/.*$,Uims', '/spip.php', $row['referer']));
111                        }
112                        ecrire_meta($nom_meta_base_version, $current_version = '0.1.5', 'non');
113                }
114                if (version_compare($current_version, '0.1.8', '<')) {
115                        include_spip('base/serial');
116                        include_spip('base/auxiliaires');
117                        include_spip('base/create');
118                        maj_tables(array('spip_websites','spip_websites_plugins'));
119                        sql_updateq('spip_websites', array('plugins'=>0), "statut='publie'");
120                        $res = sql_select('id_website, count(plugin) AS nb', 'spip_websites_plugins', '', 'id_website');
121                        while ($row = sql_fetch($res)) {
122                                sql_updateq('spip_websites', array('plugins'=>$row['nb']), 'id_website='.intval($row['id_website']));
123                        }
124                        ecrire_meta($nom_meta_base_version, $current_version = '0.1.8', 'non');
125                }
126                if (version_compare($current_version, '0.1.9', '<')) {
127                        include_spip('base/serial');
128                        include_spip('base/auxiliaires');
129                        include_spip('base/create');
130                        // ajout du champ pays
131                        maj_tables(array('spip_websites','spip_websites_plugins'));
132                        include_spip('inc/univers_analyser');
133                        $c = sql_countsel('spip_websites', "pays='' AND IP<>''");
134                        echo "MAJ 0.1.9 : $c pays a renseigner<br />";
135                        $res = sql_select('id_website, ip', 'spip_websites', "pays='' AND IP<>''");
136                        while ($row = sql_fetch($res)) {
137                                sql_updateq(
138                                        'spip_websites',
139                                        array('pays'=>univers_geoip($row['ip'])),
140                                        'id_website='.intval($row['id_website'])
141                                );
142                        }
143                        ecrire_meta($nom_meta_base_version, $current_version = '0.1.9', 'non');
144                }
145                if (version_compare($current_version, '0.1.10', '<')) {
146                        include_spip('base/serial');
147                        include_spip('base/auxiliaires');
148                        include_spip('base/create');
149                        // ajout du champ url_clean
150                        spip_timer('up');
151                        maj_tables(array('spip_websites'));
152                        sql_update( 'spip_websites', array(
153                                'url_clean' =>
154                                        "TRIM(LEADING 'www.' FROM " .
155                                        "TRIM(LEADING 'https://' FROM " .
156                                        "TRIM(LEADING 'http://' FROM " .
157                                        "TRIM(TRAILING '/' FROM " .
158                                        "TRIM(TRAILING 'spip.php' FROM url" .
159                                        ")))))"
160                        ));
161                        echo "Urls cleans calculées en " . spip_timer('up');
162                        ecrire_meta($nom_meta_base_version, $current_version = '0.1.10', 'non');
163                }
164        }
165}
166
167function univers_vider_tables($nom_meta_base_version) {
168        effacer_meta($nom_meta_base_version);
169        sql_drop_table('spip_websites_plugins');
170        sql_drop_table('spip_websites');
171}
Note: See TracBrowser for help on using the repository browser.