source: pmb4.2/trunk/fuentes/pmb/classes/sel_display.class.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 47.1 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: sel_display.class.php,v 1.11.2.1 2015-10-28 15:21:45 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9require_once("$class_path/marc_table.class.php");
10require_once("$class_path/author.class.php");
11require_once("$class_path/editor.class.php");
12require_once("$class_path/collection.class.php");
13require_once("$class_path/subcollection.class.php");
14require_once("$class_path/serie.class.php");
15require_once("$include_path/notice_authors.inc.php");
16require_once("$include_path/isbn.inc.php");
17
18
19if (!sizeof($tdoc)) $tdoc = new marc_list('doctype');
20if (!count($fonction_auteur)) {
21        $fonction_auteur = new marc_list('function');
22        $fonction_auteur = $fonction_auteur->table;
23}
24
25// définition de la classe d'affichage des monographies en liste pour selecteur
26class sel_mono_display {
27       
28        var $notice_id = 0;             //id notice
29        var $notice = '';               //objet notice
30        var $header = '';               //entete
31        var $result     = '';           //affichage final
32        var $isbd = '';                 //isbd notice
33        var $responsabilites =  array("responsabilites" => array(),"auteurs" => array());  //auteurs
34        var $statut = '' ;              //statut notice
35        var $tit_serie = '';    //titre serie
36        var $tit1 = '';                 //titre 1
37        var $nb_expl = 0;               //nb exemplaires
38
39        var $base_url = '';                                     //URL a associer aux elements cliquables
40        var $action = '';                                       //action a effectuer pour retour des parametres         
41        var $action_values = array();           //tableau des elements à modifier dans l'action
42               
43        var $code = '';                 //isbn ou code EAN de la notice à afficher
44        var $titre = '';                //titre renvoye
45        var $auteur1 = '';              //auteur1 renvoye
46        var $editeur1 = '';             //editeur1 renvoye
47        var $collection = '';   //collection renvoyee
48        var $prix = '0.00';             //prix renvoye
49       
50        var $form_checker = ''; //Affichage d'une case à cocher sur le template
51
52       
53        // constructeur
54        function sel_mono_display($notice_id, $base_url, $form_checker='') {
55
56                if (!$notice_id) return;
57                $this->notice_id=$notice_id;
58                $this->base_url=$base_url;
59                $this->form_checker=$form_checker;
60        }
61       
62
63        //creation formulaire
64        function doForm() {
65       
66                $this->getData();
67                $this->responsabilites = get_notice_authors($this->notice_id) ;
68                $this->doHeader();
69                $this->doContent();
70                $this->finalize();
71        }
72
73       
74        // récupération des valeurs en table
75        function getData() {
76                global $dbh;
77               
78                $q = "SELECT * FROM notices WHERE notice_id='".$this->notice_id."' ";
79                $r = pmb_mysql_query($q, $dbh);
80                if(pmb_mysql_num_rows($r)) {
81                        $this->notice = pmb_mysql_fetch_object($r);
82                }
83                $q = "select count(*) from exemplaires where expl_notice='".$this->notice_id."' ";
84                $r = pmb_mysql_query($q, $dbh);
85                $this->nb_expl = pmb_mysql_result($r,0,0);
86        }
87       
88
89        // creation header
90        function doHeader() {
91               
92                global $dbh, $charset;
93                global $pmb_notice_reduit_format;
94               
95                //gen. statut
96                if ($this->notice->statut) {
97                        $rqt_st = "SELECT class_html , gestion_libelle FROM notice_statut WHERE id_notice_statut='".$this->notice->statut."' ";
98                        $res_st = pmb_mysql_query($rqt_st, $dbh) or die ($rqt_st. " ".pmb_mysql_error()) ;
99                        $class_html = " class='".pmb_mysql_result($res_st, 0, 0)."' ";
100                        if ($this->notice->statut>1) $txt = pmb_mysql_result($res_st, 0, 1) ;
101                        else $txt = "" ;
102                } else {
103                        $class_html = " class='statutnot1' " ;
104                        $txt = "" ;
105                }
106                if ($this->notice->commentaire_gestion) { 
107                        if ($txt) $txt .= ":\r\n".$this->notice->commentaire_gestion ;
108                        else $txt = $this->notice->commentaire_gestion ;
109                }
110                if ($txt) {
111                        $statut = "<small><span $class_html style='margin-right: 3px;'><a href=# onmouseover=\"z=document.getElementById('zoom_statut".$this->notice_id."'); z.style.display=''; \" onmouseout=\"z=document.getElementById('zoom_statut".$this->notice_id."'); z.style.display='none'; \"><img src='./images/spacer.gif' width='10' height='10' /></a></span></small>";
112                        $statut .= "<div id='zoom_statut".$this->notice_id."' style='border: solid 2px #555555; background-color: #FFFFFF; position: absolute; display:none; z-index: 2000;'><b>".nl2br(htmlentities($txt,ENT_QUOTES, $charset))."</b></div>" ;
113                } else $statut = "<small><span $class_html style='margin-right: 3px;'><img src='./images/spacer.gif' width='10' height='10' /></span></small>";
114                $this->statut = $statut ; 
115               
116               
117                //aff. titre série
118                if($this->notice->tparent_id) {
119                        $parent = new serie($this->notice->tparent_id);
120                        $this->tit_serie = $parent->name;
121                        $this->header.= $this->tit_serie;
122                        if($this->notice->tnvol) {
123                                $this->header .= ',&nbsp;'.$this->notice->tnvol;
124                        }
125                }
126               
127                //aff. titre1
128                $this->tit1 = $this->notice->tit1;             
129                $this->tit_serie ? $this->header.= '.&nbsp;'.$this->tit1 : $this->header.= $this->tit1;
130               
131                //aff. auteur1
132                $as = array_search ("0", $this->responsabilites["responsabilites"]);
133                $aut1_libelle = array() ;
134                $lib_auteur='';
135                if ($as!== FALSE && $as!== NULL) {
136                        $auteur_0 = $this->responsabilites["auteurs"][$as] ;
137                        $auteur = new auteur($auteur_0["id"]);
138                        if ($auteur->isbd_entry) {
139                                $lib_auteur=$auteur->isbd_entry;
140                        }
141                } else {
142                        $as = array_keys ($this->responsabilites["responsabilites"], "1" );
143                        for ($i = 0 ; $i < count($as) ; $i++) {
144                                $indice = $as[$i] ;
145                                $auteur_1 = $this->responsabilites["auteurs"][$indice];
146                                $auteur = new auteur($auteur_1["id"]);
147                                $aut1_libelle[]= $auteur->isbd_entry;
148                        }
149                        $auteurs_liste = implode ("; ",$aut1_libelle) ;
150                        if ($auteurs_liste) {
151                                $this->header .= ' / '. $auteurs_liste;
152                                $lib_auteur=$auteurs_liste;
153                        }
154                }
155                if ($lib_auteur!='') {
156                        $this->header .= ' / '. $lib_auteur;
157                }
158               
159                //aff. annee
160                switch ($pmb_notice_reduit_format) {
161                        case '1':
162                                if ($this->notice->year != '') $this->header.=' ('.htmlentities($this->notice->year, ENT_QUOTES, $charset).')';
163                                break;
164                        case "2":
165                                if ($this->notice->year != '') $this->header.=' ('.htmlentities($this->notice->year, ENT_QUOTES, $charset).')';
166                                if ($this->notice->code != '') $this->header.=' / '.htmlentities($this->notice->code, ENT_QUOTES, $charset);
167                                break;
168                        default : 
169                                break;
170                }
171               
172                //renv. code
173                $this->code = $this->notice->code; 
174               
175                //renvoi titre
176                $this->titre = $this->tit_serie;
177                if($this->notice->tnvol) {
178                        $this->titre.= ',&nbsp;'.$this->notice->tnvol;
179                }
180                $this->titre ? $this->titre .= '.&nbsp;'.$this->tit1 : $this->titre = $this->tit1;
181                $this->titre = htmlentities($this->titre,ENT_NOQUOTES,$charset);
182               
183                //renv. auteur1
184                $this->auteur1 = htmlentities($lib_auteur,ENT_NOQUOTES,$charset);
185               
186                //renv. editeur, collection
187                if($this->notice->subcoll_id) {
188                        $collection = new subcollection($this->notice->subcoll_id);
189                        $ed_obj = new editeur($collection->editeur) ;
190                        $this->editeur1 = htmlentities($ed_obj->isbd_entry,ENT_NOQUOTES,$charset);
191                        $this->collection = htmlentities($collection->isbd_entry,ENT_NOQUOTES,$charset);
192                } elseif ($this->notice->coll_id) {
193                        $collection = new collection($this->notice->coll_id);
194                        $ed_obj = new editeur($collection->parent) ;
195                        $this->editeur1 = htmlentities($ed_obj->isbd_entry,ENT_NOQUOTES,$charset);
196                        $this->collection = htmlentities($collection->isbd_entry,ENT_NOQUOTES,$charset);
197                } elseif ($this->notice->ed1_id) {
198                        $editeur = new editeur($this->notice->ed1_id);
199                        $this->editeur1 = htmlentities($editeur->isbd_entry,ENT_NOQUOTES,$charset);
200                }
201                $this->ed_date = htmlentities($this->notice->year,ENT_NOQUOTES,$charset);
202                //renv. prix
203                $this->prix=htmlentities($this->notice->prix,ENT_NOQUOTES,$charset);
204        }
205       
206       
207        // creation contenu
208        function doContent() {
209                global $tdoc;
210                global $fonction_auteur;
211                global $msg;
212       
213                //mention titre
214                $this->isbd = $this->titre;
215                $this->isbd .= ' ['.$tdoc->table[$this->notice->typdoc].']';
216                if($this->notice->tit3) $this->isbd .= "&nbsp;= ".$this->notice->tit3;
217                if($this->notice->tit4) $this->isbd .= "&nbsp;: ".$this->notice->tit4;
218                if($this->notice->tit2) $this->isbd .= "&nbsp;; ".$this->notice->tit2;
219               
220                //mention responsabilité
221                $mention_resp = array() ;
222                $as = array_search ("0", $this->responsabilites["responsabilites"]);
223                if ($as!== FALSE && $as!== NULL) {
224                        $auteur_0 = $this->responsabilites["auteurs"][$as] ;
225                        $auteur = new auteur($auteur_0["id"]);
226                        $mention_resp_lib = $auteur->isbd_entry;
227                        if ($auteur_0["fonction"]) {
228                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_0["fonction"]];
229                        }
230                        $mention_resp[] = $mention_resp_lib ;
231                }
232                $as = array_keys ($this->responsabilites["responsabilites"], "1" );
233                for ($i = 0 ; $i < count($as) ; $i++) {
234                        $indice = $as[$i] ;
235                        $auteur_1 = $this->responsabilites["auteurs"][$indice] ;
236                        $auteur = new auteur($auteur_1["id"]);
237                        $mention_resp_lib = $auteur->isbd_entry;
238                        if ($auteur_1["fonction"]) {
239                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_1["fonction"]];
240                        }
241                        $mention_resp[] = $mention_resp_lib ;
242                }
243                $as = array_keys ($this->responsabilites["responsabilites"], "2" ) ;
244                for ($i = 0 ; $i < count($as) ; $i++) {
245                        $indice = $as[$i] ;
246                        $auteur_2 = $this->responsabilites["auteurs"][$indice] ;
247                        $auteur = new auteur($auteur_2["id"]);
248                        $mention_resp_lib = $auteur->isbd_entry;
249                        if ($auteur_2["fonction"]) {
250                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_2["fonction"]];
251                        }
252                        $mention_resp[] = $mention_resp_lib ;
253                }
254                $libelle_mention_resp = implode ("; ",$mention_resp) ;
255                if($libelle_mention_resp) {
256                                $this->isbd .= "&nbsp;/ $libelle_mention_resp" ;
257                }                       
258       
259                // mention edition
260                if($this->notice->mention_edition) {
261                        $this->isbd .= ".&nbsp;-&nbsp;".$this->notice->mention_edition;
262                }
263               
264                // zone de l'adresse
265                // on récupère la collection au passage, si besoin est
266                if($this->notice->subcoll_id) {
267                        $collection = new subcollection($this->notice->subcoll_id);
268                        $ed_obj = new editeur($collection->editeur) ;
269                        $editeurs .= $ed_obj->isbd_entry; 
270                        $collections = $collection->isbd_entry;
271                } elseif ($this->notice->coll_id) {
272                        $collection = new collection($this->notice->coll_id);
273                        $ed_obj = new editeur($collection->parent) ;
274                                $editeurs .= $ed_obj->isbd_entry; 
275                                $collections = $collection->isbd_entry;
276                } elseif ($this->notice->ed1_id) {
277                        $editeur = new editeur($this->notice->ed1_id);
278                        $editeurs .= $editeur->isbd_entry;
279                }
280                if($this->notice->ed2_id) {
281                        $editeur = new editeur($this->notice->ed2_id);
282                        $ed_isbd=$editeur->isbd_entry;
283                        $editeurs ? $editeurs .= '&nbsp;; '.$ed_isbd : $editeurs = $ed_isbd;
284                }
285                if($this->notice->year) {
286                        $editeurs ? $editeurs .= ', '.$this->notice->year : $editeurs = $this->notice->year;
287                }
288                if ($editeurs) {
289                        $this->isbd .= ".&nbsp;-&nbsp;$editeurs";
290                }
291               
292                // zone de la collation
293                if($this->notice->npages) {
294                        $collation = $this->notice->npages;
295                }
296                if($this->notice->ill) {
297                        $collation .= ': '.$this->notice->ill;
298                }
299                if($this->notice->size) {
300                        $collation .= '; '.$this->notice->size;
301                }
302                if($this->notice->accomp) {
303                        $collation .= '+ '.$this->notice->accomp;
304                }
305                if($collation) {
306                        $this->isbd .= ".&nbsp;-&nbsp;$collation";
307                }
308                if($collections) {
309                        if($this->notice->nocoll) {
310                                $collections .= '; '.$this->notice->nocoll;
311                        }
312                        $this->isbd .= ".&nbsp;-&nbsp;($collections)".' ';
313                }
314
315                if(substr(trim($this->isbd), -1) != "."){
316                        $this->isbd .= '.';
317                }
318                // ISBN ou NO. commercial
319                if($this->notice->code) {
320                        if(isISBN($this->notice->code)) {
321                                $zoneNote = 'ISBN ';
322                        }
323                        $zoneNote .= $this->notice->code;
324                }
325
326                //prix code
327                if($this->notice->prix) {
328                        if($this->notice->code) {
329                                $zoneNote .= '&nbsp;: '.$this->notice->prix;
330                        } else { 
331                                if ($zoneNote) { 
332                                        $zoneNote .= '&nbsp; '.$this->notice->prix;
333                                } else {
334                                        $zoneNote = $this->notice->prix;
335                                }
336                        }
337                }
338                if($zoneNote) {
339                        $this->isbd .= "<br /><br />$zoneNote.";
340                }
341               
342                //Indexation décimale
343                if($this->notice->indexint) {
344                        $indexint = new indexint($this->notice->indexint);
345                        $indexint_isbd=$indexint->display;
346                        $this->isbd .= "<br /><b>${msg['indexint_catal_title']}</b>&nbsp;: ".$indexint_isbd;
347                }
348        }       
349
350       
351        //génération du template javascript
352        function finalize() {
353               
354                global $msg;
355               
356                $javascript_template ="
357                                                <div id='el_!!id!!_Parent' class='notice-parent'><span class='acq_sel_display_middle'>";
358                if(trim($this->form_checker)){
359                        $javascript_template.="<input type='checkbox' name='".$this->form_checker."[]' id='".$this->form_checker."[!!id!!]' value='!!id!!'";
360                        if ($this->action) {
361                                if (count($this->action_values)) {
362                                        foreach($this->action_values as $v) {
363                                                $javascript_template.=" attr_".$v."=\"".htmlentities($this->$v,ENT_QUOTES,$charset)."\"";
364                                        }
365                                }
366                        }
367                        $javascript_template.=">";
368                }
369                $javascript_template.="
370                                                        <img src='./images/plus.gif' name='imEx' id='el_!!id!!_Img' title='".$msg['admin_param_detail']."' onClick=\"expandBase('el_!!id!!_', true); return false;\" />
371                                                        </span><span class='notice-heada'>!!header!!</span>
372                                                        <div id='el_!!id!!_Child' class='notice-child' style='width:inherit;display:none;' >
373                                                                !!isbd!!
374                                                        </div>
375                                                </div>";
376
377                if ($this->action) {
378                        $this->header = str_replace('!!display!!', $this->header, $this->action);
379                        $this->header = $this->statut.$this->header;
380                        $this->header = str_replace('!!id!!', $this->notice_id, $this->header);
381                        if (count($this->action_values)) {
382                                foreach($this->action_values as $v) {
383                                        $this->header = str_replace("!!$v!!", htmlentities(addslashes($this->$v),ENT_QUOTES,$charset), $this->header);
384                                }
385                        }
386                }
387               
388                $this->result = str_replace('!!id!!', $this->notice_id, $javascript_template);
389                $this->result = str_replace('!!header!!', $this->header, $this->result);
390               
391                $this->result = str_replace('!!isbd!!', $this->isbd, $this->result);           
392        }
393}
394
395
396
397// définition de la classe d'affichage des périodiques en liste pour selecteur
398class sel_serial_display {
399
400        var $notice_id = 0;                             // id de la notice à afficher   
401        var $notice;                                    // objet notice (tel que fetché dans la table 'notices'
402        var $header     = '';                           // chaine accueillant le chapeau de notice (peut-être cliquable)
403
404        var $tit1 = '';                                 // valeur du titre 1
405        var $result = '';                               // affichage final
406        var $level = 1;                                 // niveau d'affichage
407        var $isbd = '';                                 // isbd de la notice
408        var $nb_bull = 0;                               // nombre de bulletins
409        var $nb_expl = 0;                               // nombre d'exemplaires
410        var $nb_art = 0;                                // nombre d'articles
411        var $responsabilites = array("responsabilites" => array(),"auteurs" => array());  // les auteurs
412        var $show_statut = 1;
413        var $aff_statut = '' ;                  // carré de couleur pour signaler le statut de la notice
414
415        var $base_url = '';                             // URL à associer aux éléments cliquables
416        var $action = '';                               // URL à associer aux notices           
417        var $action_values = array();   // tableau des elements à modifier dans l'action
418
419       
420        // constructeur
421        function sel_serial_display ($notice_id, $base_url) {
422
423                if (!$notice_id) return;
424                $this->notice_id = $notice_id;
425                $this->base_url = $base_url;
426               
427        }
428
429        //creation formulaire
430        function doForm() {
431                       
432                $this->getData();
433                $this->responsabilites = get_notice_authors($this->notice_id) ;
434                $this->doHeader();
435                $this->initJavascript();
436                $this->doContent();
437                $this->finalize();
438                return;
439        }
440
441               
442        // récupération des valeurs en table
443        function getData() {
444                global $dbh;
445               
446                $q = "SELECT * FROM notices WHERE notice_id=".$this->notice_id;
447                $r = pmb_mysql_query($q, $dbh);
448                if (pmb_mysql_num_rows($r)) {
449                        $this->notice = pmb_mysql_fetch_object($r);
450                }
451        }
452       
453       
454        // creation header
455        function doHeader() {
456               
457                global $dbh, $charset;
458               
459                if ($this->notice->statut) {
460                        $rqt_st = "SELECT class_html , gestion_libelle FROM notice_statut WHERE id_notice_statut='".$this->notice->statut."' ";
461                        $res_st = pmb_mysql_query($rqt_st, $dbh);
462                        $class_html = " class='".pmb_mysql_result($res_st, 0, 0)."' ";
463                        if ($this->notice->statut>1) {
464                                $txt = pmb_mysql_result($res_st, 0, 1);
465                        } else {
466                                $txt = '';
467                        }
468                } else {
469                        $class_html = " class='statutnot1' " ;
470                        $txt = '' ;
471                }
472                if ($this->notice->commentaire_gestion) { 
473                        if ($txt) {
474                                $txt .= ":\r\n".$this->notice->commentaire_gestion ;
475                        } else {
476                                $txt = $this->notice->commentaire_gestion ;
477                        }
478                }
479                if ($txt) {
480                        $statut = "<small><span $class_html style='margin-right: 3px;'><a href=# onmouseover=\"z=document.getElementById('zoom_statut".$this->notice_id."'); z.style.display=''; \" onmouseout=\"z=document.getElementById('zoom_statut".$this->notice_id."'); z.style.display='none'; \"><img src='./images/spacer.gif' width='10' height='10' /></a></span></small>";
481                        $statut .= "<div id='zoom_statut".$this->notice_id."' style='border: solid 2px #555555; background-color: #FFFFFF; position: absolute; display:none; z-index: 2000;'><b>".nl2br(htmlentities($txt,ENT_QUOTES, $charset))."</b></div>" ;
482                } else {
483                        $statut = "<small><span $class_html style='margin-right: 3px;'><img src='./images/spacer.gif' width='10' height='10' /></span></small>";
484                }
485                $this->aff_statut = $statut ; 
486               
487                $this->header = htmlentities($this->notice->tit1,ENT_QUOTES, $charset);
488       
489                //$this->responsabilites
490                $aut1_libelle = array() ;
491                $lib_auteur='';
492                $as = array_search ("0", $this->responsabilites["responsabilites"]) ;
493                if ($as!== FALSE && $as!== NULL) {
494                        $auteur_0 = $this->responsabilites["auteurs"][$as] ;
495                        $auteur = new auteur($auteur_0["id"]);
496                        if ($auteur->isbd_entry) {
497                                $lib_auteur=$auteur->isbd_entry;
498                        }
499                } else {
500                        $as = array_keys ($this->responsabilites["responsabilites"], "1" ) ;
501                        for ($i = 0 ; $i < count($as) ; $i++) {
502                                $indice = $as[$i] ;
503                                $auteur_1 = $this->responsabilites["auteurs"][$indice] ;
504                                $auteur = new auteur($auteur_1["id"]);
505                                $aut1_libelle[]= $auteur->isbd_entry;
506                        }
507                        $auteurs_liste = implode ("; ",$aut1_libelle) ;
508                        if ($auteurs_liste) {
509                                $this->header .= ' / '. $auteurs_liste ;
510                                $lib_auteur=$auteurs_liste;
511                        }
512                }
513                if ($lib_auteur!='') {
514                        $this->header .= ' / '. $lib_auteur;
515                }
516               
517                if ($this->action) {
518                        $this->header = str_replace('!!display!!', $this->header, $this->action);
519                        $this->header = str_replace('!!aut_id!!', $this->notice_id, $this->header);
520                       
521                        if (count($this->action_values)) {
522                                foreach($this->action_values as $v) {
523                                        $this->header = str_replace("!!$v!!", addslashes($this->$v), $this->header);
524                                }
525                        }
526                }
527               
528                if ($this->show_statut) {
529                        $this->header = $this->aff_statut.$this->header ;
530                }
531        }
532
533       
534        // génération du template javascript
535        function initJavascript() {
536                global $msg;
537               
538                $javascript_template ="
539                                                <div id='el_!!id!!_Parent' class='notice-parent'>
540                                                        <img src='./images/plus.gif' class='img_plus' name='imEx' id='el_!!id!!_Img' title='".$msg['admin_param_detail']."' onClick=\"expandBase('el_!!id!!_', true); return false;\" />
541                                                        <span class='notice-heada'>!!header!!</span>
542                                                        <div id='el_!!id!!_Child' class='notice-child' style='width:inherit;display:none;' >
543                                                                !!serial_type!! !!isbd!!
544                                                        </div>
545                                                </div>";
546                $this->result = str_replace('!!id!!', $this->notice_id, $javascript_template);
547                $this->result = str_replace('!!header!!', $this->header, $this->result);               
548        }
549
550       
551        // creation contenu
552        function doContent() {
553                global $dbh, $msg;
554                global $fonction_auteur;
555                global $pmb_etat_collections_localise, $pmb_droits_explr_localises, $explr_visible_mod;
556               
557                $this->isbd = $this->notice->tit1;
558               
559                // constitution de la mention de titre
560                $tit3 = $this->notice->tit3;
561                $tit4 = $this->notice->tit4;
562                if($tit3) $this->isbd .= "&nbsp;= $tit3";
563                if($tit4) $this->isbd .= "&nbsp;: $tit4";
564       
565                // constitution de la mention de responsabilité
566                //$this->responsabilites
567                $mention_resp = array() ;
568                $as = array_search ("0", $this->responsabilites["responsabilites"]) ;
569                if ($as!== FALSE && $as!== NULL) {
570                        $auteur_0 = $this->responsabilites["auteurs"][$as] ;
571                        $auteur = new auteur($auteur_0["id"]);
572                        $mention_resp_lib = $auteur->isbd_entry;
573                        if ($auteur_0["fonction"]) {
574                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_0["fonction"]];
575                        }
576                        $mention_resp[] = $mention_resp_lib ;
577                }
578               
579                $as = array_keys ($this->responsabilites["responsabilites"], "1" ) ;
580                for ($i = 0 ; $i < count($as) ; $i++) {
581                        $indice = $as[$i] ;
582                        $auteur_1 = $this->responsabilites["auteurs"][$indice] ;
583                        $auteur = new auteur($auteur_1["id"]);
584                        $mention_resp_lib = $auteur->isbd_entry;
585                        if ($auteur_1["fonction"]) {
586                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_1["fonction"]];
587                        }
588                        $mention_resp[] = $mention_resp_lib ;
589                }
590               
591                $as = array_keys ($this->responsabilites["responsabilites"], "2" ) ;
592                for ($i = 0 ; $i < count($as) ; $i++) {
593                        $indice = $as[$i] ;
594                        $auteur_2 = $this->responsabilites["auteurs"][$indice] ;
595                        $auteur = new auteur($auteur_2["id"]);
596                        $mention_resp_lib = $auteur->isbd_entry;
597                        if ($auteur_2["fonction"]) {
598                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_2["fonction"]];
599                        }
600                        $mention_resp[] = $mention_resp_lib ;
601                }
602                       
603                $libelle_mention_resp = implode ("; ",$mention_resp) ;
604                if($libelle_mention_resp) {
605                        $this->isbd .= "&nbsp;/ ". $libelle_mention_resp ." " ;
606                }
607       
608                // zone de l'adresse
609                if($this->notice->ed1_id) {
610                        $editeur = new editeur($this->notice->ed1_id);
611                        $editeurs .= $editeur->isbd_entry;
612                }
613                if($this->notice->ed2_id) {
614                        $editeur = new editeur($this->notice->ed2_id);
615                        $ed_isbd=$editeur->isbd_entry; 
616                        if($editeurs) {
617                                $editeurs .= '&nbsp;; '.$ed_isbd;
618                        } else {
619                                $editeurs .= $ed_isbd;
620                        }
621                }
622
623                if($this->notice->year) 
624                        $editeurs ? $editeurs .= ', '.$this->notice->year : $editeurs = $this->notice->year;
625                       
626                if($editeurs) {
627                        $this->isbd .= ".&nbsp;-&nbsp;$editeurs";
628                }
629
630                //code (ISSN,...)
631                if ($this->notice->code) $this->isbd .="<br /><b>${msg[165]}</b>&nbsp;: ".$this->notice->code;
632
633                //Indexation décimale
634                if($this->notice->indexint) {
635                        $indexint = new indexint($this->notice->indexint);
636                        $indexint_isbd=$indexint->display;
637                        $this->isbd .= "<br /><b>${msg['indexint_catal_title']}</b>&nbsp;: ".$indexint_isbd;
638                }
639                                       
640                // Si notice-mère alors on compte le nombre de numéros (bulletins)
641                if($this->notice->niveau_biblio=="s") {
642                        $requete = "SELECT * FROM bulletins WHERE bulletin_notice=".$this->notice_id;
643                        $Query = pmb_mysql_query($requete, $dbh);
644                        $this->nb_bull=pmb_mysql_num_rows($Query);
645                        while (($row = pmb_mysql_fetch_array($Query))) {
646                                $requete2 = "SELECT count( * )  AS nb_art FROM  analysis WHERE analysis_bulletin =".$row['bulletin_id'];
647                                $Query2 = pmb_mysql_query($requete2, $dbh);
648                                $analysis_array=pmb_mysql_fetch_array($Query2);
649                                $this->nb_art+=$analysis_array['nb_art'];
650                                $requete3 = "SELECT count( expL_id ) AS nb_expl FROM  exemplaires WHERE expl_bulletin =".$row['bulletin_id'];
651                                $Query3 = pmb_mysql_query($requete3, $dbh);
652                                $expl_array=pmb_mysql_fetch_array($Query3);
653                                $this->nb_expl+=$expl_array['nb_expl'];                 
654                        }
655                               
656                        // Cas général : au moins un bulletin
657                        if (pmb_mysql_num_rows($Query)>0)
658                                {$this->isbd .="<br /><br />\n
659                                <b>".$msg["serial_bulletinage_etat"]."</b>
660                                <table border='0' class='expl-list'>
661                                <tr><td><strong>$this->nb_bull</strong> ".$msg["serial_nb_bulletin"]."
662                                <strong>$this->nb_expl</strong> ".$msg["bulletin_nb_ex"]."     
663                                <strong>$this->nb_art</strong> ".$msg["serial_nb_articles"]."   
664                                </td>
665                                </tr></table>";
666                                                                       
667                        } else { // 0 bulletin
668                                $this->isbd .="<br /><br />\n
669                                <b>".$msg["serial_bulletinage_etat"]."</b>
670                                <table border='0' class='expl-list'>
671                                <tr><td><strong>$this->nb_bull</strong>
672                                ".$msg["serial_nb_bulletin"]." : <strong>";
673                                $this->isbd .=$msg["bull_no_expl"];
674                                $this->isbd .="</strong></td>
675                                </tr></table>";
676                        }
677                       
678                        //état des collections
679                        if ($pmb_etat_collections_localise&&$pmb_droits_explr_localises&&$explr_visible_mod) {
680                                $restrict_location=" and location_id in (".$explr_visible_mod.") and idlocation=location_id";   
681                                $table_location=",docs_location";
682                                $select_location=",location_libelle";
683                        } else {
684                                $restrict_location=" group by id_serial";
685                        }
686                        $rqt="select state_collections$select_location from collections_state$table_location where id_serial=".$this->notice_id.$restrict_location;
687                        $execute_query=pmb_mysql_query($rqt);
688                        if ($execute_query) {
689                                if (pmb_mysql_num_rows($execute_query)) {
690                                        $bool=false;
691                                        $affichage="<br /><strong>".$msg["4001"]."</strong><br />";
692                                        while (($r=pmb_mysql_fetch_object($execute_query))) {
693                                                if ($r->state_collections) {
694                                                        if ($r->location_libelle) $affichage .= "<strong>".$r->location_libelle."</strong> : ";
695                                                        $affichage .= $r->state_collections."<br />\n";
696                                                        $bool=true;
697                                                }       
698                                        }
699                                        if ($bool==true) $this->isbd .= $affichage;
700                                }
701                        }
702                }
703                return;
704        }       
705       
706       
707        // finalisation du résultat
708        function finalize() {
709               
710                global $msg ;
711               
712                $this->result = str_replace('!!isbd!!', $this->isbd, $this->result);
713                $this->result = str_replace('!!serial_type!!', "<span class='fond-mere'>[".$msg['isbd_type_perio']."]</span>", $this->result);
714        }
715       
716}
717
718
719
720//définition de la classe d'affichage des bulletins en liste pour selecteur
721class sel_bulletin_display {
722
723        var $result = '';
724        var $bulletin_id=0;
725        var $bulletin = '';
726        var $nb_expl=0;
727       
728        var $base_url = '';                             // URL à associer aux éléments cliquables
729        var $action = '';                               // URL à associer aux notices           
730        var $action_values = array();   // tableau des elements à modifier dans l'action
731       
732        var $titre = '';                                //titre renvoye
733        var $editeur1 = '';                             //editeur 1 renvoye
734        var $numero = '';                               //numero renvoye
735        var $aff_date = '';                             //date renvoyee
736        var $prix = '0.00';                             //prix renvoye
737        var $code = '';                                 //code renvoye
738       
739        var $form_checker = ''; //Affichage d'une case à cocher sur le template
740       
741        //constructeur
742        function sel_bulletin_display($bulletin_id, $base_url, $form_checker='') {
743               
744                if(!$bulletin_id) return;
745                $this->bulletin_id=$bulletin_id;
746                $this->base_url=$base_url;
747                $this->form_checker=$form_checker;
748        }
749       
750        function doForm() {
751               
752                global $charset;
753               
754                $this->getData();
755               
756                $this->titre = $this->bulletin->tit1;
757                if ($this->bulletin->ed1_id) {
758                        $ed1= new editeur($this->bulletin->ed1_id);
759                        $this->editeur1 = $ed1->isbd_entry;
760                }
761                if ($this->bulletin->bulletin_numero!=='') {
762                        $this->numero = $this->bulletin->bulletin_numero;
763                }
764                if ($this->bulletin->libelle_periode) {
765                        $this->aff_date = "(".$this->bulletin->libelle_periode.")";
766                }
767                if ($this->bulletin->date_date!='0000-00-00') {
768                        $this->aff_date.= " [".$this->bulletin->aff_date_date."]";
769                }       
770                if ($this->bulletin->bulletin_cb!='') {
771                        $this->code = $this->bulletin->bulletin_cb;
772                }
773               
774                $aff = $this->titre;                                   
775                if($this->numero) {
776                        $aff.= '. '.$this->numero;
777                }
778                $aff.= ' '.$this->aff_date;                     
779                               
780                $aff = htmlentities($aff, ENT_QUOTES, $charset);
781                if ($this->action) {
782                        $aff= str_replace('!!display!!', "<b>$aff</b>", $this->action);
783                        if (count($this->action_values)) {
784                                foreach($this->action_values as $v) {
785                                        $aff = str_replace("!!$v!!", addslashes($this->$v), $aff);
786                                }
787                        }
788                }       
789                if(trim($this->form_checker)){
790                        $tmpAff ="<span class='acq_sel_display_middle'>
791                                        <input type='checkbox' name='".$this->form_checker."[]' id='".$this->form_checker."[".$this->bulletin_id."]' value='".$this->bulletin_id."'";
792                        if ($this->action) {
793                                if (count($this->action_values)) {
794                                        foreach($this->action_values as $v) {
795                                                $tmpAff.=" attr_".$v."=\"".htmlentities($this->$v,ENT_QUOTES,$charset)."\"";
796                                        }
797                                }
798                        }
799                        $this->result=$tmpAff.">".$aff."</span>";
800                }else{
801                        $this->result = $aff;
802                }                                       
803        }
804       
805        // récupération des valeurs en table
806        function getData() {
807               
808                global $dbh, $msg;
809               
810                $q = "SELECT notices.tit1, notices.ed1_id, notices.code, bulletins.*, date_format(bulletins.date_date, '".$msg['format_date']."') as aff_date_date FROM bulletins join notices on bulletin_notice=notice_id WHERE bulletin_id='".$this->bulletin_id."' ";
811                $r = pmb_mysql_query($q, $dbh);
812                if(pmb_mysql_num_rows($r)) {
813                        $this->bulletin = pmb_mysql_fetch_object($r);
814                }
815       
816                $q = "select count(*) from exemplaires where expl_bulletin='".$this->bulletin_id."' ";
817                $r = pmb_mysql_query($q, $dbh);
818                $this->nb_expl = pmb_mysql_result($r,0,0);
819
820        }
821}
822
823
824       
825//définition de la classe d'affichage des abonnements en liste pour selecteur
826class sel_abt_display {
827
828        var $abt_id=0;                                  //id abonnement
829        var $abt = '';                                  //objet abonnement
830        var $header = '';                               //entete
831        var $result = '';                               // affichage final
832        var $isbd = '';                                 // isbd notice
833        var $responsabilites =  array("responsabilites" => array(),"auteurs" => array());  //auteurs
834        var $aff_date_echeance = '';    //date echeance abt actuel     
835       
836        var $base_url = '';                             // URL à associer aux éléments cliquables
837        var $action = '';                               // URL à associer aux notices           
838        var $action_values = array();   // tableau des elements à modifier dans l'action
839       
840        var $code = '';                                 //code renvoye
841        var $titre = '';                                //titre renvoye
842        var $editeur1 = '';                             //editeur 1 renvoye
843        var $periodicite = '';                  //periodicite
844        var $duree = '';                                //duree abt
845        var $prix = '0.00';                             //prix renvoye
846        var $aff_date_debut = '';               //date debut abt renvoyee       
847        var $abt_name = '';             //nom abonnement renvoyee       
848       
849        var $form_checker = ''; //Affichage d'une case à cocher sur le template
850
851//TODO
852        var $nb_num = 0;                                //nb numeros
853       
854       
855        //constructeur
856        function sel_abt_display($abt_id, $base_url, $form_checker='') {
857
858                if(!$abt_id) return;
859                $this->abt_id=$abt_id;
860                $this->base_url=$base_url;
861                $this->form_checker=$form_checker;
862        }
863       
864       
865        //creation formulaire
866        function doForm() {
867               
868                $this->getData();
869                $this->responsabilites = get_notice_authors($this->abt->num_notice) ;
870                $this->doHeader();
871                $this->doContent();
872                $this->finalize();
873        }               
874
875       
876        // récupération des valeurs en table
877        function getData() {
878
879                global $dbh;
880               
881                $q = "SELECT abts_abts.*, ";
882                $q.= "notices.tit1, notices.tit3, notices.tit4, notices.ed1_id, notices.ed2_id, notices.year, notices.code, notices.prix, ";
883                $q.= "abts_modeles.num_periodicite, abts_periodicites.libelle, ";
884                $q.= "docs_location.location_libelle ";
885                $q.= "FROM abts_abts ";
886                $q.= "join abts_abts_modeles on abts_abts.abt_id=abts_abts_modeles.abt_id ";
887                $q.= "join abts_modeles on abts_abts_modeles.modele_id=abts_modeles.modele_id ";
888                $q.= "left join abts_periodicites on abts_modeles.num_periodicite=abts_periodicites.periodicite_id ";
889                $q.= "join notices on abts_abts.num_notice=notices.notice_id ";
890                $q.= "join docs_location on abts_abts.location_id=docs_location.idlocation ";
891                $q.= "where abts_abts.abt_id='".$this->abt_id."' ";
892                $r = pmb_mysql_query($q, $dbh); 
893                $this->abt = pmb_mysql_fetch_object($r);
894        }
895       
896       
897        // creation header
898        function doHeader() {
899               
900                global $dbh, $msg, $charset;
901               
902                //aff. nom pério
903                $this->header = htmlentities($this->abt->tit1, ENT_QUOTES, $charset);
904               
905                //aff. nom abonnement
906                $this->header.= "&nbsp;/&nbsp;".htmlentities($this->abt->abt_name, ENT_QUOTES, $charset);
907               
908                //aff. localisation
909                $this->header.= "&nbsp;/&nbsp;".htmlentities($this->abt->location_libelle, ENT_QUOTES, $charset);
910               
911                //aff. periodicite
912                if ($this->abt->num_periodicite) {
913                        $this->header.= "&nbsp;(".htmlentities($this->abt->libelle, ENT_QUOTES, $charset);
914                } else {
915                        $this->header.= "&nbsp;(".htmlentities($msg['abonnements_periodicite_manuel'], ENT_QUOTES, $charset);
916                }
917               
918                //aff. duree
919                $this->header.= "&nbsp;-&nbsp;".$this->abt->duree_abonnement."&nbsp;".htmlentities($msg['abonnements_periodicite_unite_mois'], ENT_QUOTES, $charset).")";
920
921                //aff. date echeance
922                $this->aff_date_echeance = format_date($this->abt->date_fin); 
923               
924                //renv. nom abonnement
925                $this->abt_name.= $this->abt->abt_name;
926
927                //renv. code
928                $this->code=$this->abt->code;
929               
930                //renv. titre
931                $this->titre = $this->abt->tit1;
932                if ($this->abt->tit3) $this->titre.= "&nbsp;= ".$this->abt->tit3;
933                if ($this->abt->tit4) $this->titre.= "&nbsp;: ".$this->abt->tit4;
934               
935                //renv. editeur1
936                if ($this->abt->ed1_id) {
937                        $editeur = new editeur($this->abt->ed1_id);
938                        $this->editeur1 = $editeur->isbd_entry;
939                }
940               
941                //renv. periodicite
942                if ($this->abt->num_periodicite) {
943                        $this->periodicite=$this->abt->libelle;
944                }
945
946                //renv. duree
947                $this->duree = $this->abt->duree_abonnement;
948               
949                //renv. date debut abt
950                $q = "select date_add('".$this->abt->date_fin."', interval 1 day) as date_debut, ";
951                $q.= " date_add('".$this->abt->date_fin."', interval ".$this->duree." month) as date_fin ";
952                $r = pmb_mysql_query($q, $dbh);
953                $obj = pmb_mysql_fetch_object($r); 
954                $this->aff_date_debut = format_date($obj->date_debut);
955               
956//TODO A revoir, car le prix n'est pas accessible sur les notices de perio
957                //renv. prix
958                if ($this->abt->prix!=='') $this->prix=$this->abt->prix;
959               
960        }
961       
962       
963        // creation contenu
964        function doContent() {
965               
966                global $msg;
967                global $fonction_auteur;
968               
969                //mention titre
970                $this->isbd = $this->titre;
971               
972                //mention responsabilité
973                $mention_resp = array() ;
974                $as = array_search ("0", $this->responsabilites["responsabilites"]) ;
975                if ($as!== FALSE && $as!== NULL) {
976                        $auteur_0 = $this->responsabilites["auteurs"][$as] ;
977                        $auteur = new auteur($auteur_0["id"]);
978                        $mention_resp_lib = $auteur->isbd_entry;
979                        if ($auteur_0["fonction"]) {
980                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_0["fonction"]];
981                        }
982                        $mention_resp[] = $mention_resp_lib ;
983                }
984                $as = array_keys ($this->responsabilites["responsabilites"], "1" ) ;
985                for ($i = 0 ; $i < count($as) ; $i++) {
986                        $indice = $as[$i] ;
987                        $auteur_1 = $this->responsabilites["auteurs"][$indice] ;
988                        $auteur = new auteur($auteur_1["id"]);
989                        $mention_resp_lib = $auteur->isbd_entry;
990                        if ($auteur_1["fonction"]) {
991                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_1["fonction"]];
992                        }
993                        $mention_resp[] = $mention_resp_lib ;
994                }
995                $as = array_keys ($this->responsabilites["responsabilites"], "2" ) ;
996                for ($i = 0 ; $i < count($as) ; $i++) {
997                        $indice = $as[$i] ;
998                        $auteur_2 = $this->responsabilites["auteurs"][$indice] ;
999                        $auteur = new auteur($auteur_2["id"]);
1000                        $mention_resp_lib = $auteur->isbd_entry;
1001                        if ($auteur_2["fonction"]) {
1002                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_2["fonction"]];
1003                        }
1004                        $mention_resp[] = $mention_resp_lib ;
1005                }
1006                $libelle_mention_resp = implode ("; ",$mention_resp) ;
1007                if($libelle_mention_resp) {
1008                        $this->isbd .= "&nbsp;/ ". $libelle_mention_resp ." " ;
1009                }
1010       
1011                // zone de l'adresse
1012                if($this->abt->ed1_id) {
1013                        $editeur = new editeur($this->abt->ed1_id);
1014                        $ed_isbd .= $editeur->isbd_entry;
1015                }
1016                if($this->abt->year) {
1017                        $ed_isbd ? $ed_isbd .= ', '.$this->abt->year : $ed_isbd = $this->abt->year;
1018                }       
1019                if($ed_isbd) {
1020                        $this->isbd .= ".&nbsp;-&nbsp;$ed_isbd";
1021                }
1022
1023                //code (ISSN,...)
1024                if ($this->abt->code) $this->isbd .="<br /><b>${msg[165]}</b>&nbsp;: ".$this->abt->code;
1025        }       
1026       
1027       
1028        //génération du template javascript
1029        function finalize() {
1030               
1031                global $msg;
1032               
1033                $javascript_template ="
1034                        <div id='el_!!id!!_Parent' class='notice-parent'><span class='acq_sel_display_middle'>";
1035                if(trim($this->form_checker)){
1036                        $javascript_template.="<input type='checkbox' name='".$this->form_checker."[]' id='".$this->form_checker."[!!id!!]' value='!!id!!'";
1037                        if ($this->action) {
1038                                if (count($this->action_values)) {
1039                                        foreach($this->action_values as $v) {
1040                                                $javascript_template.=" attr_".$v."=\"".htmlentities($this->$v,ENT_QUOTES,$charset)."\"";
1041                                        }
1042                                }
1043                        }
1044                        $javascript_template.=">";
1045                }
1046                $javascript_template.="
1047                                <img src='./images/plus.gif' name='imEx' id='el_!!id!!_Img' title='".$msg['admin_param_detail']."' onClick=\"expandBase('el_!!id!!_', true); return false;\" />
1048                                </span><span class='notice-heada'>!!header!!</span>
1049                                <div id='el_!!id!!_Child' class='notice-child' style='width:inherit;display:none;' >
1050                                        !!serial_type!! !!isbd!!
1051                                </div>
1052                        </div>";
1053               
1054                if ($this->action) {
1055                        $this->header = str_replace('!!display!!', $this->header, $this->action);
1056                        $this->header = str_replace('!!id!!', $this->abt_id, $this->header);
1057                       
1058                        if (count($this->action_values)) {
1059                                foreach($this->action_values as $v) {
1060                                        $this->header = str_replace("!!$v!!", htmlentities(addslashes($this->$v),ENT_QUOTES,$charset), $this->header);
1061                                }
1062                        }
1063                }       
1064               
1065                $this->result = str_replace('!!id!!', $this->abt_id, $javascript_template);
1066                $this->result = str_replace('!!header!!', $this->header, $this->result);               
1067
1068                $this->result = str_replace('!!isbd!!', $this->isbd, $this->result);
1069                $this->result = str_replace('!!serial_type!!', "<span class='fond-mere'>[".$msg['isbd_type_perio']."]</span>", $this->result);
1070        }       
1071}       
1072
1073
1074require_once("$class_path/frais.class.php");
1075require_once($class_path.'/tva_achats.class.php');
1076//Classe d'affichage des frais dans un selecteur
1077class sel_frais_display extends frais {
1078       
1079        var $result='';
1080        var $lib_montant='';
1081        var $taux_tva = '0.00';
1082       
1083        var $base_url = '';                     //URL a associer aux elements cliquables
1084        var $action = '';
1085        var $action_values = array();
1086       
1087        var $form_checker = ''; //Affichage d'une case à cocher sur le template
1088       
1089        //Constructeur. 
1090        function sel_frais_display($id_frais, $base_url, $form_checker='') {
1091               
1092                if (!$id_frais) return;
1093                parent::frais($id_frais);
1094                $this->base_url=$base_url;
1095                $this->form_checker=$form_checker;
1096        }
1097       
1098        function doForm(){
1099               
1100                global $charset;
1101                global $acquisition_gestion_tva, $pmb_gestion_devise;
1102               
1103                if(!$this->id_frais) return;
1104               
1105                if ($acquisition_gestion_tva && $this->num_tva_achat) {
1106                        $tva = new tva_achats($this->num_tva_achat);
1107                        $this->taux_tva = $tva->taux_tva;
1108                }
1109               
1110                $aff = htmlentities($this->libelle, ENT_QUOTES, $charset);
1111                if ($this->action) {
1112                        $aff= str_replace('!!display!!', "<b>$aff</b>", $this->action);
1113                        if (count($this->action_values)) {
1114                                foreach($this->action_values as $v) {
1115                                        $aff = str_replace("!!$v!!", addslashes($this->$v), $aff);
1116                                }
1117                        }
1118                }
1119                if(trim($this->form_checker)){
1120                        $tmpAff ="<span class='acq_sel_display_middle'>
1121                                        <input type='checkbox' name='".$this->form_checker."[]' id='".$this->form_checker."[".$this->id_frais."]' value='".$this->id_frais."'";
1122                        if ($this->action) {
1123                                if (count($this->action_values)) {
1124                                        foreach($this->action_values as $v) {
1125                                                $tmpAff.=" attr_".$v."=\"".htmlentities($this->$v,ENT_QUOTES,$charset)."\"";
1126                                        }
1127                                }
1128                        }
1129                        $this->result=$tmpAff.">".$aff."</span>";
1130                }else{
1131                        $this->result = $aff;
1132                }
1133                $this->lib_montant = $this->montant.'&nbsp;'.$pmb_gestion_devise;
1134        }
1135       
1136}
1137
1138
1139// définition de la classe d'affichage des articles en liste pour selecteur
1140class sel_article_display {
1141       
1142        var $notice_id = 0;             //id notice
1143        var $notice = '';               //objet notice
1144        var $header = '';               //entete
1145        var $result     = '';           //affichage final
1146        var $isbd = '';                 //isbd notice
1147        var $responsabilites =  array("responsabilites" => array(),"auteurs" => array());  //auteurs
1148        var $statut = '' ;              //statut notice
1149        var $tit_serie = '';    //titre serie
1150        var $tit1 = '';                 //titre 1
1151
1152        var $parent_title = '';
1153        var $parent_numero = '';
1154        var $parent_date = '';
1155        var $parent_date_date = '';
1156        var $parent_aff_date_date = '';
1157       
1158        var $base_url = '';                                     //URL a associer aux elements cliquables
1159        var $action = '';                                       //action a effectuer pour retour des parametres         
1160        var $action_values = array();           //tableau des elements à modifier dans l'action
1161               
1162        var $code = '';                 //isbn ou code EAN de la notice à afficher
1163        var $titre = '';                //titre renvoye
1164        var $auteur1 = '';              //auteur1 renvoye
1165        var $in_bull = '';              //lien bulletin renvoye
1166        var $prix = '0.00';             //prix renvoye
1167       
1168        var $form_checker = ''; //Affichage d'une case à cocher sur le template
1169
1170       
1171        // constructeur
1172        function sel_article_display($notice_id, $base_url, $form_checker='') {
1173
1174                if (!$notice_id) return;
1175                $this->notice_id=$notice_id;
1176                $this->base_url=$base_url;
1177                $this->form_checker=$form_checker;
1178        }
1179       
1180
1181        //creation formulaire
1182        function doForm() {
1183       
1184                $this->getData();
1185                $this->responsabilites = get_notice_authors($this->notice_id) ;
1186                $this->doHeader();
1187                $this->doContent();
1188                $this->finalize();
1189        }
1190
1191       
1192        // récupération des valeurs en table
1193        function getData() {
1194                global $dbh,$msg;
1195               
1196                $q = "SELECT * FROM notices WHERE notice_id='".$this->notice_id."' ";
1197                $r = pmb_mysql_query($q, $dbh);
1198                if(pmb_mysql_num_rows($r)) {
1199                        $this->notice = pmb_mysql_fetch_object($r);
1200                }
1201                // récupération des données du bulletin et de la notice apparentée
1202                $requete = "SELECT b.tit1,c.*,date_format(date_date, '".$msg["format_date"]."') as aff_date_date "; 
1203                $requete.= "from analysis a, notices b, bulletins c ";
1204                $requete.= "WHERE a.analysis_notice=".$this->notice_id." ";
1205                $requete.= "AND c.bulletin_id=a.analysis_bulletin ";
1206                $requete .= "AND c.bulletin_notice=b.notice_id ";
1207                $requete.= "LIMIT 1";
1208                $myQuery = pmb_mysql_query($requete, $dbh);
1209                if (pmb_mysql_num_rows($myQuery)) {
1210                        $parent = pmb_mysql_fetch_object($myQuery);
1211                        $this->parent_title = $parent->tit1;
1212                        $this->parent_numero = $parent->bulletin_numero;
1213                        $this->parent_date = $parent->mention_date;
1214                        $this->parent_date_date = $parent->date_date;
1215                        $this->parent_aff_date_date = $parent->aff_date_date;
1216                }
1217        }
1218       
1219        // creation header
1220        function doHeader() {
1221               
1222                global $dbh, $charset;
1223                global $pmb_notice_reduit_format;
1224               
1225                //gen. statut
1226                if ($this->notice->statut) {
1227                        $rqt_st = "SELECT class_html , gestion_libelle FROM notice_statut WHERE id_notice_statut='".$this->notice->statut."' ";
1228                        $res_st = pmb_mysql_query($rqt_st, $dbh) or die ($rqt_st. " ".pmb_mysql_error()) ;
1229                        $class_html = " class='".pmb_mysql_result($res_st, 0, 0)."' ";
1230                        if ($this->notice->statut>1) $txt = pmb_mysql_result($res_st, 0, 1) ;
1231                        else $txt = "" ;
1232                } else {
1233                        $class_html = " class='statutnot1' " ;
1234                        $txt = "" ;
1235                }
1236                if ($this->notice->commentaire_gestion) { 
1237                        if ($txt) $txt .= ":\r\n".$this->notice->commentaire_gestion ;
1238                        else $txt = $this->notice->commentaire_gestion ;
1239                }
1240                if ($txt) {
1241                        $statut = "<small><span $class_html style='margin-right: 3px;'><a href=# onmouseover=\"z=document.getElementById('zoom_statut".$this->notice_id."'); z.style.display=''; \" onmouseout=\"z=document.getElementById('zoom_statut".$this->notice_id."'); z.style.display='none'; \"><img src='./images/spacer.gif' width='10' height='10' /></a></span></small>";
1242                        $statut .= "<div id='zoom_statut".$this->notice_id."' style='border: solid 2px #555555; background-color: #FFFFFF; position: absolute; display:none; z-index: 2000;'><b>".nl2br(htmlentities($txt,ENT_QUOTES, $charset))."</b></div>" ;
1243                } else $statut = "<small><span $class_html style='margin-right: 3px;'><img src='./images/spacer.gif' width='10' height='10' /></span></small>";
1244                $this->statut = $statut ; 
1245               
1246                $this->tit1 = $this->notice->tit1;             
1247                $this->header.= $this->tit1;
1248               
1249                //aff. auteur1
1250                $as = array_search ("0", $this->responsabilites["responsabilites"]);
1251                $aut1_libelle = array() ;
1252                $lib_auteur='';
1253                if ($as!== FALSE && $as!== NULL) {
1254                        $auteur_0 = $this->responsabilites["auteurs"][$as] ;
1255                        $auteur = new auteur($auteur_0["id"]);
1256                        if ($auteur->isbd_entry) {
1257                                $lib_auteur=$auteur->isbd_entry;
1258                        }
1259                } else {
1260                        $as = array_keys ($this->responsabilites["responsabilites"], "1" );
1261                        for ($i = 0 ; $i < count($as) ; $i++) {
1262                                $indice = $as[$i] ;
1263                                $auteur_1 = $this->responsabilites["auteurs"][$indice];
1264                                $auteur = new auteur($auteur_1["id"]);
1265                                $aut1_libelle[]= $auteur->isbd_entry;
1266                        }
1267                        $auteurs_liste = implode ("; ",$aut1_libelle) ;
1268                        if ($auteurs_liste) {
1269                                $this->header .= ' / '. $auteurs_liste;
1270                                $lib_auteur=$auteurs_liste;
1271                        }
1272                }
1273                if ($lib_auteur!='') {
1274                        $this->header .= ' / '. $lib_auteur;
1275                }
1276               
1277                //renvoi lien bulletin
1278                $this->in_bull= "in ".$this->parent_title." (".$this->parent_numero." ".($this->parent_date?$this->parent_date:$this->parent_aff_date_date).")";
1279
1280                $this->header=$this->header." <i>".$this->in_bull."</i> ";
1281               
1282                //aff. annee
1283                switch ($pmb_notice_reduit_format) {
1284                        case '1':
1285                                if ($this->notice->year != '') $this->header.=' ('.htmlentities($this->notice->year, ENT_QUOTES, $charset).')';
1286                                break;
1287                        case "2":
1288                                if ($this->notice->year != '') $this->header.=' ('.htmlentities($this->notice->year, ENT_QUOTES, $charset).')';
1289                                if ($this->notice->code != '') $this->header.=' / '.htmlentities($this->notice->code, ENT_QUOTES, $charset);
1290                                break;
1291                        default : 
1292                                break;
1293                }
1294               
1295                //renvoi titre
1296                $this->titre = $this->tit1;
1297               
1298                //renv. auteur1
1299                $this->auteur1=$lib_auteur;
1300               
1301                //renv. prix
1302                $this->prix=$this->notice->prix;
1303       
1304        }
1305       
1306       
1307        // creation contenu
1308        function doContent() {
1309                global $tdoc;
1310                global $fonction_auteur;
1311       
1312                //mention titre
1313                $this->isbd = $this->titre;
1314                if($this->notice->tit4) $this->isbd .= "&nbsp;: ".$this->notice->tit4;
1315                if($this->notice->tit2) $this->isbd .= "&nbsp;; ".$this->notice->tit2;
1316                $this->isbd .= ' ['.$tdoc->table[$this->notice->typdoc].']';   
1317                //mention responsabilité
1318                $mention_resp = array() ;
1319                $as = array_search ("0", $this->responsabilites["responsabilites"]);
1320                if ($as!== FALSE && $as!== NULL) {
1321                        $auteur_0 = $this->responsabilites["auteurs"][$as] ;
1322                        $auteur = new auteur($auteur_0["id"]);
1323                        $mention_resp_lib = $auteur->isbd_entry;
1324                        if ($auteur_0["fonction"]) {
1325                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_0["fonction"]];
1326                        }
1327                        $mention_resp[] = $mention_resp_lib ;
1328                }
1329                $as = array_keys ($this->responsabilites["responsabilites"], "1" );
1330                for ($i = 0 ; $i < count($as) ; $i++) {
1331                        $indice = $as[$i] ;
1332                        $auteur_1 = $this->responsabilites["auteurs"][$indice] ;
1333                        $auteur = new auteur($auteur_1["id"]);
1334                        $mention_resp_lib = $auteur->isbd_entry;
1335                        if ($auteur_1["fonction"]) {
1336                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_1["fonction"]];
1337                        }
1338                        $mention_resp[] = $mention_resp_lib ;
1339                }
1340                $as = array_keys ($this->responsabilites["responsabilites"], "2" ) ;
1341                for ($i = 0 ; $i < count($as) ; $i++) {
1342                        $indice = $as[$i] ;
1343                        $auteur_2 = $this->responsabilites["auteurs"][$indice] ;
1344                        $auteur = new auteur($auteur_2["id"]);
1345                        $mention_resp_lib = $auteur->isbd_entry;
1346                        if ($auteur_2["fonction"]) {
1347                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_2["fonction"]];
1348                        }
1349                        $mention_resp[] = $mention_resp_lib ;
1350                }
1351                $libelle_mention_resp = implode ("; ",$mention_resp) ;
1352                if($libelle_mention_resp) {
1353                                $this->isbd .= "&nbsp;/ $libelle_mention_resp" ;
1354                }                       
1355       
1356                // zone de la collation
1357                if($this->notice->npages) {
1358                        $collation = $this->notice->npages;
1359                }
1360                if($collation) {
1361                        $this->isbd .= ".&nbsp;-&nbsp;$collation";
1362                }
1363                $this->isbd .= '.';
1364
1365                //prix
1366                if($this->notice->prix) {
1367                        $zoneNote = $this->notice->prix;
1368                }
1369                if($zoneNote) {
1370                        $this->isbd .= "<br /><br />$zoneNote.";
1371                }
1372        }       
1373
1374       
1375        //génération du template javascript
1376        function finalize() {
1377               
1378                global $msg;
1379               
1380                $javascript_template ="
1381                                                <div id='el_!!id!!_Parent' class='notice-parent'><span class='acq_sel_display_middle'>";
1382                if(trim($this->form_checker)){
1383                        $javascript_template.="<input type='checkbox' name='".$this->form_checker."[]' id='".$this->form_checker."[!!id!!]' value='!!id!!'";
1384                        if ($this->action) {
1385                                if (count($this->action_values)) {
1386                                        foreach($this->action_values as $v) {
1387                                                $javascript_template.=" attr_".$v."=\"".htmlentities($this->$v,ENT_QUOTES,$charset)."\"";
1388                                        }
1389                                }
1390                        }
1391                        $javascript_template.=">";
1392                }
1393                $javascript_template.="
1394                                                        <img src='./images/plus.gif' name='imEx' id='el_!!id!!_Img' title='".$msg['admin_param_detail']."' onClick=\"expandBase('el_!!id!!_', true); return false;\" />
1395                                                        </span><span class='notice-heada'>!!header!!</span>
1396                                                        <div id='el_!!id!!_Child' class='notice-child' style='width:inherit;display:none;' >
1397                                                                !!isbd!!
1398                                                        </div>
1399                                                </div>";
1400
1401                if ($this->action) {
1402                        $this->header = str_replace('!!display!!', $this->header, $this->action);
1403                        $this->header = $this->statut.$this->header;
1404                        $this->header = str_replace('!!id!!', $this->notice_id, $this->header);
1405                        if (count($this->action_values)) {
1406                                foreach($this->action_values as $v) {
1407                                        $this->header = str_replace("!!$v!!", htmlentities(addslashes($this->$v),ENT_QUOTES,$charset), $this->header);
1408                                }
1409                        }
1410                }
1411               
1412                $this->result = str_replace('!!id!!', $this->notice_id, $javascript_template);
1413                $this->result = str_replace('!!header!!', $this->header, $this->result);
1414               
1415                $this->result = str_replace('!!isbd!!', $this->isbd, $this->result);           
1416        }
1417}
1418
1419?>
Note: See TracBrowser for help on using the repository browser.