source: spip-zone/_plugins_/bouquinerie/trunk/base/bouq.php @ 108355

Last change on this file since 108355 was 108355, checked in by peetdu@…, 3 years ago

Refaire un update du schéma sur largeur, hauteur et prix, car la bouq/base.php n’avait pas suivi (oubli)
Profiter de l’occaz pour passer le prix en decimal(20,6) pour cohérence avec les autres plugins affichant des prix (commandes, produits, etc.)
Rendre le prix mon verbeux dans l’affichage

File size: 7.9 KB
Line 
1<?php
2/**
3 * Déclarations relatives à la base de données
4 *
5 * @plugin     Bouquinerie
6 * @copyright  2017
7 * @author     Peetdu
8 * @licence    GNU/GPL
9 * @package    SPIP\Bouquinerie\Pipelines
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16
17/**
18 * Déclaration des alias de tables et filtres automatiques de champs
19 *
20 * @pipeline declarer_tables_interfaces
21 * @param array $interfaces
22 *     Déclarations d'interface pour le compilateur
23 * @return array
24 *     Déclarations d'interface pour le compilateur
25 */
26function bouq_declarer_tables_interfaces($interfaces) {
27
28        $interfaces['table_des_tables']['livres'] = 'livres';
29        $interfaces['table_des_tables']['livres_auteurs'] = 'livres_auteurs';
30
31        /* Livres */
32        $interfaces['table_des_traitements']['TRADUCTION'][] = _TRAITEMENT_RACCOURCIS;
33        $interfaces['table_des_traitements']['SOMMAIRE'][] = _TRAITEMENT_RACCOURCIS;
34        $interfaces['table_des_traitements']['EXTRAIT'][] = _TRAITEMENT_RACCOURCIS;
35
36        /* Auteurs de livre */
37        $interfaces['table_des_traitements']['BIOGRAPHIE'][] = _TRAITEMENT_RACCOURCIS;
38
39        return $interfaces;
40}
41
42
43/**
44 * Déclaration des objets éditoriaux
45 *
46 * @pipeline declarer_tables_objets_sql
47 * @param array $tables
48 *     Description des tables
49 * @return array
50 *     Description complétée des tables
51 */
52function bouq_declarer_tables_objets_sql($tables) {
53
54        $tables['spip_livres'] = array(
55                'type' => 'livre',
56                'principale' => 'oui',
57                'field'=> array(
58                        'id_livre'           => 'bigint(21) NOT NULL',
59                        'id_rubrique'        => 'bigint(21) NOT NULL DEFAULT 0',
60                        'id_secteur'         => 'bigint(21) NOT NULL DEFAULT 0',
61                        'titre'              => 'text NOT NULL DEFAULT ""',
62                        'soustitre'          => 'text NOT NULL DEFAULT ""',
63                        'editeur'                => 'text NOT NULL DEFAULT ""',
64                        'collection'         => 'text NOT NULL DEFAULT ""',
65                        'volume'             => 'text NOT NULL DEFAULT ""',
66                        'edition'            => 'text NOT NULL DEFAULT ""',
67                        'traduction'         => 'text NOT NULL DEFAULT ""',
68                        'texte'              => 'text NOT NULL DEFAULT ""',
69                        'sommaire'           => 'text NOT NULL DEFAULT ""',
70                        'extrait'            => 'text NOT NULL DEFAULT ""',
71                        'infos_sup'          => 'text NOT NULL DEFAULT ""',
72                        'isbn'               => 'varchar(13) NOT NULL DEFAULT ""',
73                        'pages'              => 'smallint(6)',
74                        'reliure'            => 'varchar(100) NOT NULL DEFAULT ""',
75                        'largeur'            => 'varchar(10) NOT NULL DEFAULT ""',
76                        'hauteur'            => 'varchar(10) NOT NULL DEFAULT ""',
77                        'poids'              => 'int(6) NOT NULL DEFAULT 0',
78                        'prix'               => 'decimal(20,4) NOT NULL DEFAULT 0',
79                        'date_parution'      => 'datetime NOT NULL DEFAULT "0000-00-00 00:00:00"',
80                        'date_nouvelle_edition' => 'datetime NOT NULL DEFAULT "0000-00-00 00:00:00"',
81                        'statut'             => 'varchar(20)  DEFAULT "0" NOT NULL',
82                        'lang'               => 'varchar(10) NOT NULL DEFAULT ""',
83                        'langue_choisie'     => 'varchar(3) DEFAULT "non"',
84                        'id_trad'            => 'bigint(21) NOT NULL DEFAULT 0',
85                        'maj'                => 'TIMESTAMP'
86                ),
87                'key' => array(
88                        'PRIMARY KEY'        => 'id_livre',
89                        'KEY id_rubrique'    => 'id_rubrique',
90                        'KEY id_secteur'     => 'id_secteur',
91                        'KEY lang'           => 'lang',
92                        'KEY id_trad'        => 'id_trad',
93                        'KEY statut'         => 'statut',
94                ),
95                'titre' => 'titre AS titre, lang AS lang',
96                'date' => 'date_parution',
97                'champs_editables'  => array('titre', 'soustitre', 'editeur', 'collection', 'volume', 'edition', 'traduction', 'texte', 'sommaire', 'extrait', 'infos_sup', 'isbn', 'pages', 'reliure', 'largeur', 'hauteur', 'poids', 'prix'),
98                'champs_versionnes' => array('titre', 'soustitre', 'editeur', 'collection', 'volume', 'edition', 'traduction', 'texte', 'sommaire', 'extrait', 'infos_sup', 'isbn', 'pages', 'reliure', 'largeur', 'hauteur', 'poids', 'prix'),
99                'rechercher_champs' => array("titre" => 10, "soustitre" => 8, "isbn" => 5),
100                'tables_jointures'  => array(),
101                'statut_textes_instituer' => array(
102                        'prepa'    => 'texte_statut_en_cours_redaction',
103                        'publie'   => 'livre:texte_statut_paru',
104                        'refuse'   => 'livre:texte_statut_epuise',
105                        'poubelle' => 'texte_statut_poubelle',
106                ),
107                'statut'=> array(
108                        array(
109                                'champ'     => 'statut',
110                                'publie'    => 'publie',
111                                'previsu'   => 'publie,prepa',
112                                'post_date' => 'date',
113                                'exception' => array('statut','tout')
114                        )
115                ),
116                'texte_changer_statut' => 'livre:texte_changer_statut_livre',
117                'join' => array('id_livre'=>'id_livre'),
118                'roles_colonne' => 'role',
119                'roles_titres' => array(
120                        'grand_format'=>'livre:role_grand_format',
121                        'poche'=>'livre:role_poche',
122                ),
123                'roles_objets' => array(
124                        'livres' => array(
125                                'choix' => array('grand_format', 'poche'),
126                                'defaut' => 'grand_format'),
127                ),
128
129        );
130
131        $tables['spip_livres_auteurs'] = array(
132                'type' => 'livres_auteur',
133                'principale' => 'oui',
134                'table_objet_surnoms' => array('livresauteur'),
135                'field'=> array(
136                        'id_livres_auteur'   => 'bigint(21) NOT NULL',
137                        'nom'                => 'text NOT NULL DEFAULT ""',
138                        'prenom'             => 'text NOT NULL DEFAULT ""',
139                        'biographie'         => 'text NOT NULL DEFAULT ""',
140                        'lien_titre'         => 'text NOT NULL DEFAULT ""',
141                        'lien_url'           => 'text NOT NULL DEFAULT ""',
142                        'statut'             => 'varchar(20)  DEFAULT "0" NOT NULL',
143                        'maj'                => 'TIMESTAMP'
144                ),
145                'key' => array(
146                        'PRIMARY KEY'        => 'id_livres_auteur',
147                        'KEY statut'         => 'statut',
148                ),
149                'titre' => "CONCAT(prenom,' ',nom) AS titre, '' AS lang",
150                 #'date' => '',
151                'champs_editables'  => array('nom', 'prenom', 'biographie', 'lien_titre', 'lien_url'),
152                'champs_versionnes' => array('nom', 'prenom', 'biographie', 'lien_titre', 'lien_url'),
153                'rechercher_champs' => array("nom" => 8, "prenom" => 6, "biographie" => 2),
154                'tables_jointures'  => array('livres_auteurs_liens'),
155                'statut_textes_instituer' => array(
156                        'prepa'    => 'texte_statut_en_cours_redaction',
157                        'publie'   => 'texte_statut_publie',
158                        'poubelle' => 'texte_statut_poubelle',
159                ),
160                'statut'=> array(
161                        array(
162                                'champ'     => 'statut',
163                                'publie'    => 'publie',
164                                'previsu'   => 'publie,prepa',
165                                'post_date' => 'date',
166                                'exception' => array('statut','tout')
167                        )
168                ),
169                'texte_changer_statut' => 'livres_auteur:texte_changer_statut_livres_auteur',
170
171                'roles_colonne' => 'role',
172                'roles_titres' => array(
173                        'ecrivain'=>'livres_auteur:role_ecrivain',
174                        'traducteur'=>'livres_auteur:role_traducteur',
175                        'illustrateur'=>'livres_auteur:role_illustrateur',
176                        'prefacier'=>'livres_auteur:role_prefacier',
177                        'postfacier'=>'livres_auteur:role_postfacier',
178                ),
179                'roles_objets' => array(
180                        'livres' => array(
181                                'choix' => array('ecrivain', 'traducteur', 'illustrateur', 'prefacier', 'postfacier'),
182                                'defaut' => 'ecrivain'),
183                ),
184
185        );
186
187        return $tables;
188}
189
190
191/**
192 * Déclaration des tables secondaires (liaisons)
193 *
194 * @pipeline declarer_tables_auxiliaires
195 * @param array $tables
196 *     Description des tables
197 * @return array
198 *     Description complétée des tables
199 */
200function bouq_declarer_tables_auxiliaires($tables) {
201
202        $tables['spip_livres_liens'] = array(
203                'field' => array(
204                        'id_livre'           => 'bigint(21) DEFAULT "0" NOT NULL',
205                        'id_objet'           => 'bigint(21) DEFAULT "0" NOT NULL',
206                        'objet'              => 'VARCHAR(25) DEFAULT "" NOT NULL',
207                        'role'               => 'VARCHAR(25) DEFAULT ""',
208                        'vu'                 => 'VARCHAR(6) DEFAULT "non" NOT NULL',
209                ),
210                'key' => array(
211                        'PRIMARY KEY'        => 'id_livre,id_objet,objet,role',
212                )
213        );
214        $tables['spip_livres_auteurs_liens'] = array(
215                'field' => array(
216                        'id_livres_auteur'   => 'bigint(21) DEFAULT "0" NOT NULL',
217                        'id_objet'           => 'bigint(21) DEFAULT "0" NOT NULL',
218                        'objet'              => 'VARCHAR(25) DEFAULT "" NOT NULL',
219                        'role'               => 'VARCHAR(25) DEFAULT ""',
220                        'vu'                 => 'VARCHAR(6) DEFAULT "non" NOT NULL',
221                ),
222                'key' => array(
223                        'PRIMARY KEY'        => 'id_livres_auteur,id_objet,objet,role',
224                )
225        );
226
227        return $tables;
228}
Note: See TracBrowser for help on using the repository browser.