squellete2
[aidenligne_francais_universite.git] / ecrire / public / interfaces.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2007 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13
14 if (!defined("_ECRIRE_INC_VERSION")) return;
15
16
17 // Definition des noeuds de l'arbre de syntaxe abstraite
18
19 // http://doc.spip.org/@Texte
20 class Texte {
21 var $type = 'texte';
22 var $texte;
23 var $avant, $apres = ""; // s'il y avait des guillemets autour
24 var $ligne = 0;
25 }
26
27 // http://doc.spip.org/@Inclure
28 class Inclure {
29 var $type = 'include';
30 var $texte;
31 var $avant, $apres; // inutilises mais generiques
32 var $ligne = 0;
33 var $param = array(); // valeurs des params
34 }
35
36 //
37 // encodage d'une boucle SPIP en un objet PHP
38 //
39 // http://doc.spip.org/@Boucle
40 class Boucle {
41 var $type = 'boucle';
42 var $id_boucle;
43 var $id_parent ='';
44 var $avant, $milieu, $apres, $altern;
45 var $lang_select;
46 var $type_requete;
47 var $sql_serveur = '';
48 var $param = array();
49 var $criteres = array();
50 var $separateur = array();
51 var $jointures = array();
52 var $jointures_explicites = false;
53 var $doublons;
54 var $partie, $total_parties,$mode_partie;
55 var $externe = ''; # appel a partir d'une autre boucle (recursion)
56 // champs pour la construction de la requete SQL
57 var $select = array();
58 var $from = array();
59 var $where = array();
60 var $join = array();
61 var $having = array();
62 var $limit;
63 var $group = array();
64 var $order = array();
65 var $default_order = array();
66 var $date = 'date' ;
67 var $hash = "" ;
68 var $in = "" ;
69 var $sous_requete = false;
70 var $hierarchie = '';
71 var $statut = false; # definition/surcharge du statut des elements retournes
72 // champs pour la construction du corps PHP
73 var $id_table;
74 var $primary;
75 var $return;
76 var $numrows = false;
77 var $cptrows = false;
78 var $ligne = 0;
79 var $descr = array(); # noms des fichiers source et but etc
80
81 var $modificateur = array(); // table pour stocker les modificateurs de boucle tels que tout, plat, fragment ..., utilisable par les plugins egalement
82
83 // obsoletes, conserves provisoirement pour compatibilite
84 var $fragment; # definir un fragment de page
85 var $tout = false;
86 var $plat = false;
87 var $lien = false;
88 }
89
90 // sous-noeud du precedent
91
92 // http://doc.spip.org/@Critere
93 class Critere {
94 var $op;
95 var $not;
96 var $param = array();
97 var $ligne = 0;
98 }
99
100 // http://doc.spip.org/@Champ
101 class Champ {
102 var $type = 'champ';
103 var $nom_champ;
104 var $nom_boucle= ''; // seulement si boucle explicite
105 var $avant, $apres; // tableaux d'objets
106 var $etoile;
107 var $param = array(); // filtre explicites
108 var $fonctions = array(); // source des filtres (compatibilite)
109 // champs pour la production de code
110 var $id_boucle;
111 var $boucles;
112 var $type_requete;
113 var $code; // code du calcul
114 var $interdire_scripts = true; // false si on est sur de cette balise
115 // tableau pour la production de code dependant du contexte
116 // id_mere; pour TOTAL_BOUCLE hors du corps
117 // document; pour embed et img dans les textes
118 // sourcefile; pour DOSSIER_SQUELETTE
119 var $descr = array();
120 // pour localiser les erreurs
121 var $ligne = 0;
122 }
123
124
125 // http://doc.spip.org/@Idiome
126 class Idiome {
127 var $type = 'idiome';
128 var $nom_champ = ""; // la chaine a traduire
129 var $module = ""; // son module de definition
130 var $param = array(); // les filtres a appliquer au resultat
131 var $fonctions = array(); // source des filtres (compatibilite)
132 var $avant, $apres; // inutilises mais faut = ci-dessus
133 // champs pour la production de code, cf ci-dessus
134 var $id_boucle;
135 var $boucles;
136 var $type_requete;
137 var $code;
138 var $interdire_scripts = false;
139 var $descr = array();
140 var $ligne = 0;
141 }
142
143 // http://doc.spip.org/@Polyglotte
144 class Polyglotte {
145 var $type = 'polyglotte';
146 var $traductions = array(); // les textes ou choisir
147 var $ligne = 0;
148 }
149 //
150 // Globales de description de la base
151
152 //ces variables ne sont pas initialisees par "$var = array()"
153 // afin de permettre leur extension dans mes_options.php etc
154
155 global $tables_des_serveurs_sql, $tables_principales; // (voir inc_serialbase)
156 global $exceptions_des_tables, $table_des_tables;
157 global $table_date;
158
159 # cf. fonction table_objet dans inc_version
160 $table_des_tables['articles']='articles';
161 $table_des_tables['auteurs']='auteurs';
162 $table_des_tables['breves']='breves';
163 $table_des_tables['forums']='forum';
164 $table_des_tables['signatures']='signatures';
165 $table_des_tables['documents']='documents';
166 $table_des_tables['types_documents']='types_documents';
167 $table_des_tables['mots']='mots';
168 $table_des_tables['groupes_mots']='groupes_mots';
169 $table_des_tables['rubriques']='rubriques';
170 $table_des_tables['syndication']='syndic';
171 $table_des_tables['syndic_articles']='syndic_articles';
172 $table_des_tables['hierarchie']='rubriques';
173 $table_des_tables['index']='index';
174
175 $exceptions_des_tables['breves']['id_secteur']='id_rubrique';
176 $exceptions_des_tables['breves']['date']='date_heure';
177 $exceptions_des_tables['breves']['nom_site']='lien_titre';
178 $exceptions_des_tables['breves']['url_site']='lien_url';
179
180 $exceptions_des_tables['forums']['date']='date_heure';
181 $exceptions_des_tables['forums']['nom']='auteur';
182 $exceptions_des_tables['forums']['email']='email_auteur';
183
184 $exceptions_des_tables['signatures']['date']='date_time';
185 $exceptions_des_tables['signatures']['nom']='nom_email';
186 $exceptions_des_tables['signatures']['email']='ad_email';
187
188 $exceptions_des_tables['documents']['type_document']=array('spip_types_documents'
189 , 'titre');
190 $exceptions_des_tables['documents']['extension_document']=array('spip_types_documents', 'extension');
191 $exceptions_des_tables['documents']['mime_type']=array('spip_types_documents'
192 , 'mime_type');
193
194 # ne sert plus ? verifier balise_URL_ARTICLE
195 $exceptions_des_tables['syndic_articles']['url_article']='url';
196 # ne sert plus ? verifier balise_LESAUTEURS
197 $exceptions_des_tables['syndic_articles']['lesauteurs']='lesauteurs';
198 $exceptions_des_tables['syndic_articles']['url_site']=array('spip_syndic',
199 'url_site');
200 $exceptions_des_tables['syndic_articles']['nom_site']=array('spip_syndic',
201 'nom_site');
202
203 $table_date['articles']='date';
204 $table_date['auteurs']='date';
205 $table_date['breves']='date_heure';
206 $table_date['forums']='date_heure';
207 $table_date['signatures']='date_time';
208 $table_date['documents']='date';
209 $table_date['types_documents']='date';
210 $table_date['groupes_mots']='date';
211 $table_date['mots']='date';
212 $table_date['rubriques']='date';
213 $table_date['syndication']='date';
214 $table_date['syndic_articles']='date';
215
216 //
217 // tableau des tables de jointures
218 // Ex: gestion du critere {id_mot} dans la boucle(ARTICLES)
219
220 global $tables_jointures;
221
222 $tables_jointures['spip_articles'][]= 'mots_articles';
223 $tables_jointures['spip_articles'][]= 'auteurs_articles';
224 $tables_jointures['spip_articles'][]= 'documents_articles';
225 $tables_jointures['spip_articles'][]= 'mots';
226 $tables_jointures['spip_articles'][]= 'signatures';
227
228 $tables_jointures['spip_auteurs'][]= 'auteurs_articles';
229 $tables_jointures['spip_auteurs'][]= 'mots';
230
231 $tables_jointures['spip_breves'][]= 'mots_breves';
232 $tables_jointures['spip_breves'][]= 'documents_breves';
233 $tables_jointures['spip_breves'][]= 'mots';
234
235 $tables_jointures['spip_documents'][]= 'documents_articles';
236 $tables_jointures['spip_documents'][]= 'documents_rubriques';
237 $tables_jointures['spip_documents'][]= 'documents_breves';
238 $tables_jointures['spip_documents'][]= 'mots_documents';
239 $tables_jointures['spip_documents'][]= 'types_documents';
240 $tables_jointures['spip_documents'][]= 'mots';
241
242 $tables_jointures['spip_forum'][]= 'mots_forum';
243 $tables_jointures['spip_forum'][]= 'mots';
244
245 $tables_jointures['spip_rubriques'][]= 'mots_rubriques';
246 $tables_jointures['spip_rubriques'][]= 'documents_rubriques';
247 $tables_jointures['spip_rubriques'][]= 'mots';
248
249 $tables_jointures['spip_syndic'][]= 'mots_syndic';
250 $tables_jointures['spip_syndic'][]= 'mots';
251
252 $tables_jointures['spip_syndic_articles'][]= 'syndic';
253 $tables_jointures['spip_syndic_articles'][]= 'mots';
254
255 $tables_jointures['spip_mots'][]= 'mots_articles';
256 $tables_jointures['spip_mots'][]= 'mots_breves';
257 $tables_jointures['spip_mots'][]= 'mots_forum';
258 $tables_jointures['spip_mots'][]= 'mots_rubriques';
259 $tables_jointures['spip_mots'][]= 'mots_syndic';
260 $tables_jointures['spip_mots'][]= 'mots_documents';
261
262 $tables_jointures['spip_groupes_mots'][]= 'mots';
263
264
265 global $exceptions_des_jointures;
266 $exceptions_des_jointures['titre_mot'] = array('spip_mots', 'titre');
267 $exceptions_des_jointures['type_mot'] = array('spip_mots', 'type');
268 $exceptions_des_jointures['id_signature']= array('spip_signatures', 'id_signature');
269
270 global $table_des_traitements;
271 $table_des_traitements['BIO'][]= 'propre(%s)';
272 $table_des_traitements['CHAPO'][]= 'propre(nettoyer_chapo(%s))';
273 $table_des_traitements['DATE'][]= 'vider_date(%s)';
274 $table_des_traitements['DATE_MODIF'][]= 'vider_date(%s)';
275 $table_des_traitements['DATE_NOUVEAUTES'][]= 'vider_date(%s)';
276 $table_des_traitements['DATE_REDAC'][]= 'vider_date(%s)';
277 $table_des_traitements['DESCRIPTIF'][]= 'propre(%s)';
278 $table_des_traitements['LIEN_TITRE'][]= 'typo(%s)';
279 $table_des_traitements['LIEN_URL'][]= 'vider_url(%s)';
280 $table_des_traitements['MESSAGE'][]= 'propre(%s)';
281 $table_des_traitements['NOM_SITE_SPIP'][]= 'typo(%s)';
282 $table_des_traitements['NOM_SITE'][]= '%s'; # construire_titre_lien -> typo
283 $table_des_traitements['NOM'][]= 'typo(%s)';
284 $table_des_traitements['PARAMETRES_FORUM'][]= 'htmlspecialchars(lang_parametres_forum(%s))';
285 $table_des_traitements['PS'][]= 'propre(%s)';
286 $table_des_traitements['SOURCE'][]= 'typo(%s)';
287 $table_des_traitements['SOUSTITRE'][]= 'typo(%s)';
288 $table_des_traitements['SURTITRE'][]= 'typo(%s)';
289 $table_des_traitements['TAGS'][]= '%s';
290 $table_des_traitements['TEXTE'][]= 'propre(%s)';
291 $table_des_traitements['TITRE'][]= 'typo(%s)';
292 $table_des_traitements['TYPE'][]= 'typo(%s)';
293 $table_des_traitements['URL_ARTICLE'][]= 'vider_url(%s)';
294 $table_des_traitements['URL_BREVE'][]= 'vider_url(%s)';
295 $table_des_traitements['URL_DOCUMENT'][]= 'vider_url(%s)';
296 $table_des_traitements['URL_FORUM'][]= 'vider_url(%s)';
297 $table_des_traitements['URL_MOT'][]= 'vider_url(%s)';
298 $table_des_traitements['URL_RUBRIQUE'][]= 'vider_url(%s)';
299 $table_des_traitements['DESCRIPTIF_SITE_SPIP'][]= 'propre(%s)';
300 $table_des_traitements['URL_SITE'][]= 'calculer_url(%s)';
301 $table_des_traitements['URL_SOURCE'][]= 'vider_url(%s)';
302 $table_des_traitements['URL_SYNDIC'][]= 'vider_url(%s)';
303 $table_des_traitements['ENV'][]= 'entites_html(%s)';
304
305
306 // Articles syndiques : passage des donnees telles quelles, sans traitement typo
307 // A noter, dans applique_filtres la securite et compliance XHTML de ces champs
308 // est assuree par safehtml()
309 foreach(array('TITRE','DESCRIPTIF','SOURCE') as $balise)
310 if (!isset($table_des_traitements[$balise]['syndic_articles']))
311 $table_des_traitements[$balise]['syndic_articles'] = '%s';
312
313 ?>