1 | <?php |
---|
2 | |
---|
3 | $GLOBALS['agenda_base_version'] = 0.13; |
---|
4 | function Agenda_verifier_base(){ |
---|
5 | $version_base = $GLOBALS['agenda_base_version']; |
---|
6 | $current_version = 0.0; |
---|
7 | if ( (!isset($GLOBALS['meta']['agenda_base_version']) ) |
---|
8 | || (($current_version = $GLOBALS['meta']['agenda_base_version'])!=$version_base)){ |
---|
9 | include_spip('base/agenda_evenements'); |
---|
10 | if ($current_version==0.0){ |
---|
11 | include_spip('base/create'); |
---|
12 | include_spip('base/abstract_sql'); |
---|
13 | creer_base(); |
---|
14 | // ajout du champ evenements a la table spip_groupe_mots |
---|
15 | // si pas deja existant |
---|
16 | $desc = spip_abstract_showtable("spip_groupes_mots", '', true); |
---|
17 | if (!isset($desc['field']['evenements'])){ |
---|
18 | spip_query("ALTER TABLE spip_groupes_mots ADD `evenements` VARCHAR(3) NOT NULL AFTER `syndic`"); |
---|
19 | } |
---|
20 | ecrire_meta('agenda_base_version',$current_version=$version_base,'non'); |
---|
21 | } |
---|
22 | if ($current_version<0.11){ |
---|
23 | spip_query("ALTER TABLE spip_evenements ADD `horaire` ENUM('oui','non') DEFAULT 'oui' NOT NULL AFTER `lieu`"); |
---|
24 | ecrire_meta('agenda_base_version',$current_version=0.11,'non'); |
---|
25 | } |
---|
26 | if ($current_version<0.12){ |
---|
27 | spip_query("ALTER TABLE spip_evenements ADD `id_article` bigint(21) DEFAULT '0' NOT NULL AFTER `id_evenement`"); |
---|
28 | spip_query("ALTER TABLE spip_evenements ADD INDEX ( `id_article` )"); |
---|
29 | $res = spip_query ("SELECT * FROM spip_evenements_articles"); |
---|
30 | while ($row = spip_fetch_array($res)){ |
---|
31 | $id_article = $row['id_article']; |
---|
32 | $id_evenement = $row['id_evenement']; |
---|
33 | spip_query("UPDATE spip_evenements SET id_article=$id_article WHERE id_evenement=$id_evenement"); |
---|
34 | } |
---|
35 | spip_query("DROP TABLE spip_evenements_articles"); |
---|
36 | ecrire_meta('agenda_base_version',$current_version=0.12,'non'); |
---|
37 | } |
---|
38 | if ($current_version<0.13){ |
---|
39 | include_spip('base/create'); |
---|
40 | include_spip('base/abstract_sql'); |
---|
41 | creer_base(); |
---|
42 | ecrire_meta('agenda_base_version',$current_version=0.13,'non'); |
---|
43 | } |
---|
44 | |
---|
45 | ecrire_metas(); |
---|
46 | } |
---|
47 | |
---|
48 | if (isset($GLOBALS['meta']['INDEX_elements_objet'])){ |
---|
49 | $INDEX_elements_objet = unserialize($GLOBALS['meta']['INDEX_elements_objet']); |
---|
50 | if (!isset($INDEX_elements_objet['spip_evenements'])){ |
---|
51 | $INDEX_elements_objet['spip_evenements'] = array('titre'=>8,'descriptif'=>4,'lieu'=>3); |
---|
52 | ecrire_meta('INDEX_elements_objet',serialize($INDEX_elements_objet)); |
---|
53 | ecrire_metas(); |
---|
54 | } |
---|
55 | } |
---|
56 | if (isset($GLOBALS['meta']['INDEX_objet_associes'])){ |
---|
57 | $INDEX_objet_associes = unserialize($GLOBALS['meta']['INDEX_objet_associes']); |
---|
58 | if (!isset($INDEX_objet_associes['spip_articles']['spip_evenements'])){ |
---|
59 | $INDEX_objet_associes['spip_articles']['spip_evenements'] = 1; |
---|
60 | ecrire_meta('INDEX_objet_associes',serialize($INDEX_objet_associes)); |
---|
61 | ecrire_metas(); |
---|
62 | } |
---|
63 | } |
---|
64 | if (isset($GLOBALS['meta']['INDEX_elements_associes'])){ |
---|
65 | $INDEX_elements_associes = unserialize($GLOBALS['meta']['INDEX_elements_associes']); |
---|
66 | if (!isset($INDEX_elements_associes['spip_evenements'])){ |
---|
67 | $INDEX_elements_associes['spip_evenements'] = array('titre'=>2,'descriptif'=>1); |
---|
68 | ecrire_meta('INDEX_elements_associes',serialize($INDEX_elements_associes)); |
---|
69 | ecrire_metas(); |
---|
70 | } |
---|
71 | } |
---|
72 | } |
---|
73 | |
---|
74 | function Agenda_vider_tables() { |
---|
75 | include_spip('base/agenda_evenements'); |
---|
76 | include_spip('base/abstract_sql'); |
---|
77 | // suppression du champ evenements a la table spip_groupe_mots |
---|
78 | spip_query("ALTER TABLE spip_groupes_mots DROP evenements"); |
---|
79 | spip_query("DROP TABLE spip_evenements"); |
---|
80 | spip_query("DROP TABLE spip_mots_evenements"); |
---|
81 | effacer_meta('agenda_base_version'); |
---|
82 | ecrire_metas(); |
---|
83 | } |
---|
84 | |
---|
85 | function Agenda_install($action){ |
---|
86 | $version_base = $GLOBALS['agenda_base_version']; |
---|
87 | switch ($action){ |
---|
88 | case 'test': |
---|
89 | return (isset($GLOBALS['meta']['agenda_base_version']) AND ($GLOBALS['meta']['agenda_base_version']>=$version_base) |
---|
90 | AND isset($GLOBALS['meta']['INDEX_elements_objet']) |
---|
91 | AND $t = unserialize($GLOBALS['meta']['INDEX_elements_objet']) |
---|
92 | AND isset($t['spip_evenements']) |
---|
93 | AND isset($GLOBALS['meta']['INDEX_objet_associes']) |
---|
94 | AND $t = unserialize($GLOBALS['meta']['INDEX_objet_associes']) |
---|
95 | AND isset($t['spip_articles']['spip_evenements']) |
---|
96 | AND isset($GLOBALS['meta']['INDEX_elements_associes']) |
---|
97 | AND $t = unserialize($GLOBALS['meta']['INDEX_elements_associes']) |
---|
98 | AND isset($t['spip_evenements'])); |
---|
99 | break; |
---|
100 | case 'install': |
---|
101 | Agenda_verifier_base(); |
---|
102 | break; |
---|
103 | case 'uninstall': |
---|
104 | Agenda_vider_tables(); |
---|
105 | break; |
---|
106 | } |
---|
107 | } |
---|
108 | ?> |
---|