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

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

Gestion des statuts : on garde le bouton voir en ligne pour le statut ‘refuse’.

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,refuse',
111                                'previsu'   => '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.