Subversion Repositories eFlore/Applications.bibliobota

Rev

Rev 23 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 jp_milcent 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// | This library is free software; you can redistribute it and/or                                        |
9
// | modify it under the terms of the GNU Lesser General Public                                           |
10
// | License as published by the Free Software Foundation; either                                         |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
12
// |                                                                                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
16
// | Lesser General Public License for more details.                                                      |
17
// |                                                                                                      |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
19
// | License along with this library; if not, write to the Free Software                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
22
// CVS : $Id: bbc_affichage.fonct.php,v 1.1 2005-11-23 10:22:25 jp_milcent Exp $
23
/**
24
* Fonctions de l'interface de consultation de Biblio Bota.
25
*
26
* Contient les fonctions fournissant du XHTML pour l'affichage de l'interface de consultation de BibioBota.
27
*
28
*@package BiblioBota-Consultation
29
*@subpackage Fonctions
30
//Auteur original :
31
*@author        Jean-Charles GRANGER <tela@vecteur.org>
32
//Autres auteurs :
33
*@author        Jean-Pascal MILCENT <jpm@clapas.org>
34
*@copyright     Tela-Botanica 2000-2004
35
*@version       $Revision: 1.1 $ $Date: 2005-11-23 10:22:25 $
36
// +------------------------------------------------------------------------------------------------------+
37
*/
38
 
39
// +------------------------------------------------------------------------------------------------------+
40
// |                                            ENTETE du PROGRAMME                                       |
41
// +------------------------------------------------------------------------------------------------------+
42
                                    /*Mettre ici les inclusions de fichiers*/
43
 
44
 
45
// +------------------------------------------------------------------------------------------------------+
46
// |                                           LISTE de FONCTIONS                                         |
47
// +------------------------------------------------------------------------------------------------------+
48
                                        /*Mettre ici la liste de fonctions.*/
49
 
50
// string ColorizeFound($tomod,$tofind)
51
//    Colorie dans une chaine de texte $tomod la chaine $tofind.
52
//    $tofind peut contenir des espaces, chaque terme sera quand même colorié.
53
//    Retourne la chaine de caractères $tomod convertie.
54
function ColorizeFound($tomod, $tofind)
55
{
56
    $words = explode(' ', $tofind);
57
    // Liste de mots générant des problèmes vis à vis de la chaine $edited
58
    $forbid_lst[0] = 'la';
59
    $forbid_lst[1] = 'texte';
60
    $forbid_lst[2] = 'found';
61
    $forbid_lst[3] = 'un';
62
    $forbid_lst[4] = 'fou';
63
    $forbid_lst[5] = 'las';
64
    $forbid_lst[6] = 'class';
65
    $forbid_lst[7] = 'text';
66
    $forbid_lst[8] = 'ou';
67
    $forbid_lst[9] = 'ext';
68
    $forbid_lst[10] = 'te';
69
    $forbid_lst[11] = 'ex';
70
    $forbid_lst[12] = 'und';
71
    $forbid_lst[13] = 'a';
72
    $forbid_lst[14] = 'c';
73
    $forbid_lst[15] = 'd';
74
    $forbid_lst[16] = 'e';
75
    $forbid_lst[17] = 'f';
76
    $forbid_lst[18] = 'l';
77
    $forbid_lst[19] = 'n';
78
    $forbid_lst[20] = 'o';
79
    $forbid_lst[21] = 'p';
80
    $forbid_lst[22] = 's';
81
    $forbid_lst[23] = 't';
82
    $forbid_lst[24] = 'u';
83
    $forbid_lst[25] = 'x';
84
 
85
    for ($i = 0; $i < count($words); $i++) {
86
        $words[$i] = ereg_replace('\[', '', $words[$i]);
87
        $words[$i] = ereg_replace('\]', '', $words[$i]);
88
        $edited = '<span class="bb_txt_trouve">'.$words[$i].'</span>';
89
        if (($words[$i] != '') && ($tomod != '') && (! in_array($words[$i], $forbid_lst))){
90
            $tomod = eregi_replace($words[$i], $edited, $tomod);
91
        }
92
    }
93
    return $tomod;
94
}
95
 
96
// form_mk_submit($value) :
97
// créé un bouton de validation de formulaire
98
// Entrée : string $value (facultatif), string $class
99
// Sortie (par retour) : string
100
function form_mk_submit($value = 'Chercher', $class = 'texte_tb')
101
{
102
    $retour = '';
103
    $retour .= '<input type="submit" name="valider" value="'.$value.'" class="'.$class.'" />';
104
    $retour .= '<input type="hidden" name="TabFinder[valid]" value="1" />';
105
 
106
    return $retour;
107
}
108
 
109
 
110
// form_mk_reset($value) :
111
// créé un bouton d'effacement de formulaire
112
// Entrée : string $value (facultatif)
113
// Sortie (par retour) : string
114
function form_mk_reset($value = 'Effacer', $class = 'texte_tb')
115
{
116
    return '<input type="reset" value="'.$value.'" name="valider" class="'.$class.'" />';
117
}
118
 
119
 
120
// form_mk_chaine($value,$class) :
121
// créé un champ texte "chaine"
122
// Entrée : $value (valeur de TabFinder['chaine']), $class (classe CSS) par défaut "insInputForm"
123
// Sortie (par retour) : string
124
function form_mk_chaine($value = '', $class = 'insInputForm')
125
{
126
    $id = 'TabFinder[chaine]';
127
    $retour = '<label for="'.$id.'">'.'Rechercher : '.'</label>';
128
    $retour .= '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.$value.'" />'."\n";
129
    return $retour;
130
}
131
 
132
 
133
// form_mk_geo($value,$class) :
134
// créé un champ texte "geo"
135
// Entrée : $value (valeur de TabFinder['geo']), $class (classe CSS) par défaut "insInputForm"
136
// Sortie (par retour) : string
137
function form_mk_geo($value = '', $class = 'insInputForm')
138
{
139
    $id = 'TabFinder[geo]';
140
    $retour = '<label for="'.$id.'">'.'Zone géo. : '.'</label>';
141
    $retour .= '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.$value.'" />'."\n";
142
    return $retour;
143
}
144
 
145
 
146
// form_mk_auteur($value,$class) :
147
// créé un champ texte "auteur"
148
// Entrée : $value (valeur de TabFinder['auteur']), $class (classe CSS) par défaut "insInputForm"
149
// Sortie (par retour) : string
150
function form_mk_auteur($value = '', $class = 'insInputForm')
151
{
152
    $id = 'TabFinder[auteur]';
153
    $retour = '<label for="'.$id.'">'.'Auteur : '.'</label>';
154
    $retour .= '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.$value.'" />';
155
    return $retour;
156
}
157
 
158
 
159
// form_mk_step($actualstep,$class) :
160
// créé une liste déroulante TabFinder[step] pour fragmenter les pages en x résultats
161
// Entrée : $actualstep (valeur de TabFinder['step']), $class (classe CSS) par défaut "insInputForm"
162
// Sortie (par retour) : string
163
function form_mk_step($actualstep, $class = 'insInputForm')
164
{
165
    $retour = '';
166
    $id = 'TabFinder[step]';
167
 
168
    $retour .= '<label for="'.$id.'">'.'Grouper les résultats : '.'</label>';
169
    $retour .= '<select id="'.$id.'" name="'.$id.'" class="'.$class.'">'."\n";
170
 
171
    $retour .= '   <option value="10"';
172
    if ($actualstep == 10) {
173
        $retour .= 'selected="selected"';
174
    }
175
    $retour .= '>par 10</option>'."\n";
176
 
177
    $retour .= '   <option value="20"';
178
    if (($actualstep == 20) || ($actualstep == '')) {
179
        $retour .= 'selected="selected"';
180
    }
181
    $retour .= '>par 20</option>'."\n";
182
 
183
    $retour .= '   <option value="50"';
184
    if ($actualstep == 50) {
185
        $retour .= 'selected="selected"';
186
    }
187
    $retour .= '>par 50</option>'."\n";
188
 
189
    $retour .= '</select>'."\n";
190
 
191
    return $retour;
192
}
193
 
194
 
195
// form_mk_typque($actualstep,$class) :
196
// créé une liste déroulante TabFinder[step] pour fragmenter les pages en x résultats
197
// Entrée : $actualtypque (valeur de TabFinder['typque']), $class (classe CSS) par défaut "insInputForm"
198
// Sortie (par retour) : string
199
function form_mk_typque($actualtypque, $class = 'insInputForm')
200
{
201
    global $label_bbota;
202
 
203
    $retour = '';
204
 
205
    $retour .= '<select name="TabFinder[typque]" size="1" class="'.$class.'">'."\n";
206
 
207
    $retour .= '   <option value="1"';
208
    if (($actualtypque == '') || ($actualtypque == 1)) {
209
        $retour .= ' selected="selected"';
210
    }
211
    $retour .= '>'.$label_bbota['bool_separe'].'</option>'."\n";
212
 
213
    $retour .= '   <option value="0"';
214
    if (($actualtypque == 0) && ($actualtypque != '')) $retour .= ' selected';
215
    $retour .= '>'.$label_bbota['bool_exacte'].'</option>'."\n";
216
 
217
    $retour .= '</select>'."\n";
218
 
219
    return $retour;
220
}
221
 
222
// form_mk_since($value,$class) :
223
// créé un champ texte "since"
224
// Entrée : $value (valeur de TabFinder['since']), $class (classe CSS) par défaut "insInputForm"
225
// Sortie (par retour) : string
226
function form_mk_since($value = '', $class = 'insInputForm')
227
{
228
    $id = 'TabFinder[since]';
229
    $retour = '<label for="'.$id.'">'.'Réduire aux données mises en ligne depuis le : '.'</label>';
230
    $retour .= '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.$value.'" maxlength="10" />';
231
    $retour .= ' (au format jj/mm/aaaa)'."\n";
232
    return $retour;
233
}
234
 
235
 
236
// form_mk_plugin($value) :
237
// créé un element de formulaire caché en fonction du contenu de Plugin
238
// Entrée : string $value
239
// Sortie (par retour) : string ou void
240
function form_mk_plugin($value)
241
{
242
    if ($value != '') {
243
        return '<input type="hidden" name="TabFinder[plugin]" value="'.$value.'" />'."\n";
244
    } else {
245
        return '';
246
    }
247
}
248
 
249
// form_mk_advance() :
250
// créé un element/lien formulaire appelant la page elle-même pour avoir un formulaire en mode "avancé"
251
// Entrée :
252
// Sortie (par retour) : string
253
function form_mk_advance()
254
{
255
    global $TabFinder, $arg_0, $arg_1, $arg_2, $arg_3, $arg_4, $arg_5;
256
 
257
    if (empty($TabFinder)) {
258
        $TabFinder = '';
259
    }
260
 
261
    $stockagevar = '';
262
 
263
    foreach($TabFinder as $tmp_stock_i => $value) {
264
        if ($tmp_stock_i != 'args' && $tmp_stock_i != 'finder_mode') {
265
            $stockagevar .= $tmp_stock_i.','.$value.'!';
266
        }
267
    }
268
 
269
    $stockagevar = ereg_replace(' ', '{', $stockagevar);
270
 
271
    if ($TabFinder['finder_mode'] == 'normal') {
272
        $chaine_url_middle = 'advance';
273
        $chaine_labelle = 'Plus';
274
    } else if ($TabFinder['finder_mode'] == 'advance') {
275
        $chaine_url_middle = 'normal';
276
        $chaine_labelle = 'Moins';
277
    }
278
 
279
    $chaine_url_end = '&amp;arg_0='.$arg_0.'&amp;arg_1='.$arg_1.'&amp;arg_2='.$arg_2.'&amp;arg_3='.$arg_3.'&amp;arg_4='.$arg_4.'&amp;arg_5='.$arg_5;
280
    $chaine_url_start = "\n".'<input type="button" class="texte_tb" value="'.$chaine_labelle.' d\'options" '.
281
                        'onclick="javascript:window.location.href=\''.$GLOBALS['_GEN_commun']['url']->getURL().
282
                        '&amp;TransTab='.$stockagevar.'finder_mode,'.$chaine_url_middle.$chaine_url_end.'\';" />'."\n";
283
 
284
    return $chaine_url_start;
285
}
286
 
287
// presa_mk_title($value,$colspan) :
288
// créé une ligne de titre dans un <tr>
289
// Entrée : string $value, int $colspan
290
// ($value : titre ; $colspan : nombre de colonnes fusionnées ; par défaut $colspan = 1)
291
// Sortie (par retour) : string
292
 
293
function presa_mk_title($value, $niveau = '2', $class = 'insTitle1')
294
{
295
    return '<h'.$niveau.' class="'.$class.'">'.$value.'</h'.$niveau.'>'."\n";
296
}
297
 
298
 
299
// presa_mk_maxtitle($value,$colspan) :
300
// créé une ligne de titre dans un <tr>
301
// Entrée : string $value, int $colspan
302
// ($value : titre ; $colspan : nombre de colonnes fusionnées ; par défaut $colspan = 1)
303
// Sortie (par retour) : string
304
function presa_mk_maxtitle($value, $niveau = '1', $class = 'insMsg')
305
{
306
    return '<h'.$niveau.' class="'.$class.'">'.$value.'</h'.$niveau.'>'."\n";
307
}
308
 
309
 
310
// presa_mk_blkline($colspan=1) :
311
// créé une ligne vide dans un <tr>
312
// Entrée : int $colspan
313
// ($colspan : nombre de colonnes fusionnées ; par défaut $colspan = 1)
314
// Sortie (par retour) : string
315
function presa_mk_blkline($colspan=1)
316
{
317
    return '<tr><td class="texte_tb" colspan="'.$colspan.'">&nbsp;</td></tr>'."\n";
318
}
319
 
320
// count_num_of_reductor($table,$id)
321
// retourne le nombre d'items de la table $tbl['item'] ayant un
322
// type de réducteur $id dans le champ $champ
323
 
324
function count_num_of_reductor($champ, $id)
325
{
326
    global $tbl;
327
    global $retour_biblio;
328
    global $plugin_store;
329
 
330
    if ($retour_biblio['limit_domain'] == 1) {
331
        $from_ajout = ', '.$tbl['domaine_lk'];
332
        $requete_ajout = ' AND B_I_IDITEM = B_DL_IDITEM AND B_DL_IDDOM = 1';
333
    } else {
334
        $from_ajout = '';
335
        $requete_ajout = '';
336
    }
337
 
338
    if ((BB_ARGUMENT_REGROUPEMENT == 'media') && ($champ == 'B_I_TYPLOG')) {
339
        $requete_ajout .= ' AND '.$GLOBALS['query_dom']['phy'];
340
    }
341
 
342
    $requete =  'SELECT COUNT(B_I_IDITEM) AS CPT '.
343
                'FROM '.$tbl['item'].$plugin_store['count_add_table'].$from_ajout.' '.
344
                'WHERE '.$champ.' = '.$id.' '.
345
                $requete_ajout.' '.
346
                $plugin_store['count_add_query'];
347
 
348
    $resultat = $GLOBALS['db_bb']->query($requete);
349
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
350
 
351
    $nbre_ligne = $resultat->numRows();
352
    if ($nbre_ligne != 1) {
353
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete, 'Erreur : '.$nbre_ligne.' résultat(s) au lieu d\'1.'));
354
        $resultat->free();
355
        return -1;
356
    } else {
357
        $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
358
        $nombre = $ligne->CPT;
359
        $resultat->free();
360
        return $nombre;
361
    }
362
}
363
 
364
/**Fonction CreateNavigBiblio() - construit l'interface de navigation de la consultation avancée.
365
*
366
* Créée des boutons pour accéder à certains services spécifiques de Biblio Bota
367
* (listes,modifications...).
368
* Cette fonction utilise les constantes :
369
* - BB_URL_COURANTE_CONSULTATION
370
* - BB_IMG_PRECEDENT
371
* - BB_CLASS_IMG_PRECEDENT
372
*
373
* @param string la destination du bouton (goback ou goto).
374
* @param string le sujet de destination du bouton (coll, fasc ou art).
375
* @param array un tableau contenant les arguments des liens des boutons.
376
* @param string le texte du bouton qui remplacera l'image.
377
* @param bool booléen indiquant si on doit afficher une image ou pas.
378
*
379
* @return array les infos des "voir aussi".
380
*/
381
function CreateNavigBiblio($destination, $sujet, $tableau, $texte = '', $image = 0)
382
{
383
    if (!isset($tableau['pass'])) {
384
        $tableau['pass'] = '';
385
    }
386
    if (!isset($tableau['locusfasc'])) {
387
        $tableau['locusfasc'] = '';
388
    }
389
    $retour = '';
390
 
391
    switch ($destination) {
392
        // GoBack permet de créer des retours aux pages précédentes (fasc->coll, art->fasc)
393
        case 'goback':
394
            switch ($sujet) {
395
                case 'coll':
396
                    // Permet de retourner des fascicules aux collections
397
                    $action = BB_URL_COURANTE_CONSULTATION.'&amp;consultation=avancee&amp;page=1&amp;coll='.$tableau['pass'].$tableau['args'];
398
                    $retour = '<p class="bb_navigation">';
399
                    $retour .= '<a href="'.$action.'">';
400
                    if ($image == 1) {
401
                        $retour .= '<img class="'.BB_CLASS_IMG_PRECEDENT.'" src="'.BB_IMG_PRECEDENT.'" alt="'.$texte.'..."/>';
402
                        $retour .= ' '.$texte;
403
                    } else {
404
                        $retour .= ' '.$texte;
405
                    }
406
                    $retour .= '</a></p>'."\n";
407
                break;
408
                case 'fasc':
409
                    // Permet de retourner des articles aux fascicules
410
                    $action = BB_URL_COURANTE_CONSULTATION.'&amp;consultation=avancee&amp;page=1&amp;fasc='.$tableau['back'].$tableau['args'].
411
                                '&amp;locusfasc='.$tableau['locusfasc'];
412
                    $retour = '<p class="bb_navigation">';
413
                    $retour .= '<a href="'.$action.'">';
414
                    if ($image == 1) {
415
                        $retour .= '<img class="'.BB_CLASS_IMG_PRECEDENT.'" src="'.BB_IMG_PRECEDENT.'" alt="'.$texte.'..."/>';
416
                        $retour .= ' '.$texte;
417
                    } else {
418
                        $retour .= ' '.$texte;
419
                    }
420
                    $retour .= '</a></p>'."\n";
421
                break;
422
            }
423
        break;
424
        // GoTo permet de descendre d'un niveau (coll->fasc->art)
425
        case 'goto':
426
            switch ($sujet) {
427
                case 'fasc':
428
                    // Permet de descendre des coll aux fasc
429
                    $action = BB_URL_COURANTE_CONSULTATION.'&amp;consultation=avancee&amp;page=1&amp;fasc='.$tableau['pass'].$tableau['args'];
430
                    $retour = '<p class="bb_navigation">';
431
                    $retour .= '<a href="'.$action.'">';
432
                    if ($image == 1) {
433
                        $retour .= '<img class="'.BB_CLASS_IMG_PRECEDENT.'" src="'.BB_IMG_PRECEDENT.'" alt="'.$texte.'..."/>';
434
                        $retour .= ' '.$texte;
435
                    } else {
436
                        $retour .= ' '.$texte;
437
                    }
438
                    $retour .= '</a></p>'."\n";
439
                break;
440
                case 'art':
441
                    // Permet de descendre des fasc aux art
442
                    $action = BB_URL_COURANTE_CONSULTATION.'&amp;consultation=avancee&amp;page=1&amp;art='.$tableau['pass'].$tableau['args'].
443
                                '&amp;locusfasc='.$tableau['locusfasc'];
444
                    $retour = ' - ';
445
                    $retour .= '<a href="'.$action.'">';
446
                    if ($image == 1) {
447
                        $retour .= '<img class="'.BB_CLASS_IMG_PRECEDENT.'" src="'.BB_IMG_PRECEDENT.'" alt="'.$texte.'..."/>';
448
                        $retour .= ' '.$texte;
449
                    } else {
450
                        $retour .= ' '.$texte;
451
                    }
452
                    $retour .= '</a>'."\n";
453
                break;
454
            }
455
        break;
456
    }
457
 
458
    return $retour;
459
}
460
 
461
/* +--Fin du code ----------------------------------------------------------------------------------------+
462
*
463
* $Log: not supported by cvs2svn $
464
* Revision 1.6  2005/05/17 10:10:08  jpm
465
* Correction des bogues avant mise en ligne du site v4.
466
*
467
* Revision 1.5  2005/01/04 16:23:47  jpm
468
* Amélioration de la forme.
469
*
470
* Revision 1.4  2004/09/16 12:07:30  jpm
471
* Changement de noms de constantes.
472
*
473
* Revision 1.3  2004/09/14 10:18:17  jpm
474
* Mise en forme et amélioration du code.
475
* Passage au XHTML strict.
476
*
477
* Revision 1.2  2004/09/10 18:44:25  jpm
478
* Ajout de fonction et mise en forme.
479
*
480
* Revision 1.1  2004/09/10 09:45:37  jpm
481
* Ajout des fichiers BiblioBota configurer pour Papyrus.
482
*
483
*
484
* +-- Fin du code ----------------------------------------------------------------------------------------+
485
*/
486
?>