source: spip-zone/_plugins_/codes_langues/trunk/base/codelang_declarations.php @ 98925

Last change on this file since 98925 was 98925, checked in by eric@…, 5 years ago

On ajoute une table pour les codets des écritures (ISO 15924)

  • Property svn:eol-style set to native
File size: 9.2 KB
Line 
1<?php
2/**
3 * Ce fichier contient les modifications de la base de données requises
4 * par le plugin.
5 *
6 * @package SPIP\CODELANG\ADMINISTRATION
7 */
8if (!defined('_ECRIRE_INC_VERSION')) {
9        return;
10}
11
12/**
13 * Déclaration des nouvelles tables de la base de données propres au plugin.
14 *
15 * Le plugin déclare 5 nouvelles tables ISO-639 issues de 2 bases de données (SIL et Library of Congress
16 * uniquemet pour les familles de langues) :
17 *
18 * - `spip_iso639codes`, qui contient les codes ISO-639-3, 2 et 1,
19 * - `spip_iso639names`, qui contient les noms de langue,
20 * - `spip_iso639macros`, qui contient le mapping des macrolangues,
21 * - `spip_iso639retirements`, qui contient les langues retirées de la liste officielle,
22 * - `spip_iso639families`, qui contient les familles et groupes de langues ISO-639-5,
23 *
24 * une table `spip_iso15924scripts` qui contient les codets d'écriture à 4 lettres et leur définition en
25 * français et en anglais.
26 *
27 * et une table `spip_codes_langues` qui contient les codes de langues de certains services
28 * comme spip et leur correspondance avec les codes ISO-639.
29 *
30 * @pipeline declarer_tables_principales
31 *
32 * @param array $tables_principales
33 *        Tableau global décrivant la structure des tables de la base de données
34 *
35 * @return array
36 *        Tableau fourni en entrée et mis à jour avec les nouvelles déclarations
37 */
38function codelang_declarer_tables_principales($tables_principales) {
39
40        // -------------------------------------------------
41        // Table principale des codes ISO : spip_iso639codes
42        $table_codes = array(
43                'code_639_3'  => "char(3) DEFAULT '' NOT NULL",      // The three-letter 639-3 identifier
44                'code_639_2b' => 'char(3)',                          // Equivalent 639-2 identifier of the bibliographic applications code set, if there is one
45                'code_639_2t' => 'char(3)',                          // Equivalent 639-2 identifier of the terminology applications code set, if there is one
46                'code_639_1'  => 'char(2)',                          // Equivalent 639-1 identifier, if there is one
47                'scope'       => "char(1) DEFAULT '' NOT NULL",      // I(ndividual), M(acrolanguage), S(pecial)
48                'type'        => "char(1) DEFAULT '' NOT NULL",      // A(ncient), C(onstructed), E(xtinct), H(istorical), L(iving), S(pecial)
49                'ref_name'    => "varchar(150) DEFAULT '' NOT NULL", // Reference language name
50                'comment'     => 'varchar(150)',                     // Comment relating to one or more of the columns
51                'maj'         => 'timestamp'
52        );
53
54        $table_codes_key = array(
55                'PRIMARY KEY' => 'code_639_3'
56        );
57
58        $tables_principales['spip_iso639codes'] =
59                array('field' => &$table_codes, 'key' => &$table_codes_key);
60
61        // --------------------------------------------
62        // Tables des noms de langue : spip_iso639names
63        $table_names = array(
64                'code_639_3'    => "char(3) DEFAULT '' NOT NULL",     // The three-letter 639-3 identifier
65                'print_name'    => "varchar(75) DEFAULT '' NOT NULL", // One of the names associated with this identifier
66                'inverted_name' => "varchar(75) DEFAULT '' NOT NULL", // The inverted form of this Print_Name form
67                'maj'           => 'timestamp'
68        );
69
70        $table_names_key = array(
71                'PRIMARY KEY' => 'code_639_3, print_name'
72        );
73
74        $tables_principales['spip_iso639names'] =
75                array('field' => &$table_names, 'key' => &$table_names_key);
76
77        // -------------------------------------------
78        // Tables des macrolangues : spip_iso639macros
79        $table_macros = array(
80                'macro_639_3' => "char(3) DEFAULT '' NOT NULL",       // The identifier for a macrolanguage
81                'code_639_3'  => "char(3) DEFAULT '' NOT NULL",       // The identifier for an individual language that is a member of the macrolanguage
82                'status'      => "char(1) DEFAULT '' NOT NULL",       // A (active) or R (retired) indicating the status of the individual code element
83                'maj'         => 'timestamp'
84        );
85
86        $table_macros_key = array(
87                'PRIMARY KEY' => 'macro_639_3, code_639_3'
88        );
89
90        $tables_principales['spip_iso639macros'] =
91                array('field' => &$table_macros, 'key' => &$table_macros_key);
92
93        // ------------------------------------------------------
94        // Tables des langues supprimées : spip_iso639retirements
95        $table_rets = array(
96                'code_639_3'     => "char(3) DEFAULT '' NOT NULL",      // The three-letter 639-3 identifier
97                'ref_name'       => "varchar(150) DEFAULT '' NOT NULL", // Reference language name
98                'ret_reason'     => "char(1) DEFAULT '' NOT NULL",      // code for retirement: C (change), D (duplicate), N (non-existent), S (split), M (merge)
99                'change_to'      => 'char(3)',                          // in the cases of C, D, and M, the identifier to which all instances of this Id should be changed
100                'ret_remedy'     => 'varchar(300)',                     // The instructions for updating an instance of the retired (split) identifier
101                'effective_date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // The date the retirement became effective
102                'maj'            => 'timestamp'
103        );
104
105        $table_rets_key = array(
106                'PRIMARY KEY' => 'code_639_3'
107        );
108
109        $tables_principales['spip_iso639retirements'] =
110                array('field' => &$table_rets, 'key' => &$table_rets_key);
111
112        // ---------------------------------------------------------------------------
113        // Tables des familles et groupes de langues (ISO-639-5) : spip_iso639families
114        $table_families = array(
115                'code_639_5'     => "char(3) DEFAULT '' NOT NULL",      // The three-letter 639-5 identifier
116                'uri'                => "varchar(150) DEFAULT '' NOT NULL", // Description page
117                'label_en'       => "text DEFAULT '' NOT NULL",         // English label for the family
118                'label_fr'       => "text DEFAULT '' NOT NULL",         // French label for the family
119                'code_639_1'     => 'char(2)',                          // Equivalent 639-1 identifier, if there is one
120                'scope'          => "char(1) DEFAULT '' NOT NULL",      // C(ollective) always
121                'code_set'       => "varchar(32) DEFAULT '' NOT NULL",  // Any combinaison of 639-5 and 639-2 separed by comma
122                'hierarchy'      => "varchar(32) DEFAULT '' NOT NULL",  // List of 639-5 identifiers separated by comma
123                'parent'         => "char(3) DEFAULT '' NOT NULL",      // The parent three-letter 639-5 identifier
124                'maj'            => 'timestamp'
125        );
126
127        $table_families_key = array(
128                'PRIMARY KEY' => 'code_639_5'
129        );
130
131        $tables_principales['spip_iso639families'] =
132                array('field' => &$table_families, 'key' => &$table_families_key);
133
134        // -------------------------------------------------
135        // Table principale des codes ISO : spip_iso15924scripts
136        $table_scripts = array(
137                'code_15924'  => "char(4) DEFAULT '' NOT NULL",                  // The four-letter identifier
138                'label_en'    => "varchar(255) DEFAULT '' NOT NULL",             // English script name
139                'label_fr'    => "varchar(255) DEFAULT '' NOT NULL",             // french script name
140                'code_num'    => "char(3) DEFAULT '' NOT NULL",                  // Numeric identifier
141                'alias_en'    => "varchar(32) DEFAULT '' NOT NULL",              // Unicode alias showing how ISO 15924 code relate to script names defined in Unicode.
142                'date_ref' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // The reference date to follow changes
143                'maj'         => 'timestamp'
144        );
145
146        $table_scripts_key = array(
147                'PRIMARY KEY' => 'code_15924'
148        );
149
150        $tables_principales['spip_iso15924scripts'] =
151                array('field' => &$table_scripts, 'key' => &$table_scripts_key);
152
153        // ------------------------------------------------------------
154        // Tables des codes de langues des services web, spip y compris
155        $table_langues = array(
156                'service'           => "varchar(32) DEFAULT '' NOT NULL", // Nom du service, par exemple spip ou wunderground
157                'code_langue'   => "varchar(16) DEFAULT '' NOT NULL", // code de langue pour le service concerné
158                'code_639_3'    => "char(3) DEFAULT '' NOT NULL",     // The corresponding three-letter 639-3 identifier
159                'nom_langue'    => "varchar(75) DEFAULT '' NOT NULL", // Nom de la langue tel que défini par le service
160                'descriptif'    => "text DEFAULT '' NOT NULL" ,       // The inverted form of this Print_Name form
161                'maj'           => 'timestamp'
162        );
163
164        $table_langues_key = array(
165                'PRIMARY KEY' => 'service, code_langue'
166        );
167
168        $tables_principales['spip_codes_langues'] =
169                array('field' => &$table_langues, 'key' => &$table_langues_key);
170
171        return $tables_principales;
172}
173
174
175/**
176 * Déclaration des informations tierces (alias, traitements, jointures, etc)
177 * sur les tables de la base de données modifiées ou ajoutées par le plugin.
178 *
179 * Le plugin se contente de déclarer les alias des tables qu'il ajoute.
180 *
181 * @pipeline declarer_tables_interfaces
182 *
183 * @param array $interfaces
184 *        Tableau global des informations tierces sur les tables de la base de données
185 *
186 * @return array
187 *        Tableau fourni en entrée et mis à jour avec les nouvelles informations
188 */
189function codelang_declarer_tables_interfaces($interfaces) {
190        // Les tables
191        $interfaces['table_des_tables']['iso639codes'] = 'iso639codes';
192        $interfaces['table_des_tables']['iso639names'] = 'iso639names';
193        $interfaces['table_des_tables']['iso639macros'] = 'iso639macros';
194        $interfaces['table_des_tables']['iso639retirements'] = 'iso639retirements';
195        $interfaces['table_des_tables']['iso639families'] = 'iso639families';
196        $interfaces['table_des_tables']['iso15924scripts'] = 'iso15924scripts';
197        $interfaces['table_des_tables']['codes_langues'] = 'codes_langues';
198
199        // Les traitements
200
201        return $interfaces;
202}
Note: See TracBrowser for help on using the repository browser.