source: spip-zone/_plugins_/mesfavoris/mesfavoris_administrations.php @ 74912

Last change on this file since 74912 was 74912, checked in by gilles.vincent@…, 8 years ago

Un peu de PHPDoc et un classement plus standard des pipelines et exemples de demo (encore faudrait-il qu'il existe un standard des bonnes pratiques pour le developpement de plugins ;) )

File size: 4.1 KB
Line 
1<?php
2/**
3 * Plugin mesfavoris
4 * (c) 2009-2013 Olivier Sallou, Cedric Morin, Gilles Vincent
5 * Distribue sous licence GPL
6 *
7 */
8
9/**
10 * Fichier gérant l'installation et désinstallation du plugin
11 *
12 * @package SPIP\Mesfavoris\Installation
13 */
14
15if (!defined("_ECRIRE_INC_VERSION")) return;
16
17/**
18 * Déclaration de l'index de $tables_principales qui sera utilisé dans les 'spip_'
19 *
20 * @pipeline declarer_tables_interfaces
21 * @param  array $interface Array contenant les infos des tables visibles par recherche sur 'spip_bidule'
22 * @return array            Cet Array de description modifié
23 */
24function mesfavoris_declarer_tables_interfaces($interface){
25        $interface['table_des_tables']['favoris']='favoris';
26        return $interface;
27}
28
29/**
30 * Declaration des tables principales
31 *
32 * @pipeline declarer_tables_principales
33 * @param array $tables_principales Un array de description des tables
34 * @return array $tables_principales L'Array de description complété
35 */
36function mesfavoris_declarer_tables_principales($tables_principales){
37        $spip_favoris = array(
38                "id_favori"     => "bigint(21) NOT NULL",
39                "id_auteur"     => "bigint DEFAULT '0' NOT NULL",
40                "id_objet"      => "bigint(21) DEFAULT '0' NOT NULL",
41                "objet" => "VARCHAR (25) DEFAULT '' NOT NULL",
42                "categorie"     => "VARCHAR (25) DEFAULT '' NOT NULL",
43                "maj"   => "TIMESTAMP"
44        );
45
46        $spip_favoris_key = array(
47                "PRIMARY KEY"           => "id_favori",
48                "KEY auteur_objet"      => "id_auteur,id_objet,objet",
49                "KEY id_auteur" => "id_auteur",
50                "KEY id_objet" => "id_objet",
51                "KEY objet" => "objet",
52                "KEY categorie" => "categorie",
53        );
54
55        $tables_principales['spip_favoris'] =
56                array('field' => &$spip_favoris, 'key' => &$spip_favoris_key);
57
58        return $tables_principales;
59}
60
61/**
62 * Installation / Mise à jour des tables des favoris
63 *
64 * Crée les tables SQL du plugin (spip_favoris)
65 *
66 * @param string $nom_meta_base_version
67 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
68 * @param string $version_cible
69 *     Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
70 */
71function mesfavoris_upgrade($nom_meta_base_version,$version_cible){
72        include_spip('inc/meta');
73        $current_version = "0.0.0";
74        if (   (!isset($GLOBALS['meta'][$nom_meta_base_version]) )
75                        || (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
76                if (version_compare($current_version,'1.0.0','<')){
77                        include_spip('base/create');
78                        include_spip('base/abstract_sql');
79                        include_spip('base/serial');
80                        creer_ou_upgrader_table("spip_favoris",$GLOBALS['tables_principales']['spip_favoris'],true);
81                       
82                        // recuperer l'ancienne base si possible (hum)
83                        $trouver_table = charger_fonction("trouver_table","base");
84                        $trouver_table(''); // vider le cache
85                        if ($desc = $trouver_table("spip_favtextes")){
86                                $res = sql_select("*","spip_favtextes");
87                                while ($row = sql_fetch($res)){
88                                        sql_insertq("spip_favoris", array('id_auteur'=>$row['id_auth'],'id_objet'=>$row['id_texte'],'objet'=>'article'));
89                                        sql_delete("spip_favtextes","id_favtxt=".$row['id_favtxt']);
90                                }
91                                sql_drop_table("spip_favtextes");
92                        }
93                        ecrire_meta($nom_meta_base_version,$current_version="1.0.0",'non');
94                }
95                if (version_compare($current_version,'1.1.0','<')){
96                        sql_alter("TABLE spip_favoris ADD INDEX objet (objet)");
97                        sql_alter("TABLE spip_favoris ADD INDEX id_objet (id_objet)");
98                        ecrire_meta($nom_meta_base_version,$current_version="1.1.0",'non');
99                }
100                if (version_compare($current_version,'1.2.0','<')){
101                        sql_alter("TABLE spip_favoris ADD COLUMN categorie VARCHAR(50) DEFAULT '' NOT NULL");
102                        sql_alter("TABLE spip_favoris ADD INDEX categorie (categorie)");
103                        ecrire_meta($nom_meta_base_version,$current_version="1.2.0",'non');
104                }
105        }
106}
107
108
109/**
110 * Désinstallation du plugin
111 *
112 * Supprime les tables SQL du plugin (spip_favoris)
113 *
114 * @param string $nom_meta_base_version
115 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
116 */
117function mesfavoris_vider_tables($nom_meta_base_version) {
118        include_spip('inc/meta');
119        include_spip('base/abstract_sql');
120        sql_drop_table("spip_favoris");
121        effacer_meta($nom_meta_base_version);
122}
123
124?>
Note: See TracBrowser for help on using the repository browser.