source: spip-zone/_plugins_/abonnements/trunk/base/abonnements.php @ 95075

Last change on this file since 95075 was 95075, checked in by tcharlss@…, 4 years ago

Suite de r94610 : compatibilité SPIP 3.1. Pour les abonnements, on déclare id_auteur comme un champ de jointure explicite dans declarer_tables_objets_sql, avec la clé join. Ça fait marcher à nouveau les boucles comme <BOUCLE_x(ABONNEMENTS auteurs)>#NOM</BOUCLE_x>. Du coup, on peut à nouveau trier les abonnements par auteur. up de z.

File size: 6.1 KB
Line 
1<?php
2/**
3 * Plugin Abonnements
4 * (c) 2012 Les Développements Durables
5 * Licence GNU/GPL v3
6 */
7
8if (!defined('_ECRIRE_INC_VERSION')) return;
9
10
11/**
12 * Déclaration des alias de tables et filtres automatiques de champs
13 */
14function abonnements_declarer_tables_interfaces($interfaces) {
15        $interfaces['table_des_tables']['abonnements_offres'] = 'abonnements_offres';
16        $interfaces['table_des_tables']['abonnements'] = 'abonnements';
17        $interfaces['table_des_tables']['abonnements_offres_notifications'] = 'abonnements_offres_notifications';
18
19        return $interfaces;
20}
21
22
23/**
24 * Déclaration des objets éditoriaux
25 */
26function abonnements_declarer_tables_objets_sql($tables) {
27        $tables['spip_abonnements_offres'] = array(
28                'type' => 'abonnements_offre',
29                'principale' => "oui", 
30                'table_objet_surnoms' => array('abonnementsoffre'), // table_objet('abonnement') => 'abonnements_offres'
31                'field'=> array(
32                        "id_abonnements_offre" => "bigint(21) NOT NULL",
33                        "titre"                => "text NOT NULL DEFAULT ''",
34                        "descriptif"           => "text NOT NULL DEFAULT ''",
35                        "duree"                => "int(11) NOT NULL DEFAULT 0",
36                        "periode"              => "varchar(25) NOT NULL DEFAULT ''",
37                        'prix'                 => 'float(10,2) not null default 0',
38                        "statut"               => "varchar(20)  DEFAULT '0' NOT NULL", 
39                        "maj"                  => "TIMESTAMP"
40                ),
41                'key' => array(
42                        "PRIMARY KEY"        => "id_abonnements_offre",
43                        "KEY statut"         => "statut", 
44                ),
45                'titre' => "titre AS titre, '' AS lang",
46                 #'date' => "",
47                'champs_editables'  => array('titre', 'descriptif', 'duree', 'periode', 'prix'),
48                'champs_versionnes' => array('titre', 'descriptif', 'duree', 'periode', 'prix'),
49                'rechercher_champs' => array("titre" => 10, "descriptif" => 5),
50                'tables_jointures'  => array('spip_abonnements_offres_liens'),
51                'statut_textes_instituer' => array(
52                        'prepa'    => 'texte_statut_en_cours_redaction',
53                        'publie'   => 'texte_statut_publie',
54                        'poubelle' => 'texte_statut_poubelle',
55                ),
56                'statut'=> array(
57                        array(
58                                'champ'     => 'statut',
59                                'publie'    => 'publie',
60                                'previsu'   => 'publie,prepa',
61                                'exception' => array('statut','tout')
62                        )
63                ),
64                'texte_modifier' => 'abonnementsoffre:icone_modifier_abonnementsoffre',
65                'texte_creer' => 'abonnementsoffre:icone_creer_abonnementsoffre',
66                'texte_creer_associer' => 'abonnementsoffre:texte_creer_associer_abonnementsoffre',
67                'texte_ajouter' => 'abonnementsoffre:texte_ajouter_abonnementsoffre',
68                'texte_objets' => 'abonnementsoffre:titre_abonnementsoffres',
69                'texte_objet' => 'abonnementsoffre:titre_abonnementsoffre',
70                'texte_logo_objet' => 'abonnementsoffre:titre_logo_abonnementsoffre',
71                'texte_langue_objet' => 'abonnementsoffre:titre_langue_abonnementsoffre',
72                'info_aucun_objet' => 'abonnementsoffre:info_aucun_abonnementsoffre',
73                'info_1_objet' => 'abonnementsoffre:info_1_abonnementsoffre',
74                'info_nb_objets' => 'abonnementsoffre:info_nb_abonnementsoffres',
75                'texte_changer_statut' => 'abonnementsoffre:texte_changer_statut_abonnementsoffre',
76        );
77
78        $tables['spip_abonnements'] = array(
79                'type' => 'abonnement',
80                'principale' => "oui",
81#               'url_voir' => false,
82#               'url_edit' => false,
83                'field'=> array(
84                        "id_abonnement"      => "bigint(21) NOT NULL",
85                        "id_abonnements_offre" => "bigint(21) NOT NULL DEFAULT 0",
86                        "id_auteur"          => "bigint(21) NOT NULL DEFAULT 0",
87                        "date_debut"         => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
88                        "date_echeance"      => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
89                        "date_fin"           => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
90                        "statut"             => "varchar(20)  DEFAULT '0' NOT NULL", 
91                        "maj"                => "TIMESTAMP"
92                ),
93                'key' => array(
94                        "PRIMARY KEY"        => "id_abonnement",
95                        "KEY statut"         => "statut",
96                        "KEY id_abonnements_offre" => "id_abonnements_offre",
97                        "KEY id_auteur" => "id_auteur",
98                ),
99                'titre' => "'' AS titre, '' AS lang",
100                'date' => "date_debut",
101                'champs_editables'  => array('id_abonnements_offre', 'id_auteur', 'date_debut', 'date_echeance', 'date_fin'),
102                'champs_versionnes' => array('id_abonnements_offre', 'id_auteur', 'date_debut', 'date_echeance', 'date_fin'),
103                'rechercher_champs' => array(),
104                'tables_jointures'  => array(),
105                'join'              => array('id_auteur' => 'id_auteur'),
106                'statut_textes_instituer' => array(
107                        'inactif' => 'abonnement:statut_inactif',
108                        'actif'    => 'abonnement:statut_actif',
109                        'poubelle' => 'texte_statut_poubelle',
110                ),
111                'statut_images' => array(
112                        'prepa' => 'puce-preparer-8.png',
113                        'inactif' => 'puce-refuser-8.png',
114                        'actif' => 'puce-publier-8.png',
115                        'poubelle' => 'puce-supprimer-8.png',
116                ),
117                'statut'=> array(
118                        array(
119                                'champ'     => 'statut',
120                                'publie'    => 'actif',
121                                'previsu'   => 'actif,inactif',
122                                'exception' => array('statut','tout')
123                        )
124                ),
125                'texte_changer_statut' => 'abonnement:texte_changer_statut_abonnement', 
126        );
127
128        return $tables;
129}
130
131/*
132 * Déclaration des tables principales non objet
133 */
134function abonnements_declarer_tables_principales($tables) {
135        $tables['spip_abonnements_offres_notifications'] = array(
136                'field' => array(
137                        'id_abonnements_offres_notification' => 'bigint(21) not null',
138                        'id_abonnements_offre'  => 'bigint(21) DEFAULT 0 NOT NULL',
139                        'duree'                                 => 'int(11) NOT NULL DEFAULT 0',
140                        'periode'                               => 'varchar(25) NOT NULL DEFAULT ""',
141                ),
142                'key' => array(
143                        'PRIMARY KEY'                   => 'id_abonnements_offres_notification',
144                        'KEY id_abonnements_offre' => 'id_abonnements_offre',
145                ),
146        );
147       
148        return $tables;
149}
150
151/**
152 * Déclaration des tables secondaires (liaisons)
153 */
154function abonnements_declarer_tables_auxiliaires($tables) {
155        $tables['spip_abonnements_offres_liens'] = array(
156                'field' => array(
157                        "id_abonnements_offre" => "bigint(21) DEFAULT '0' NOT NULL",
158                        "id_objet"             => "bigint(21) DEFAULT '0' NOT NULL",
159                        "objet"                => "VARCHAR(25) DEFAULT '' NOT NULL",
160                        "vu"                   => "VARCHAR(6) DEFAULT 'non' NOT NULL"
161                ),
162                'key' => array(
163                        "PRIMARY KEY"        => "id_abonnements_offre,id_objet,objet",
164                        "KEY id_abonnements_offre"  => "id_abonnements_offre"
165                )
166        );
167       
168        return $tables;
169}
170
171?>
Note: See TracBrowser for help on using the repository browser.