source: spip-zone/_plugins_/optionsproduits/trunk/optionsproduits_administrations.php

Last change on this file was 111457, checked in by nicod@…, 15 months ago

Un formulaire générique pour ajouter n'importe quel objet avec ses options au panier (cf README.md)

File size: 3.8 KB
Line 
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
12if (!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 **/
26function 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 **/
64function 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 **/
89function 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 **/
107function 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} 
Note: See TracBrowser for help on using the repository browser.