[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / svp / svp_administrations.php
1 <?php
2
3 /**
4 * Fichier gérant l'installation et désinstallation du plugin
5 *
6 * @plugin SVP pour SPIP
7 * @license GPL
8 * @package SPIP\SVP\Installation
9 **/
10
11 include_spip('base/create');
12
13 /**
14 * Installation et mises à jour du plugin
15 *
16 * Crée les tables SQL du plugin (spip_depots, spip_plugins, spip_depots_plugins, spip_paquets)
17 *
18 * @param string $nom_meta_base_version
19 * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
20 * @param string $version_cible
21 * Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
22 * @return void
23 **/
24 function svp_upgrade($nom_meta_base_version, $version_cible) {
25
26 $maj = array();
27
28 $install = array('maj_tables', array('spip_depots', 'spip_plugins', 'spip_depots_plugins', 'spip_paquets'));
29 $maj['create'][] = $install;
30 $maj['0.2'][] = array('maj_tables', 'spip_paquets');
31 $maj['0.3'][] = array('maj_tables', 'spip_paquets'); // prefixe et attente
32 $maj['0.3'][] = array('svp_synchroniser_prefixe');
33 include_spip('inc/svp_depoter_local');
34 // on force le recalcul des infos des paquets locaux.
35 $maj['0.3.1'][] = array('svp_actualiser_paquets_locaux', true);
36
37 // autant mettre tout a jour pour avoir une base propre apres renommage extensions=> plugins_dist
38 $maj['0.4.0'][] = array('svp_vider_tables', $nom_meta_base_version);
39 $maj['0.4.0'][] = $install;
40 // on force le recalcul des infos des paquets locaux.
41 $maj['0.4.1'][] = array('svp_actualiser_paquets_locaux', true);
42 // on force le recalcul des infos des paquets locaux.
43 $maj['0.5.0'][] = array('maj_tables', 'spip_paquets');
44 $maj['0.5.1'][] = array('svp_actualiser_paquets_locaux', true);
45
46 include_spip('base/upgrade');
47 maj_plugin($nom_meta_base_version, $version_cible, $maj);
48 }
49
50 /**
51 * Désinstallation du plugin
52 *
53 * Supprime les tables SQL du plugin (spip_depots, spip_plugins, spip_depots_plugins, spip_paquets)
54 *
55 * @param string $nom_meta_base_version
56 * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
57 * @return void
58 **/
59 function svp_vider_tables($nom_meta_base_version) {
60 sql_drop_table("spip_depots");
61 sql_drop_table("spip_plugins");
62 sql_drop_table("spip_depots_plugins");
63 sql_drop_table("spip_paquets");
64 effacer_meta($nom_meta_base_version);
65
66 spip_log('DESINSTALLATION BDD', 'svp_actions.' . _LOG_INFO);
67 }
68
69
70 /**
71 * Ajoute le préfixe des plugins dans chaque ligne de paquets
72 *
73 * Cette mise à jour permet de dupliquer le préfixe des plugins
74 * dans la ligne des paquets (cette colonne était absente avant)
75 * pour plus de simplicité ensuite dans les requêtes SQL.
76 */
77 function svp_synchroniser_prefixe() {
78 $paquets = sql_allfetsel(
79 array('pa.id_paquet', 'pl.prefixe'),
80 array('spip_paquets AS pa', 'spip_plugins AS pl'),
81 'pl.id_plugin=pa.id_plugin');
82
83 if ($paquets) {
84 // On insere, en encapsulant pour sqlite...
85 if (sql_preferer_transaction()) {
86 sql_demarrer_transaction();
87 }
88
89 foreach ($paquets as $paquet) {
90 sql_updateq('spip_paquets',
91 array('prefixe' => $paquet['prefixe']),
92 'id_paquet=' . intval($paquet['id_paquet']));
93 }
94
95 if (sql_preferer_transaction()) {
96 sql_terminer_transaction();
97 }
98 }
99 }