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

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

Ajout d'un parametre pour les favoris :
on peut desormais les classer par categorie.

L'objectif de ce plugin est de garder l'interface simple de la configuration des favoris.
La gestion des categories est volontairement laissee au soin d'autres plugins qui feront du label "categorie" ce qui sera le plus adapte

Le plugin est repasse en etat de test sous la nouvelle version, jusqu'a ce qu'il sera stabilise et valide
(en fonction des retours des utilisateurs)

File size: 3.5 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
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11/**
12 * Déclaration de l'index de $tables_principales qui sera utilisé dans les 'spip_'
13 *
14 * @param  array $interface Array contenant les infos des tables visibles par recherche sur 'spip_bidule'
15 * @return array            Cet Array de description modifié
16 */
17function mesfavoris_declarer_tables_interfaces($interface){
18        $interface['table_des_tables']['favoris']='favoris';
19        return $interface;
20}
21
22/**
23 * Declaration des tables principales
24 *
25 * @param array $tables_principales Un array de description des tables
26 * @return array $tables_principales L'Array de description complété
27 */
28function mesfavoris_declarer_tables_principales($tables_principales){
29        $spip_favoris = array(
30                "id_favori"     => "bigint(21) NOT NULL",
31                "id_auteur"     => "bigint DEFAULT '0' NOT NULL",
32                "id_objet"      => "bigint(21) DEFAULT '0' NOT NULL",
33                "objet" => "VARCHAR (25) DEFAULT '' NOT NULL",
34                "categorie"     => "VARCHAR (25) DEFAULT '' NOT NULL",
35                "maj"   => "TIMESTAMP"
36        );
37
38        $spip_favoris_key = array(
39                "PRIMARY KEY"           => "id_favori",
40                "KEY auteur_objet"      => "id_auteur,id_objet,objet",
41                "KEY id_auteur" => "id_auteur",
42                "KEY id_objet" => "id_objet",
43                "KEY objet" => "objet",
44                "KEY categorie" => "categorie",
45        );
46
47        $tables_principales['spip_favoris'] =
48                array('field' => &$spip_favoris, 'key' => &$spip_favoris_key);
49
50        return $tables_principales;
51}
52
53/**
54 * Mise à jour des tables
55 *
56 * @param string $nom_meta_base_version
57 * @param string $version_cible
58 */
59function mesfavoris_upgrade($nom_meta_base_version,$version_cible){
60        include_spip('inc/meta');
61        $current_version = "0.0.0";
62        if (   (!isset($GLOBALS['meta'][$nom_meta_base_version]) )
63                        || (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
64                if (version_compare($current_version,'1.0.0','<')){
65                        include_spip('base/create');
66                        include_spip('base/abstract_sql');
67                        include_spip('base/serial');
68                        creer_ou_upgrader_table("spip_favoris",$GLOBALS['tables_principales']['spip_favoris'],true);
69                       
70                        // recuperer l'ancienne base si possible (hum)
71                        $trouver_table = charger_fonction("trouver_table","base");
72                        $trouver_table(''); // vider le cache
73                        if ($desc = $trouver_table("spip_favtextes")){
74                                $res = sql_select("*","spip_favtextes");
75                                while ($row = sql_fetch($res)){
76                                        sql_insertq("spip_favoris", array('id_auteur'=>$row['id_auth'],'id_objet'=>$row['id_texte'],'objet'=>'article'));
77                                        sql_delete("spip_favtextes","id_favtxt=".$row['id_favtxt']);
78                                }
79                                sql_drop_table("spip_favtextes");
80                        }
81                        ecrire_meta($nom_meta_base_version,$current_version="1.0.0",'non');
82                }
83                if (version_compare($current_version,'1.1.0','<')){
84                        sql_alter("TABLE spip_favoris ADD INDEX objet (objet)");
85                        sql_alter("TABLE spip_favoris ADD INDEX id_objet (id_objet)");
86                        ecrire_meta($nom_meta_base_version,$current_version="1.1.0",'non');
87                }
88                if (version_compare($current_version,'1.2.0','<')){
89                        sql_alter("TABLE spip_favoris ADD COLUMN categorie VARCHAR(50) DEFAULT '' NOT NULL");
90                        sql_alter("TABLE spip_favoris ADD INDEX categorie (categorie)");
91                        ecrire_meta($nom_meta_base_version,$current_version="1.2.0",'non');
92                }
93        }
94}
95
96
97/**
98 * Desinstallation du plugin
99 *
100 * @param string $nom_meta_base_version
101 */
102function mesfavoris_vider_tables($nom_meta_base_version) {
103        include_spip('inc/meta');
104        include_spip('base/abstract_sql');
105        sql_drop_table("spip_favoris");
106        effacer_meta($nom_meta_base_version);
107}
108
109?>
Note: See TracBrowser for help on using the repository browser.