1 | <?php |
---|
2 | /** |
---|
3 | * Fichier gérant l'installation et désinstallation du plugin Optionsproduits |
---|
4 | * |
---|
5 | * @plugin Optionsproduits |
---|
6 | * @copyright 2017 |
---|
7 | * @author nicod_ |
---|
8 | * @licence GNU/GPL |
---|
9 | * @package SPIP\Optionsproduits\Installation |
---|
10 | */ |
---|
11 | |
---|
12 | if (!defined('_ECRIRE_INC_VERSION')) { |
---|
13 | return; |
---|
14 | } |
---|
15 | |
---|
16 | /** |
---|
17 | * Fonction d'installation et de mise à jour du plugin Optionsproduits. |
---|
18 | * |
---|
19 | * @param string $nom_meta_base_version |
---|
20 | * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP |
---|
21 | * @param string $version_cible |
---|
22 | * Version du schéma de données dans ce plugin (déclaré dans paquet.xml) |
---|
23 | * |
---|
24 | * @return void |
---|
25 | **/ |
---|
26 | function optionsproduits_upgrade($nom_meta_base_version, $version_cible) { |
---|
27 | $maj = array(); |
---|
28 | |
---|
29 | $maj['create'] = array( |
---|
30 | |
---|
31 | // créer les tables des options |
---|
32 | array( |
---|
33 | 'maj_tables', |
---|
34 | array( |
---|
35 | 'spip_options', |
---|
36 | 'spip_options_liens', |
---|
37 | 'spip_optionsgroupes', |
---|
38 | ), |
---|
39 | ), |
---|
40 | |
---|
41 | // ajouter le champ options dans les tables des plugins Panier et Commande |
---|
42 | array('optionsproduits_alter_paniers_commandes'), |
---|
43 | |
---|
44 | // ajouter les options et groupes à la config des objets géré par Rang |
---|
45 | array('optionsproduits_configure_rang'), |
---|
46 | ); |
---|
47 | |
---|
48 | $maj['1.0.1'] = array( |
---|
49 | array('optionsproduits_configure_rang'), |
---|
50 | ); |
---|
51 | |
---|
52 | include_spip('base/upgrade'); |
---|
53 | maj_plugin($nom_meta_base_version, $version_cible, $maj); |
---|
54 | } |
---|
55 | |
---|
56 | /** |
---|
57 | * Fonction de désinstallation du plugin Optionsproduits. |
---|
58 | * |
---|
59 | * @param string $nom_meta_base_version |
---|
60 | * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP |
---|
61 | * |
---|
62 | * @return void |
---|
63 | **/ |
---|
64 | function optionsproduits_vider_tables($nom_meta_base_version) { |
---|
65 | |
---|
66 | sql_drop_table('spip_options'); |
---|
67 | sql_drop_table('spip_options_liens'); |
---|
68 | sql_drop_table('spip_optionsgroupes'); |
---|
69 | |
---|
70 | // Nettoyer les versionnages et forums |
---|
71 | sql_delete('spip_versions', sql_in('objet', array('option'))); |
---|
72 | sql_delete('spip_versions_fragments', sql_in('objet', array('option'))); |
---|
73 | |
---|
74 | effacer_meta($nom_meta_base_version); |
---|
75 | |
---|
76 | // Retirer les options et groupes d'options dans la liste des objets géré par le plugin Rang |
---|
77 | $tables = lire_config('rang/rang_objets'); |
---|
78 | $tables = explode(',', $tables); |
---|
79 | unset($tables['spip_options']); |
---|
80 | unset($tables['spip_optionsgroupes']); |
---|
81 | ecrire_config('rang/rang_objets', implode(',', $tables)); |
---|
82 | } |
---|
83 | |
---|
84 | /** |
---|
85 | * Ajouter les options et groupes d'options dans la liste des objets géré par le plugin Rang |
---|
86 | * |
---|
87 | * @return void |
---|
88 | **/ |
---|
89 | function optionsproduits_configure_rang() { |
---|
90 | $tables = lire_config('rang/rang_objets'); |
---|
91 | $tables = explode(',', $tables); |
---|
92 | $tables_options = array( |
---|
93 | 'spip_options', |
---|
94 | 'spip_optionsgroupes', |
---|
95 | ); |
---|
96 | $tables = array_unique(array_merge($tables, $tables_options)); |
---|
97 | ecrire_config('rang/rang_objets', implode(',', $tables)); |
---|
98 | // créer les champs 'rang' dans les tables |
---|
99 | rang_creer_champs($tables_options); |
---|
100 | } |
---|
101 | |
---|
102 | /** |
---|
103 | * Ajouter le champ options dans les tables des plugins Panier et Commande |
---|
104 | * |
---|
105 | * @return void |
---|
106 | **/ |
---|
107 | function optionsproduits_alter_paniers_commandes() { |
---|
108 | |
---|
109 | // TODO : problème si on installe les plugins Panier ou Commande après ce plugin, |
---|
110 | // les champs ne seront pas créés ni la clé réécrite... |
---|
111 | // faudrait pouvoir checker ça avec un pipeline post installation de plugin |
---|
112 | // je sais pas comment faire pour l'instant sans faire le gros bourrin |
---|
113 | |
---|
114 | if(test_plugin_actif('paniers')) { |
---|
115 | // ajouter un champ pour les options dans les lignes du panier |
---|
116 | sql_alter('TABLE spip_paniers_liens ADD options VARCHAR(100) NOT NULL DEFAULT ""'); |
---|
117 | // recréer la clé du panier avec les options |
---|
118 | sql_alter('TABLE `spip_paniers_liens` DROP PRIMARY KEY'); |
---|
119 | sql_alter('TABLE `spip_paniers_liens` ADD PRIMARY KEY (`id_panier`, `id_objet`, `objet`, `options`)'); |
---|
120 | } |
---|
121 | |
---|
122 | if(test_plugin_actif('commandes')) { |
---|
123 | // ajouter un champ pour les options dans les lignes des commandes |
---|
124 | sql_alter('TABLE spip_commandes_details ADD options VARCHAR(100) NOT NULL DEFAULT ""'); |
---|
125 | } |
---|
126 | |
---|
127 | } |
---|