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