[30] | 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 | ?> |
---|