9feb11d67a98a75b6eb01d87c02c5acc95988b9e
[lhc/web/www.git] / www / plugins-dist / svp / base / svp_declarer.php
1 <?php
2 /**
3 * Déclarations relatives à la base de données
4 *
5 * @plugin SVP pour SPIP
6 * @license GPL
7 * @package SPIP\SVP\Pipelines
8 **/
9
10 /**
11 * Déclarer les objets éditoriaux de SVP
12 *
13 * - Dépot : table spip_depots
14 * - Plugin : table spip_plugins
15 * - Paquet : table spip_paquets
16 *
17 * @pipeline declarer_tables_objets_sql
18 * @param array $tables
19 * Description des tables
20 * @return array
21 * Description complétée des tables
22 */
23 function svp_declarer_tables_objets_sql($tables) {
24 include_spip('inc/config');
25
26 // Table des depots
27 $tables['spip_depots'] = array(
28 // Base de donnees
29 'table_objet' => 'depots',
30 'type' => 'depot',
31 'field' => array(
32 "id_depot" => "bigint(21) NOT NULL",
33 "titre" => "text DEFAULT '' NOT NULL",
34 "descriptif" => "text DEFAULT '' NOT NULL",
35 "type" => "varchar(10) DEFAULT '' NOT NULL",
36 "url_serveur" => "varchar(255) DEFAULT '' NOT NULL",
37 // url du serveur svn ou git
38 "url_brouteur" => "varchar(255) DEFAULT '' NOT NULL",
39 // url de l'interface de gestion du repository (trac, redmine...)
40 "url_archives" => "varchar(255) DEFAULT '' NOT NULL",
41 // url de base des zips
42 "url_commits" => "varchar(255) DEFAULT '' NOT NULL",
43 // url du flux rss des commits du serveur svn ou git
44 "xml_paquets" => "varchar(255) DEFAULT '' NOT NULL",
45 // chemin complet du fichier xml du depot
46 "sha_paquets" => "varchar(40) DEFAULT '' NOT NULL",
47 "nbr_paquets" => "integer DEFAULT 0 NOT NULL",
48 "nbr_plugins" => "integer DEFAULT 0 NOT NULL",
49 "nbr_autres" => "integer DEFAULT 0 NOT NULL",
50 // autres contributions, non plugin
51 "maj" => "timestamp"
52 ),
53 'key' => array(
54 "PRIMARY KEY" => "id_depot"
55 ),
56 'tables_jointures' => array('id_plugin' => 'depots_plugins'),
57 'principale' => 'oui',
58
59 // Titre, date et gestion du statut
60 'titre' => "titre, '' AS lang",
61
62 // Edition, affichage et recherche
63 'page' => 'depot',
64 'url_voir' => 'depot',
65 'url_edit' => 'depot_edit',
66 'editable' => lire_config('svp/depot_editable', 'non'),
67 'champs_editables' => array('titre', 'descriptif'),
68 'icone_objet' => 'depot',
69
70 // Textes standard
71 'texte_retour' => 'icone_retour',
72 'texte_modifier' => 'svp:bouton_modifier_depot',
73 'texte_creer' => '',
74 'texte_creer_associer' => '',
75 'texte_signale_edition' => '',
76 'texte_objet' => 'svp:titre_depot',
77 'texte_objets' => 'svp:titre_depots',
78 'info_aucun_objet' => 'svp:info_aucun_depot',
79 'info_1_objet' => 'svp:info_1_depot',
80 'info_nb_objets' => 'svp:info_nb_depots',
81 'texte_logo_objet' => 'svp:titre_logo_depot',
82 );
83
84 // Table des plugins
85 $tables['spip_plugins'] = array(
86 // Base de donnees
87 'table_objet' => 'plugins',
88 'type' => 'plugin',
89 'field' => array(
90 "id_plugin" => "bigint(21) NOT NULL",
91 "prefixe" => "varchar(30) DEFAULT '' NOT NULL",
92 "nom" => "text DEFAULT '' NOT NULL",
93 "slogan" => "text DEFAULT '' NOT NULL",
94 "categorie" => "varchar(100) DEFAULT '' NOT NULL",
95 "tags" => "text DEFAULT '' NOT NULL",
96 "vmax" => "varchar(24) DEFAULT '' NOT NULL", // version la plus elevee des paquets du plugin
97 "date_crea" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // la plus ancienne des paquets du plugin
98 "date_modif" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // la plus recente des paquets du plugin
99 "compatibilite_spip" => "varchar(24) DEFAULT '' NOT NULL", // union des intervalles des paquets du plugin
100 "branches_spip" => "varchar(255) DEFAULT '' NOT NULL"
101 ), // union des branches spip supportees par les paquets du plugin
102 'key' => array(
103 "PRIMARY KEY" => "id_plugin",
104 "KEY prefixe" => "prefixe"
105 ),
106 'tables_jointures' => array('id_depot' => 'depots_plugins'),
107 'principale' => 'oui',
108
109 // Titre, date et gestion du statut
110 'titre' => "prefixe AS titre, '' AS lang",
111
112 // Edition, affichage et recherche
113 'page' => 'plugin',
114 'url_voir' => 'plugin',
115 'editable' => 'non',
116 'champs_editables' => array(),
117 'rechercher_champs' => array('prefixe' => 8, 'nom' => 8, 'slogan' => 4),
118 'rechercher_jointures' => array('paquet' => array('auteur' => 8, 'description' => 2)),
119 'icone_objet' => 'plugin',
120
121 // Textes standard
122 'texte_retour' => 'icone_retour',
123 'texte_modifier' => '',
124 'texte_creer' => '',
125 'texte_creer_associer' => '',
126 'texte_signale_edition' => '',
127 'texte_objet' => 'svp:titre_plugin',
128 'texte_objets' => 'svp:titre_plugins',
129 'info_aucun_objet' => 'svp:info_aucun_plugin',
130 'info_1_objet' => 'svp:info_1_plugin',
131 'info_nb_objets' => 'svp:info_nb_plugins',
132 'texte_logo_objet' => 'svp:titre_logo_plugin',
133 );
134
135 $tables['spip_paquets'] = array(
136 // Base de donnees
137 'table_objet' => 'paquets',
138 'type' => 'paquet',
139 'field' => array(
140 "id_paquet" => "bigint(21) NOT NULL",
141 "id_plugin" => "bigint(21) NOT NULL",
142 "prefixe" => "varchar(30) DEFAULT '' NOT NULL",
143 "logo" => "varchar(255) DEFAULT '' NOT NULL",
144 // chemin du logo depuis la racine du plugin
145 "version" => "varchar(24) DEFAULT '' NOT NULL",
146 "version_base" => "varchar(24) DEFAULT '' NOT NULL",
147 "compatibilite_spip" => "varchar(24) DEFAULT '' NOT NULL",
148 "branches_spip" => "varchar(255) DEFAULT '' NOT NULL",
149 // branches spip supportees (cf meta)
150 "description" => "text DEFAULT '' NOT NULL",
151 "auteur" => "text DEFAULT '' NOT NULL",
152 "credit" => "text DEFAULT '' NOT NULL",
153 "licence" => "text DEFAULT '' NOT NULL",
154 "copyright" => "text DEFAULT '' NOT NULL",
155 "lien_doc" => "text DEFAULT '' NOT NULL",
156 // lien vers la documentation
157 "lien_demo" => "text DEFAULT '' NOT NULL",
158 // lien vers le site de demo
159 "lien_dev" => "text DEFAULT '' NOT NULL",
160 // lien vers le site de dev
161 "etat" => "varchar(16) DEFAULT '' NOT NULL",
162 "etatnum" => "int(1) DEFAULT 0 NOT NULL",
163 // 0 aucune indication - 1 exp - 2 dev - 3 test - 4 stable
164 "dependances" => "text DEFAULT '' NOT NULL",
165 "procure" => "text DEFAULT '' NOT NULL",
166 "date_crea" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
167 "date_modif" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
168 "id_depot" => "bigint(21) DEFAULT 0 NOT NULL",
169 // 0 pour un paquet local
170 "nom_archive" => "VARCHAR(255) DEFAULT '' NOT NULL",
171 // nom du zip du paquet, depuis l'adresse de la zone
172 "nbo_archive" => "integer DEFAULT 0 NOT NULL",
173 // taille de l'archive en octets
174 "maj_archive" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
175 // date de mise a jour de l'archive
176 "src_archive" => "VARCHAR(255) DEFAULT '' NOT NULL",
177 // source de l'archive sur le depot
178 "traductions" => "text DEFAULT '' NOT NULL",
179 // tableau serialise par module des langues traduites et de leurs traducteurs
180 "actif" => "varchar(3) DEFAULT 'non' NOT NULL",
181 // est actif ? oui / non
182 "installe" => "varchar(3) DEFAULT 'non' NOT NULL",
183 // est desinstallable ? oui / non
184 "recent" => "int(2) DEFAULT 0 NOT NULL",
185 // a ete utilise recemment ? > 0 : oui
186 "maj_version" => "VARCHAR(255) DEFAULT '' NOT NULL",
187 // version superieure existante (mise a jour possible)
188 "superieur" => "varchar(3) DEFAULT 'non' NOT NULL",
189 // superieur : version plus recente disponible (distant) d'un plugin (actif?) existant
190 "obsolete" => "varchar(3) DEFAULT 'non' NOT NULL",
191 // obsolete : version plus ancienne (locale) disponible d'un plugin local existant
192 "attente" => "varchar(3) DEFAULT 'non' NOT NULL",
193 // attente : plugin semi actif (il etait actif, mais il lui manque maintenant une dependance : il reste coche actif jusqu'a resolution ou desactivation manuelle)
194 "constante" => "VARCHAR(30) DEFAULT '' NOT NULL",
195 // nom de la constante _DIR_(PLUGINS|EXTENSIONS|PLUGINS_SUPP)
196 "signature" => "VARCHAR(32) DEFAULT '' NOT NULL"
197 ), // hash MD5 d'un paquet
198 'key' => array(
199 "PRIMARY KEY" => "id_paquet",
200 "KEY id_plugin" => "id_plugin"
201 ),
202 'join' => array(
203 "id_paquet" => "id_paquet",
204 "id_plugin" => "id_plugin"
205 ),
206 'principale' => 'oui',
207
208 // Titre, date et gestion du statut
209 'titre' => "nom_archive AS titre, '' AS lang",
210
211 // Edition, affichage et recherche
212 'page' => 'paquet',
213 'url_voir' => '',
214 'editable' => 'non',
215 'champs_editables' => array(),
216 'rechercher_champs' => array(),
217 'rechercher_jointures' => array(),
218 'icone_objet' => 'paquet',
219
220 // Textes standard
221 'texte_retour' => '',
222 'texte_modifier' => '',
223 'texte_creer' => '',
224 'texte_creer_associer' => '',
225 'texte_signale_edition' => '',
226 'texte_objet' => 'svp:titre_paquet',
227 'texte_objets' => 'svp:titre_paquets',
228 'info_aucun_objet' => 'svp:info_aucun_paquet',
229 'info_1_objet' => 'svp:info_1_paquet',
230 'info_nb_objets' => 'svp:info_nb_paquets',
231 'texte_logo_objet' => '',
232 );
233
234 return $tables;
235 }
236
237
238 /**
239 * Déclarer les tables de liaisons de SVP
240 *
241 * Déclare la table spip_depots_plugins
242 *
243 * @pipeline declarer_tables_auxiliaires
244 * @param array $tables_auxiliaires
245 * Description des tables auxiliaires
246 * @return array
247 * Description complétée des tables auxiliaires
248 */
249 function svp_declarer_tables_auxiliaires($tables_auxiliaires) {
250 // Tables de liens entre plugins et depots : spip_depots_plugins
251 $spip_depots_plugins = array(
252 "id_depot" => "bigint(21) NOT NULL",
253 "id_plugin" => "bigint(21) NOT NULL"
254 );
255
256 $spip_depots_plugins_key = array(
257 "PRIMARY KEY" => "id_depot, id_plugin"
258 );
259
260 $tables_auxiliaires['spip_depots_plugins'] =
261 array('field' => &$spip_depots_plugins, 'key' => &$spip_depots_plugins_key);
262
263 return $tables_auxiliaires;
264 }
265
266 /**
267 * Déclare les alias de boucle et traitements automatiques de certaines balises
268 *
269 * @pipeline declarer_tables_interfaces
270 * @param array $interface
271 * Déclarations d'interface pour le compilateur
272 * @return array
273 * Déclarations d'interface pour le compilateur
274 */
275 function svp_declarer_tables_interfaces($interface) {
276 // Les tables : permet d'appeler une boucle avec le *type* de la table uniquement
277 $interface['table_des_tables']['depots'] = 'depots';
278 $interface['table_des_tables']['plugins'] = 'plugins';
279 $interface['table_des_tables']['paquets'] = 'paquets';
280 $interface['table_des_tables']['depots_plugins'] = 'depots_plugins';
281
282 // Les traitements
283 // - table spip_plugins
284 $interface['table_des_traitements']['SLOGAN']['plugins'] = _TRAITEMENT_RACCOURCIS;
285 $interface['table_des_traitements']['VMAX']['plugins'] = 'denormaliser_version(%s)';
286 // - table spip_paquets
287 $interface['table_des_traitements']['DESCRIPTION']['paquets'] = _TRAITEMENT_RACCOURCIS;
288 $interface['table_des_traitements']['VERSION']['paquets'] = 'denormaliser_version(%s)';
289 $interface['table_des_traitements']['MAJ_VERSION']['paquets'] = 'denormaliser_version(%s)';
290
291 return $interface;
292 }