Subversion Repositories Sites.tela-botanica.org

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 david 1
<?php
2
 
3
//
4
// Ce fichier ne sera execute qu'une fois
5
if (defined("_INC_CHAMP_SQUEL")) return;
6
define("_INC_CHAMP_SQUEL", "1");
7
 
8
 
9
function init_champs_squel() {
10
	global $champs_valides;
11
	global $champs_traitement, $champs_pretraitement, $champs_posttraitement;
12
 
13
	global $rows_articles;
14
	global $rows_signatures;
15
	global $rows_syndication;
16
	global $rows_syndic_articles;
17
	global $rows_documents;
18
	global $rows_types_documents;
19
	global $rows_rubriques;
20
	global $rows_forums;
21
	global $rows_breves;
22
	global $rows_auteurs;
23
	global $rows_hierarchie;
24
	global $rows_mots;
25
	global $rows_groupes_mots;
26
 
27
	global $tables_relations;
28
	global $tables_code_contexte;
29
	global $tables_doublons;
30
 
31
	//
32
	// Construire un tableau des tables de relations
33
	//
34
 
35
	$tables_relations = '';
36
 
37
	$tables_relations['articles']['id_mot'] = 'spip_mots_articles';
38
	$tables_relations['articles']['id_auteur'] = 'spip_auteurs_articles';
39
	$tables_relations['articles']['id_document'] = 'spip_documents_articles';
40
 
41
	$tables_relations['auteurs']['id_article'] = 'spip_auteurs_articles';
42
 
43
	$tables_relations['breves']['id_mot'] = 'spip_mots_breves';
44
	$tables_relations['breves']['id_document'] = 'spip_documents_breves';
45
 
46
	$tables_relations['documents']['id_article'] = 'spip_documents_articles';
47
	$tables_relations['documents']['id_rubrique'] = 'spip_documents_rubriques';
48
	$tables_relations['documents']['id_breve'] = 'spip_documents_breves';
49
 
50
	$tables_relations['forums']['id_mot'] = 'spip_mots_forum';
51
 
52
	$tables_relations['mots']['id_article'] = 'spip_mots_articles';
53
	$tables_relations['mots']['id_breve'] = 'spip_mots_breves';
54
	$tables_relations['mots']['id_forum'] = 'spip_mots_forum';
55
	$tables_relations['mots']['id_rubrique'] = 'spip_mots_rubriques';
56
	$tables_relations['mots']['id_syndic'] = 'spip_mots_syndic';
57
 
58
	$tables_relations['groupes_mots']['id_groupe'] = 'spip_mots';
59
 
60
	$tables_relations['rubriques']['id_mot'] = 'spip_mots_rubriques';
61
	$tables_relations['rubriques']['id_document'] = 'spip_documents_rubriques';
62
 
63
	$tables_relations['syndication']['id_mot'] = 'spip_mots_syndic';
64
 
65
 
66
	//
67
	// Construire un tableau associatif des codes de champ utilisables
68
	//
69
 
70
	$c = array('NOM_SITE_SPIP', 'URL_SITE_SPIP', 'EMAIL_WEBMASTER',
71
		'CHARSET', 'ID_ARTICLE', 'ID_RUBRIQUE', 'ID_BREVE', 'ID_FORUM',
72
		'ID_PARENT', 'ID_SECTEUR', 'ID_DOCUMENT', 'ID_TYPE', 'ID_AUTEUR',
73
		'ID_MOT', 'ID_SYNDIC_ARTICLE', 'ID_SYNDIC', 'ID_SIGNATURE',
74
		'ID_GROUPE', 'ID_VIGNETTE', 'TITRE', 'SURTITRE', 'SOUSTITRE', 'DESCRIPTIF',
75
		'CHAPO', 'TEXTE', 'PS', 'NOTES', 'INTRODUCTION', 'MESSAGE', 'DATE',
76
		'DATE_REDAC', 'DATE_MODIF', 'DATE_NOUVEAUTES', 'INCLUS', 'LANG',
77
		'LANG_LEFT', 'LANG_RIGHT', 'LANG_DIR', 'LESAUTEURS', 'EMAIL',
78
		'NOM_SITE', 'LIEN_TITRE', 'URL_SITE', 'LIEN_URL', 'NOM', 'BIO',
79
		'TYPE', 'PGP', 'FORMULAIRE_ECRIRE_AUTEUR', 'FORMULAIRE_FORUM',
80
		'FORMULAIRE_SITE', 'PARAMETRES_FORUM', 'FORMULAIRE_RECHERCHE',
81
		'RECHERCHE', 'FORMULAIRE_INSCRIPTION', 'FORMULAIRE_SIGNATURE',
82
		'LOGO_MOT', 'LOGO_RUBRIQUE', 'LOGO_RUBRIQUE_NORMAL',
83
		'LOGO_RUBRIQUE_SURVOL', 'LOGO_AUTEUR', 'LOGO_AUTEUR_NORMAL',
84
		'LOGO_AUTEUR_SURVOL', 'LOGO_SITE', 'LOGO_BREVE',
85
		'LOGO_BREVE_RUBRIQUE', 'LOGO_DOCUMENT', 'LOGO_ARTICLE',
86
		'LOGO_ARTICLE_RUBRIQUE', 'LOGO_ARTICLE_NORMAL',
87
		'LOGO_ARTICLE_SURVOL', 'URL_ARTICLE', 'URL_RUBRIQUE', 'URL_BREVE',
88
		'URL_FORUM', 'URL_SYNDIC', 'URL_MOT', 'URL_DOCUMENT', 'URL_AUTEUR',
89
		'EMBED_DOCUMENT', 'IP', 'VISITES', 'POPULARITE',
90
		'POPULARITE_ABSOLUE', 'POPULARITE_MAX', 'POPULARITE_SITE', 'POINTS',
91
		'COMPTEUR_BOUCLE', 'TOTAL_BOUCLE', 'PETITION', 'LARGEUR', 'HAUTEUR',
92
		'TAILLE', 'EXTENSION', 'DEBUT_SURLIGNE', 'FIN_SURLIGNE',
93
		'TYPE_DOCUMENT', 'EXTENSION_DOCUMENT', 'FORMULAIRE_ADMIN',
94
		'LOGIN_PRIVE', 'LOGIN_PUBLIC', 'URL_LOGOUT', 'PUCE', 'EXTRA',
95
		'EXPOSER', 'MENU_LANG', 'MENU_LANG_ECRIRE'
96
	);
97
	reset($c);
98
	while (list(, $val) = each($c)) {
99
		unset($champs_traitement[$val]);
100
		unset($champs_pretraitement[$val]);
101
		unset($champs_posttraitement[$val]);
102
		$champs_valides[$val] = $val;
103
	}
104
 
105
 
106
	//
107
	// Construire un tableau associatif des pre-traitements de champs
108
	//
109
 
110
	// Textes utilisateur : ajouter la securite anti-script
111
	$c = array('NOM_SITE_SPIP', 'URL_SITE_SPIP', 'EMAIL_WEBMASTER', 'CHARSET',
112
		'TITRE', 'SURTITRE', 'SOUSTITRE', 'DESCRIPTIF', 'CHAPO', 'TEXTE', 'PS',
113
		'NOTES', 'INTRODUCTION', 'MESSAGE', 'LESAUTEURS', 'EMAIL', 'NOM_SITE',
114
		'LIEN_TITRE', 'URL_SITE', 'LIEN_URL', 'NOM', 'IP', 'BIO',
115
		'TYPE', 'PGP', 'RECHERCHE'
116
	);
117
	reset($c);
118
	while (list(, $val) = each($c)) {
119
		$champs_pretraitement[$val][] = 'trim';
120
		$champs_posttraitement[$val][] = 'interdire_scripts';
121
	}
122
	$c = array('EXTRA');
123
	reset($c);
124
	while (list(, $val) = each($c)) {
125
		$champs_posttraitement[$val][] = 'interdire_scripts';
126
	}
127
 
128
	// Textes courts : ajouter le traitement typographique
129
	$c = array('NOM_SITE_SPIP', 'SURTITRE', 'TITRE', 'SOUSTITRE', 'NOM_SITE', 'LIEN_TITRE', 'NOM');
130
	reset($c);
131
	while (list(, $val) = each($c)) {
132
		$champs_traitement[$val][] = 'typo';
133
	}
134
 
135
	// Chapo : ne pas l'afficher si article virtuel
136
	$c = array('CHAPO');
137
	reset($c);
138
	while (list(, $val) = each($c)) {
139
		$champs_traitement[$val][] = 'nettoyer_chapo';
140
	}
141
 
142
	// Textes longs : ajouter le traitement typographique + mise en forme
143
	$c = array('DESCRIPTIF', 'CHAPO', 'TEXTE', 'PS', 'BIO', 'MESSAGE');
144
	reset($c);
145
	while (list(, $val) = each($c)) {
146
		$champs_traitement[$val][] = 'traiter_raccourcis';
147
	}
148
 
149
	// Dates : ajouter le vidage des dates egales a 00-00-0000
150
	$c = array('DATE', 'DATE_REDAC', 'DATE_MODIF', 'DATE_NOUVEAUTES');
151
	reset($c);
152
	while (list(, $val) = each($c)) {
153
		$champs_traitement[$val][] = 'vider_date';
154
	}
155
 
156
	// URL_SITE : vider les url == 'http://'
157
	$c = array('URL_SITE_SPIP', 'URL_SITE', 'LIEN_URL');
158
	reset($c);
159
	while (list(, $val) = each($c)) {
160
		$champs_traitement[$val][] = 'vider_url';
161
	}
162
 
163
	// URLs : remplacer les & par &amp;
164
	$c = array('URL_SITE_SPIP', 'URL_SITE', 'LIEN_URL', 'PARAMETRES_FORUM',
165
		'URL_ARTICLE', 'URL_RUBRIQUE', 'URL_BREVE', 'URL_FORUM', 'URL_SYNDIC',
166
		'URL_MOT', 'URL_DOCUMENT');
167
	reset($c);
168
	while (list(, $val) = each($c)) {
169
		$champs_traitement[$val][] = 'htmlspecialchars';
170
	}
171
 
172
	//
173
	// Construire un tableau associatif des champs de chaque type
174
	// avec l'intitule de la colonne mysql correspondante
175
	//
176
 
177
	$rows_articles = array(
178
		'ID_ARTICLE' => 'id_article',
179
		'ID_RUBRIQUE' => 'id_rubrique',
180
		'ID_SECTEUR' => 'id_secteur',
181
		'SURTITRE' => 'surtitre',
182
		'TITRE' => 'titre',
183
		'SOUSTITRE' => 'soustitre',
184
		'DESCRIPTIF' => 'descriptif',
185
		'CHAPO' => 'chapo',
186
		'TEXTE' => 'texte',
187
		'PS' => 'ps',
188
		'LANG' => 'lang',
189
		'DATE' => 'date',
190
		'DATE_REDAC' => 'date_redac',
191
		'NOM_SITE' => 'nom_site',
192
		'URL_SITE' => 'url_site',
193
		'DATE_MODIF' => 'date_modif',
194
		'VISITES' => 'visites',
195
		'POINTS' => 'points'
196
	);
197
	$rows_auteurs = array(
198
		'ID_AUTEUR' => 'id_auteur',
199
		'NOM' => 'nom',
200
		'BIO' => 'bio',
201
		'EMAIL' => 'email',
202
		'NOM_SITE' => 'nom_site',
203
		'URL_SITE' => 'url_site',
204
		'PGP' => 'pgp',
205
		'LANG' => 'lang',
206
		'POINTS' => 'points'
207
	);
208
	$rows_breves = array(
209
		'ID_BREVE' => 'id_breve',
210
		'ID_RUBRIQUE' => 'id_rubrique',
211
		'ID_SECTEUR' => 'id_rubrique',
212
		'DATE' => 'date_heure',
213
		'TITRE' => 'titre',
214
		'TEXTE' => 'texte',
215
		'LANG' => 'lang',
216
		'NOM_SITE' => 'lien_titre',
217
		'URL_SITE' => 'lien_url',
218
		'LIEN_TITRE' => 'lien_titre',
219
		'LIEN_URL' => 'lien_url',
220
		'POINTS' => 'points'
221
	);
222
	$rows_forums = array(
223
		'ID_FORUM' => 'id_forum',
224
		'ID_PARENT' => 'id_parent',
225
		'ID_BREVE' => 'id_breve',
226
		'ID_RUBRIQUE' => 'id_rubrique',
227
		'ID_ARTICLE' => 'id_article',
228
		'TITRE' => 'titre',
229
		'TEXTE' => 'texte',
230
		'DATE' => 'date_heure',
231
		'NOM' => 'auteur',
232
		'EMAIL' => 'email_auteur',
233
		'NOM_SITE' => 'nom_site',
234
		'URL_SITE' => 'url_site',
235
		'ID_AUTEUR' => 'id_auteur',
236
		'IP' => 'ip'
237
	);
238
	$rows_documents = array(
239
		'ID_DOCUMENT' => 'id_document',
240
		'ID_VIGNETTE' => 'id_vignette',
241
		'ID_TYPE' => 'id_type',
242
		'ID_ARTICLE' => 'id_article',
243
		'TITRE' => 'titre',
244
		'DESCRIPTIF' => 'descriptif',
245
		'DATE' => 'date',
246
		'LARGEUR' => 'largeur',
247
		'HAUTEUR' => 'hauteur',
248
		'TAILLE' => 'taille',
249
		'TYPE_DOCUMENT' => 'type_document',
250
		'EXTENSION_DOCUMENT' => 'extension_document'
251
	);
252
	$rows_types_documents = array(
253
		'ID_TYPE' => 'id_type',
254
		'TITRE' => 'titre',
255
		'DESCRIPTIF' => 'descriptif',
256
		'EXTENSION' => 'extension'
257
	);
258
	$rows_mots = array(
259
		'ID_MOT' => 'id_mot',
260
		'TYPE' => 'type',
261
		'TITRE' => 'titre',
262
		'DESCRIPTIF' => 'descriptif',
263
		'TEXTE' => 'texte',
264
		'POINTS' => 'points',
265
		'ID_GROUPE' => 'id_groupe'
266
	);
267
	$rows_groupes_mots = array(
268
		'ID_GROUPE' => 'id_groupe',
269
		'TITRE' => 'titre'
270
	);
271
	$rows_rubriques = array(
272
		'ID_RUBRIQUE' => 'id_rubrique',
273
		'ID_PARENT' => 'id_parent',
274
		'ID_SECTEUR' => 'id_secteur',
275
		'TITRE' => 'titre',
276
		'DESCRIPTIF' => 'descriptif',
277
		'TEXTE' => 'texte',
278
		'LANG' => 'lang',
279
		'DATE' => 'date',
280
		'POINTS' => 'points'
281
	);
282
	$rows_hierarchie = $rows_rubriques;
283
 
284
	$rows_signatures = array(
285
		'ID_SIGNATURE' => 'id_signature',
286
		'ID_ARTICLE' => 'id_article',
287
		'DATE' => 'date_time',
288
		'NOM' => 'nom_email',
289
		'EMAIL' => 'ad_email',
290
		'NOM_SITE' => 'nom_site',
291
		'URL_SITE' => 'url_site',
292
		'MESSAGE' => 'message'
293
	);
294
 
295
	$rows_syndication = array(
296
		'ID_SYNDIC' => 'id_syndic',
297
		'ID_RUBRIQUE' => 'id_rubrique',
298
		'ID_SECTEUR' => 'id_secteur',
299
		'NOM_SITE' => 'nom_site',
300
		'URL_SITE' => 'url_site',
301
		'URL_SYNDIC' => 'url_syndic',
302
		'DESCRIPTIF' => 'descriptif',
303
		'DATE' => 'date',
304
		'POINTS' => 'points'
305
	);
306
	$rows_syndic_articles = array(
307
		'ID_SYNDIC_ARTICLE' => 'id_syndic_article',
308
		'ID_SYNDIC' => 'id_syndic',
309
		'TITRE' => 'titre',
310
		'URL_ARTICLE' => 'url',
311
		'DATE' => 'date',
312
		'LESAUTEURS' => 'lesauteurs',
313
		'DESCRIPTIF' => 'descriptif',
314
		'NOM_SITE' => 'nom_site',
315
		'URL_SITE' => 'url_site'
316
	);
317
 
318
	$tables_code_contexte = array(
319
	'articles' => '
320
		$contexte["id_article"] = $row["id_article"];
321
		$contexte["id_rubrique"] = $row["id_rubrique"];
322
		$contexte["id_secteur"] = $row["id_secteur"];
323
		$contexte["date"] = $row["date"];
324
		$contexte["date_redac"] = $row["date_redac"];
325
		$contexte["accepter_forum"] = $row["accepter_forum"];
326
		$contexte["id_trad"] = $row["id_trad"];
327
	',
328
	'breves' => '
329
		$contexte["id_breve"] = $row["id_breve"];
330
		$contexte["id_rubrique"] = $row["id_rubrique"];
331
		$contexte["id_secteur"] = $row["id_rubrique"];
332
		$contexte["date"] = $row["date_heure"];
333
	',
334
	'rubriques' => '
335
		$contexte["id_rubrique"] = $row["id_rubrique"];
336
		$contexte["id_parent"] = $row["id_parent"];
337
		$contexte["id_secteur"] = $row["id_secteur"];
338
		$contexte["date"] = $row["date"];
339
	',
340
	'hierarchie' => '
341
		$contexte["id_rubrique"] = $row["id_rubrique"];
342
		$contexte["id_parent"] = $row["id_parent"];
343
		$contexte["id_secteur"] = $row["id_secteur"];
344
		$contexte["date"] = $row["date"];
345
	',
346
	'documents' => '
347
		$contexte["id_document"] = $row["id_document"];
348
		$contexte["id_vignette"] = $row["id_vignette"];
349
		$contexte["id_type"] = $row["id_type"];
350
	',
351
	'types_documents' => '
352
		$contexte["id_type"] = $row["id_type"];
353
	',
354
	'forums' => '
355
		$contexte["id_forum"] = $row["id_forum"];
356
		$contexte["id_rubrique"] = $row["id_rubrique"];
357
		$contexte["id_article"] = $row["id_article"];
358
		$contexte["id_breve"] = $row["id_breve"];
359
		$contexte["id_syndic"] = $row["id_syndic"];
360
		$contexte["id_parent"] = $row["id_parent"];
361
		$contexte["id_auteur"] = $row["id_auteur"];
362
		$contexte["date"] = $row["date_heure"];
363
	',
364
	'auteurs' => '
365
		$contexte["id_auteur"] = $row["id_auteur"];
366
	',
367
	'signatures' => '
368
		$contexte["id_signature"] = $row["id_signature"];
369
		$contexte["date"] = $row["date_time"];
370
	',
371
	'mots' => '
372
		$contexte["id_mot"] = $row["id_mot"];
373
		$contexte["type"] = $row["type"];
374
		$contexte["id_groupe"] = $row["id_groupe"];
375
	',
376
	'groupes_mots' => '
377
		$contexte["id_groupe"] = $row["id_groupe"];
378
	',
379
	'syndication' => '
380
		$contexte["id_syndic"] = $row["id_syndic"];
381
		$contexte["id_rubrique"] = $row["id_rubrique"];
382
		$contexte["id_secteur"] = $row["id_secteur"];
383
		$contexte["url_site"] = $row["url_site"];
384
		$contexte["date"] = $row["date"];
385
	',
386
	'syndic_articles' => '
387
		$contexte["id_syndic"] = $row["id_syndic"];
388
		$contexte["id_syndic_article"] = $row["id_syndic_article"];
389
		$contexte["date"] = $row["date"];
390
	'
391
	);
392
 
393
	$tables_doublons = array(
394
		'articles' => "id_article",
395
		'auteurs' => "id_auteur",
396
		'breves' => "id_breve",
397
		'documents' => "id_document",
398
		'forums' => "id_forum",
399
		'groupes_mots'	=> "id_groupe",
400
		'hierarchie' => "id_rubrique",
401
		'mots'	=> "id_mot",
402
		'rubriques' => "id_rubrique",
403
		'signatures' => "id_signature",
404
		'syndication' => "id_syndic",
405
		'syndic_articles' => "syndic_articles",
406
		'types_documents' => "id_document"
407
	);
408
}
409
 
410
init_champs_squel();
411
 
412
?>