source: pmb4.2/trunk/fuentes/pmb/classes/serial_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: 60.6 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: serial_display.class.php,v 1.161.2.2 2015-11-14 12:44:50 Alexandre Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9require_once($class_path."/parametres_perso.class.php");
10require_once($class_path."/marc_table.class.php");
11require_once($class_path."/mono_display.class.php");
12require_once($class_path."/collstate.class.php");
13require_once($include_path."/notice_authors.inc.php");
14require_once($include_path."/notice_categories.inc.php");
15require_once($include_path."/explnum.inc.php");
16require_once("$class_path/authperso_notice.class.php");
17require_once("$class_path/map/map_objects_controler.class.php");
18require_once("$class_path/map_info.class.php");
19
20// récupération des codes de fonction
21if (!count($fonction_auteur)) {
22        $fonction_auteur = new marc_list('function');
23        $fonction_auteur = $fonction_auteur->table;
24}
25
26// récupération des codes langues
27if (!count($langue_doc)) {
28        $f_lang = new marc_list('lang');
29        $langue_doc = $f_lang->table;
30}
31if (!count($icon_doc)) {
32        $icon_doc = new marc_list('icondoc');
33        $icon_doc = $icon_doc->table;
34}
35if(!count($biblio_doc)) {
36        $biblio_doc = new marc_list('nivbiblio');
37        $biblio_doc = $biblio_doc->table;
38}
39
40// propriétés pour le selecteur de panier (kinda template)
41$selector_prop = "toolbar=no, dependent=yes, width=500, height=400, resizable=yes, scrollbars=yes";
42$cart_click = "onClick=\"openPopUp('./cart.php?object_type=NOTI&item=!!item!!&unq=!!unique!!', 'cart', 600, 700, -2, -2, '$selector_prop')\"";
43
44// définition de la classe d'affichage des périodiques
45class serial_display {
46        var $notice_id = 0;                                     // id de la notice à afficher
47        var $notice;                                            // objet notice (tel que fetché dans la table 'notices'
48        var $bul_id     = 0 ;                                   // id de bulletin récupéré pour l'ISBD
49        var $action_serial_org = '';            // lien à activer si la notice est s1 (notice chapeau)
50        var $action_analysis_org = '';          // lien à activer si la notice est a2 (dépouillment)
51        var $action_serial = '';                        // lien modifié pour le header
52        var $action_analysis = '';                      // lien modifié pour le header (nécessite !!bul_id!!)
53        var $action_bulletin = '';                      // action pour la notion de bulletin
54        var $header     = '';                                   // chaine accueillant le chapeau de notice (peut-être cliquable)
55        var $tit1 = '';                                         // valeur du titre 1
56        var $parent_id = 0;                                     // id de la notice parent
57        var $parent_title = '';                         // titre de la notice parent si a2
58        var $parent_numero = '';                        // mention de numérotation dans le bulletinage associé
59        var $parent_date = '';                          // mention de date (txt) dans le bulletinage associé
60        var $parent_date_date = '';                     // mention de date (date) dans le bulletinage associé
61        var $parent_aff_date_date = '';         // mention de date (date) dans le bulletinage associé au format correct pour affichage
62        var $result = '';                                       // affichage final
63        var $level = 1;                                         // niveau d'affichage
64        var $isbd = '';                                         // isbd de la notice en fonction du level défini
65        var $responsabilites = array("responsabilites" => array(),"auteurs" => array());  // les auteurs
66        var $categories = array();                      // les categories
67        var $lien_explnum = '';                         // Lien de gestion des documents numériques associés
68        var $bouton_explnum = 0 ;                       // bouton ou pas d'ajout de doc numérique
69        var $p_perso;
70        var $show_explnum = 1;
71        var $show_statut = 0;
72        var $childs= array();                           //Filles de la notice
73        var $print_mode = 0;                            // 0 affichage normal
74                                                                                // 1 affichage impression sans liens
75                                                                                // 2 affichage impression avec liens sur documents numeriques
76                                                                                // 4 affichage email : sans lien sauf url associée
77        var $langues = array();
78        var $languesorg = array();
79        var $aff_statut = '' ;                          // carré de couleur pour signaler le statut de la notice
80        var $show_opac_hidden_fields = true;
81        var $drag = 0;
82        var $anti_loop = "";
83        var $no_link = false;
84        var $serial_nb_bulletins = 0;
85        var $serial_nb_exemplaires = 0;
86        var $serial_nb_articles = 0;
87        var $serial_nb_etats_collection = 0;
88        var $serial_nb_abo_actif = 0;
89        var $show_map=1;
90
91        // constructeur
92        function serial_display (       $id,                                            // $id = id de la notice à afficher
93                                                                $level='1',                             // $level :
94                                                                                                                        // 0 : juste le header (titre  / auteur principal avec le lien si applicable)
95                                                                                                                        //      6 : cas général détaillé avec notes, categ, langues, indexation... + boutons
96                                                                $action_serial='',                      // $action_serial = URL à atteindre si la notice est une notice chapeau
97                                                                $action_analysis='',            // $action_analysis = URL à atteindre si la notice est un dépouillement
98                                                                                                                        // note dans ces deux variable, '!!id!!' sera remplacé par l'id de cette notice
99                                                                                                                        // les deux liens s'excluent mutuellement, bien sur.
100                                                                $action_bulletin='',
101                                                                $lien_suppr_cart="",            // $lien_suppr_cart = lien de suppression de la notice d'un caddie
102                                                                $lien_explnum="",
103                                                                $bouton_explnum=1,
104                                                                $print=0,                                       // $print = 0 affichage normal
105                                                                                                                        //                      1 affichage impression sans liens
106                                                                                                                        //                      2 affichage impression avec liens sur documents numeriques
107                                                                                                                        //                      4 affichage email : sans lien sauf url associée
108
109                                                                $show_explnum=1,
110                                                                $show_statut=0,
111                                                                $show_opac_hidden_fields=true,
112                                                                $draggable=0,
113                                                                $ajax_mode=0 ,
114                                                                $anti_loop='',
115                                                                $no_link=false,
116                                                                $show_map=1
117                                                                ) {
118
119                global $pmb_recherche_ajax_mode;
120
121                $this->show_map=$show_map;
122
123                if($pmb_recherche_ajax_mode){
124                        $this->ajax_mode=$ajax_mode;
125                        if($this->ajax_mode) {
126                                if (is_object($id)){
127                                        $param['id']=$id->notice_id;
128                                } else {
129                                        $param['id']=$id;
130                                }
131                                $param['function_to_call']="serial_display";
132                                //if($level)$param['level']=$level;     //6
133                                if($action_serial)$param['action_serial']=$action_serial;
134                                if($action_analysis)$param['action_analysis']=$action_analysis;
135                                if($action_bulletin)$param['action_bulletin']=$action_bulletin;
136//                              if($lien_suppr_cart)$param['lien_suppr_cart']=$lien_suppr_cart;
137                                if($lien_explnum)$param['lien_explnum']=$lien_explnum;
138                                if($bouton_explnum)$param['bouton_explnum']=$bouton_explnum;
139                                if($print)$param['print']=$print;
140                          //    if($show_explnum)$param['show_explnum']=$show_explnum;
141                                //if($show_statut)$param['show_statut']=$show_statut;
142                                //if($show_opac_hidden_fields)$param['show_opac_hidden_fields']=$show_opac_hidden_fields;
143                                //if($draggable)$param['draggable']=$draggable;//1
144
145                                $this->mono_display_cmd=serialize($param);
146                        }
147                }
148                $this->lien_explnum = $lien_explnum ;
149                $this->bouton_explnum = $bouton_explnum ;
150                $this->print_mode=$print;
151                $this->show_explnum=$show_explnum;
152                $this->show_statut=$show_statut;
153                $this->anti_loop=$anti_loop;
154                $this->no_link=$no_link;
155                if(!$id) return; else {
156                        if (is_object($id)){
157                                $this->notice_id = $id->notice_id;
158                                $this->notice = $id;
159                        } else {
160                                        $this->notice_id = $id;
161                                        $this->serial_display_fetch_data();
162                        }
163                }
164
165                $this->show_opac_hidden_fields=$show_opac_hidden_fields;
166                if(!$this->ajax_mode)$this->p_perso=new parametres_perso("notices");
167
168                $this->responsabilites = get_notice_authors($this->notice_id) ;
169
170                // mise à jour des catégories
171                if(!$this->ajax_mode)$this->categories = get_notice_categories($this->notice_id) ;
172
173                //récupération des langues
174                $this->langues  = get_notice_langues($this->notice_id, 0) ;     // langues de la publication
175                $this->languesorg       = get_notice_langues($this->notice_id, 1) ; // langues originales
176
177                $this->level = $level;
178                $this->lien_suppr_cart = $lien_suppr_cart;
179
180                // si la notice est a2 (dépouillement), on récupère les données du bulletinage
181                if($this->notice->niveau_biblio == 'a' && $this->notice->niveau_hierar == 2) {
182                        $this->get_bul_info();
183                }
184
185                // mise à jour des liens
186                if (SESSrights & CATALOGAGE_AUTH){
187                        $this->action_serial_org = $action_serial;
188                        $this->action_analysis = $action_analysis;
189                        $this->action_bulletin = $action_bulletin;
190                        if ($action_serial && $this->notice->niveau_biblio == 's' && $this->notice->niveau_hierar == '1')
191                                $this->action_serial = str_replace('!!id!!', $this->notice_id, $action_serial);
192                        if ($action_analysis && $this->notice->niveau_biblio == 'a' && $this->notice->niveau_hierar == '2') {
193                                $this->action_analysis = str_replace('!!id!!', $this->notice_id, $this->action_analysis);
194                                $this->action_analysis = str_replace('!!bul_id!!', $this->bul_id, $this->action_analysis);
195                                }
196                        $this->lien_explnum = str_replace('!!serial_id!!', $this->notice_id, $this->lien_explnum);
197                        $this->lien_explnum = str_replace('!!analysis_id!!', $this->notice_id, $this->lien_explnum);
198                        $this->lien_explnum = str_replace('!!bul_id!!', $this->bul_id, $this->lien_explnum);
199                        $this->drag=$draggable;
200                }else{
201                        $this->action_serial_org = "";
202                        $this->action_analysis = "";
203                        $this->action_bulletin = "";
204                        $this->action_serial = "";
205                        $this->lien_explnum = "";
206                        $this->drag="";
207                }
208
209                $this->do_header();
210
211                if($level)
212                        $this->init_javascript();
213                $this->isbd = 'ISBD';
214
215                if(!$this->ajax_mode) {
216                        $this->childs=array();
217                        $requete="select num_notice as notice_id,relation_type from notices_relations,notices where linked_notice=".$this->notice_id." and num_notice=notice_id order by relation_type, rank,create_date";
218                        $resultat=pmb_mysql_query($requete);
219                        if (pmb_mysql_num_rows($resultat)) {
220                                while ($r=pmb_mysql_fetch_object($resultat)) {
221                                        $this->childs[$r->relation_type][]=$r->notice_id;
222                                }
223                        }
224                }
225
226                switch($level) {
227                        case 0:
228                                // là, c'est le niveau 0 : juste le header
229                                //$this->do_header();
230                                $this->result = $this->header;
231                                break;
232                        default:
233                                global $pmb_map_activate;
234                                $this->map=array();
235                                if($pmb_map_activate){
236                                        $ids[]=$this->notice_id;
237                                        $this->map=new map_objects_controler(TYPE_RECORD,$ids);
238                                        $this->map_info=new map_info($this->notice_id);
239                                }
240                                // niveau 1 et plus : header + isbd à générer
241                                //$this->do_header();
242                                if(!$this->ajax_mode) $this->do_isbd();
243                                if(!$this->ajax_mode) $this->finalize();
244                                break;
245                        }
246                return;
247
248                }
249
250        // récupération des info de bulletinage (si applicable)
251        function get_bul_info() {
252                global $dbh;
253                global $msg ;
254
255                // récupération des données du bulletin et de la notice apparentée
256                $requete = "SELECT b.tit1,b.notice_id,b.code,a.*,c.*, date_format(date_date, '".$msg["format_date"]."') as aff_date_date ";
257                $requete .= "from analysis a, notices b, bulletins c";
258                $requete .= " WHERE a.analysis_notice=".$this->notice_id;
259                $requete .= " AND c.bulletin_id=a.analysis_bulletin";
260                $requete .= " AND c.bulletin_notice=b.notice_id";
261                $requete .= " LIMIT 1";
262                $myQuery = pmb_mysql_query($requete, $dbh);
263                if (pmb_mysql_num_rows($myQuery)) {
264                        $parent = pmb_mysql_fetch_object($myQuery);
265                        $this->parent_title = $parent->tit1;
266                        $this->parent_id = $parent->notice_id;
267                        $this->code=$parent->code;
268                        $this->bul_id = $parent->bulletin_id;
269                        $this->parent_numero = $parent->bulletin_numero;
270                        $this->parent_date = $parent->mention_date;
271                        $this->parent_date_date = $parent->date_date;
272                        $this->parent_aff_date_date = $parent->aff_date_date;
273                        }
274                }
275
276        // finalisation du résultat (écriture de l'isbd)
277        function finalize() {
278                global $msg, $base_path ;
279
280                // Différence avec les monographies on affiche [périodique] et [article] devant l'ISBD
281                if ($this->notice->niveau_biblio =='s') {
282                        $this->result = str_replace('!!serial_type!!', "<span class='fond-mere'>[".$msg['isbd_type_perio']."]</span>", $this->result);
283                        } else {
284                                $this->result = str_replace('!!serial_type!!', "<span class='fond-article'>[".$msg['isbd_type_art']."]</span>", $this->result);
285                                }
286                $this->result = str_replace('!!ISBD!!', $this->isbd, $this->result);
287        }
288
289        // génération du template javascript
290        function init_javascript() {
291                global $msg, $base_path, $pmb_recherche_ajax_mode, $art_to_show;
292                // propriétés pour le selecteur de panier
293                $selector_prop = "toolbar=no, dependent=yes, width=500, height=400, resizable=yes, scrollbars=yes";
294                $cart_click = "onClick=\"openPopUp('".$base_path."/cart.php?object_type=NOTI&item=!!notice_id!!', 'cart', 600, 700, -2, -2, '$selector_prop')\"";
295                $cart_over_out = "onMouseOver=\"show_div_access_carts(event,!!notice_id!!);\" onMouseOut=\"set_flag_info_div(false);\"";
296                $current=$_SESSION["CURRENT"];
297                if ($current!==false) {
298                        $print_action = "&nbsp;<a href='#' onClick=\"openPopUp('".$base_path."/print.php?current_print=$current&notice_id=!!notice_id!!&action_print=print_prepare','print',500,600,-2,-2,'scrollbars=yes,menubar=0'); w.focus(); return false;\"><img src='".$base_path."/images/print.gif' border='0' align='center' alt=\"".$msg["histo_print"]."\" title=\"".$msg["histo_print"]."\"/></a>";
299                }
300
301                if(($art_to_show == $this->notice_id) && $art_to_show){
302                        $open_tag = "startOpen=\"Yes\"";
303                        $anchor = "<a name='anchor_$art_to_show'></a>";
304                } else {
305                        $open_tag = "";
306                        $anchor = "";
307                }
308
309                if($pmb_recherche_ajax_mode && $this->ajax_mode){
310                        $javascript_template ="$anchor
311                <div id=\"el!!id!!Parent\" class=\"notice-parent\">
312                        <img src=\"".$base_path."/images/plus.gif\" class=\"img_plus\" name=\"imEx\" id=\"el!!id!!Img\" param='".rawurlencode($this->mono_display_cmd)."' title=\"".$msg['admin_param_detail']."\" border=\"0\" onClick=\"expandBase_ajax('el!!id!!', true,this.getAttribute('param')); return false;\" hspace=\"3\">
313                        <span class=\"notice-heada\">!!heada!!</span>
314                </div>
315                <div id=\"el!!id!!Child\" class=\"notice-child\" style=\"margin-bottom:6px;display:none;\" $open_tag >
316                </div>";
317
318                } else{
319                        if(SESSrights & CATALOGAGE_AUTH){
320                                $caddie="<img src='".$base_path."/images/basket_small_20x20.gif' align='middle' alt='basket' title=\"${msg[400]}\" $cart_click $cart_over_out>";
321                        }else{
322                                $caddie="";
323                        }
324
325                        $javascript_template ="$anchor
326                        <div id=\"el!!id!!Parent\" class=\"notice-parent\">
327                                <img src=\"".$base_path."/images/plus.gif\" class=\"img_plus\" name=\"imEx\" id=\"el!!id!!Img\" title=\"".$msg['admin_param_detail']."\" border=\"0\" onClick=\"expandBase('el!!id!!', true); return false;\" hspace=\"3\" />
328                                <span class=\"notice-heada\">!!heada!!</span>
329                        </div>
330                        <div id=\"el!!id!!Child\" class=\"notice-child\" style=\"margin-bottom:6px;display:none;\" $open_tag >
331                                $caddie$print_action !!serial_type!! !!ISBD!!
332                </div>";
333                }
334                $this->result = str_replace('!!id!!', $this->notice_id.($this->anti_loop?"_p".implode("_",$this->anti_loop):""), $javascript_template);
335                $this->result = str_replace('!!item!!', $this->notice_id, $this->result);
336                $this->result = str_replace('!!unique!!', md5(microtime()), $this->result);
337                $this->result = str_replace('!!heada!!', $this->lien_suppr_cart.$this->header, $this->result);
338                $this->result = str_replace('!!notice_id!!', $this->notice_id, $this->result);
339        }
340
341        // génération de l'isbd
342        function do_isbd() {
343                global $msg, $dbh, $base_path;
344                global $fonction_auteur;
345                global $langue_doc;
346                global $charset;
347                global $thesaurus_mode_pmb, $thesaurus_categories_categ_in_line, $pmb_keyword_sep ;
348                global $pmb_etat_collections_localise,$pmb_droits_explr_localises,$explr_visible_mod, $thesaurus_categories_affichage_ordre;
349                global $categories_memo,$libelle_thesaurus_memo;
350                global $categories_top,$use_opac_url_base,$thesaurus_categories_show_only_last;
351                global $load_tablist_js;
352                global $pmb_show_notice_id,$pmb_opac_url,$pmb_show_permalink;
353                global $sort_children;
354                global $tdoc;
355                global $thesaurus_concepts_active;
356
357                $this->isbd = $this->notice->tit1;
358
359                // constitution de la mention de titre
360                $tit3 = $this->notice->tit3;
361                $tit4 = $this->notice->tit4;
362                if($tit3) $this->isbd .= "&nbsp;= $tit3";
363                if($tit4) $this->isbd .= "&nbsp;: $tit4";
364                $this->isbd .= ' ['.$tdoc->table[$this->notice->typdoc].']';
365
366                // constitution de la mention de responsabilité
367
368                $mention_resp = array() ;
369
370                // constitution de la mention de responsabilité
371                //$this->responsabilites
372                $as = array_search ("0", $this->responsabilites["responsabilites"]) ;
373                if ($as!== FALSE && $as!== NULL) {
374                        $auteur_0 = $this->responsabilites["auteurs"][$as] ;
375                        $auteur = new auteur($auteur_0["id"]);
376                        if ($this->print_mode)
377                                $mention_resp_lib = $auteur->isbd_entry;
378                        else
379                                $mention_resp_lib = $auteur->isbd_entry_lien_gestion;
380                        if (!$this->print_mode) $mention_resp_lib .= $auteur->author_web_link ;
381                        if ($auteur_0["fonction"]) $mention_resp_lib .= ", ".$fonction_auteur[$auteur_0["fonction"]];
382                        $mention_resp[] = $mention_resp_lib ;
383                }
384
385                $as = array_keys ($this->responsabilites["responsabilites"], "1" ) ;
386                for ($i = 0 ; $i < count($as) ; $i++) {
387                        $indice = $as[$i] ;
388                        $auteur_1 = $this->responsabilites["auteurs"][$indice] ;
389                        $auteur = new auteur($auteur_1["id"]);
390                        if ($this->print_mode)
391                                $mention_resp_lib = $auteur->isbd_entry;
392                        else
393                                $mention_resp_lib = $auteur->isbd_entry_lien_gestion;
394                        if (!$this->print_mode) $mention_resp_lib .= $auteur->author_web_link ;
395                        if ($auteur_1["fonction"]) $mention_resp_lib .= ", ".$fonction_auteur[$auteur_1["fonction"]];
396                        $mention_resp[] = $mention_resp_lib ;
397                }
398
399                $as = array_keys ($this->responsabilites["responsabilites"], "2" ) ;
400                for ($i = 0 ; $i < count($as) ; $i++) {
401                        $indice = $as[$i] ;
402                        $auteur_2 = $this->responsabilites["auteurs"][$indice] ;
403                        $auteur = new auteur($auteur_2["id"]);
404                        if ($this->print_mode)
405                                $mention_resp_lib = $auteur->isbd_entry;
406                        else
407                                $mention_resp_lib = $auteur->isbd_entry_lien_gestion;
408                        if (!$this->print_mode) $mention_resp_lib .= $auteur->author_web_link ;
409                        if ($auteur_2["fonction"])
410                                $mention_resp_lib .= ", ".$fonction_auteur[$auteur_2["fonction"]];
411                        $mention_resp[] = $mention_resp_lib ;
412                }
413
414                $libelle_mention_resp = implode ("; ",$mention_resp) ;
415                if($libelle_mention_resp)
416                        $this->isbd .= "&nbsp;/ ". $libelle_mention_resp ." " ;
417
418                global $pmb_map_activate;
419                if($pmb_map_activate){
420                        if($mapisbd=$this->map_info->get_isbd())        $this->isbd .=$mapisbd;
421                }
422                // zone de l'adresse (ne concerne que s1)
423                if ($this->notice->niveau_biblio == 's' && $this->notice->niveau_hierar == 1) {
424                        if($this->notice->ed1_id) {
425                                $editeur = new editeur($this->notice->ed1_id);
426                                if ($this->print_mode)
427                                        $editeurs .= $editeur->isbd_entry;
428                                else
429                                        $editeurs .= $editeur->isbd_entry_lien_gestion;
430                        }
431                        if($this->notice->ed2_id) {
432                                $editeur = new editeur($this->notice->ed2_id);
433                                if ($this->print_mode) $ed_isbd=$editeur->isbd_entry; else $ed_isbd=$editeur->isbd_entry_lien_gestion;
434                                if($editeurs)
435                                        $editeurs .= '&nbsp;; '.$ed_isbd;
436                                else
437                                        $editeurs .= $ed_isbd;
438                        }
439
440                        if($this->notice->year)
441                                $editeurs ? $editeurs .= ', '.$this->notice->year : $editeurs = $this->notice->year;
442                        //else
443                                //$editeurs ? $editeurs .= ', [s.d.]' : $editeurs = "[s.d.]";
444
445                        if($editeurs)
446                                $this->isbd .= ".&nbsp;-&nbsp;$editeurs";
447                                // code ici pour la gestion des éditeurs
448                }
449
450                // zone de la collation (ne concerne que a2, mention de pagination)
451                // pour les périodiques, on rebascule en zone de note
452                // avec la mention du périodique parent
453                if($this->notice->niveau_biblio == 'a' && $this->notice->niveau_hierar == 2) {
454
455                        $bulletin = $this->parent_title;
456                        if($this->parent_numero) {
457                                $bulletin .= ' '.$this->parent_numero;
458                        }
459                        // affichage de la mention de date utile : mention_date si existe, sinon date_date
460                        if ($this->parent_date)
461                                $date_affichee = " (".$this->parent_date.")";
462                        else if ($this->parent_date_date)
463                                $date_affichee .= " [".formatdate($this->parent_date_date)."]";
464                        else
465                                $date_affichee="" ;
466                        $bulletin .= $date_affichee;
467
468                        if($this->action_bulletin) {
469                                $this->action_bulletin = str_replace('!!id!!', $this->bul_id, $this->action_bulletin);
470                                $bulletin = "<a href=\"".$this->action_bulletin."\">".htmlentities($bulletin,ENT_QUOTES, $charset)."</a>";
471                        }
472                        $mention_parent = "in <b>$bulletin</b>";
473                }
474
475                if($mention_parent) {
476                        $this->isbd .= "<br />$mention_parent";
477                        $pagination = htmlentities($this->notice->npages,ENT_QUOTES, $charset);
478                        if($pagination)
479                                $this->isbd .= ".&nbsp;-&nbsp;$pagination";
480                }
481
482                //In
483                //Recherche des notices parentes
484                if (!$this->no_link) {
485                        $requete="select linked_notice, relation_type, rank, l.niveau_biblio as lnb, l.niveau_hierar as lnh from notices_relations, notices as l where num_notice=".$this->notice_id." and linked_notice=l.notice_id order by relation_type,rank";
486                        $result_linked=pmb_mysql_query($requete) or die(pmb_mysql_error());
487                        //Si il y en a, on prépare l'affichage
488                        if (pmb_mysql_num_rows($result_linked)) {
489                                global $relation_listup ;
490                                if (!$relation_listup) $relation_listup=new marc_list("relationtypeup");
491                        }
492                        $r_type=array();
493                        $ul_opened=false;
494                        $r_type_local="";
495                        //Pour toutes les notices liées
496
497                        while (($r_rel=pmb_mysql_fetch_object($result_linked))) {
498                                //Pour avoir le lien par défaut
499                                if (!$this->print_mode && (SESSrights & CATALOGAGE_AUTH)) $link_parent=$base_path.'/catalog.php?categ=isbd&id=!!id!!'; else $link_parent="";
500
501                                if ($r_rel->lnb=='s' && $r_rel->lnh=='1') {
502                                        // c'est une notice chapeau
503                                        global $link_serial,$link_analysis, $link_bulletin, $link_explnum_serial ;
504                                        $link_serial_sub = $base_path."/catalog.php?categ=serials&sub=view&serial_id=".$r_rel->linked_notice;
505                                        // function serial_display ($id, $level='1', $action_serial='', $action_analysis='', $action_bulletin='', $lien_suppr_cart="", $lien_explnum="", $bouton_explnum=1,$print=0,$show_explnum=1, $show_statut=0, $show_opac_hidden_fields=true, $draggable=0 ) {
506                                        $serial = new serial_display($r_rel->linked_notice, 0, $link_serial_sub, $link_analysis, $link_bulletin, "", "", 0, $this->print_mode, $this->show_explnum, $this->show_statut, $this->show_opac_hidden_fields, 1, true);
507                                        $aff = $serial->header;
508                                } else if ($r_rel->lnb=='a' && $r_rel->lnh=='2') {
509                                        // c'est un dépouillement de bulletin
510                                        global $link_serial, $link_analysis, $link_bulletin, $link_explnum_analysis ;
511                                        if(!$link_analysis){
512                                                $link_analysis=$base_path."/catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=!!bul_id!!&art_to_show=!!id!!";
513                                        }
514                                        $serial = new serial_display($r_rel->linked_notice, 0, $link_serial, $link_analysis, $link_bulletin, "", "", 0, $this->print_mode, $this->show_explnum, $this->show_statut, $this->show_opac_hidden_fields, 1, true);
515                                        $aff = $serial->result;
516                                } else {
517                                        if($link_parent && $r_rel->lnb=='b' && $r_rel->lnh=='2'){
518                                                $requete="SELECT bulletin_id FROM bulletins WHERE num_notice='".$r_rel->linked_notice."'";
519                                                $res=pmb_mysql_query($requete);
520                                                if(pmb_mysql_num_rows($res)){
521                                                        $link_parent=$base_path."/catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=".pmb_mysql_result($res,0,0);
522                                                }
523                                        }
524                                        // dans les autres cas
525                                        //function mono_display($id, $level=1, $action='', $expl=1, $expl_link='', $lien_suppr_cart="", $explnum_link='', $show_resa=0, $print=0, $show_explnum=1, $show_statut=0, $anti_loop='', $draggable=0, $no_link=false, $show_opac_hidden_fields=true,$ajax_mode=0) {
526                                        $parent_notice=new mono_display($r_rel->linked_notice,0,$link_parent, 1, '', "", '', 0, $this->print_mode, $this->show_explnum, $this->show_statut, '', 1, true, $this->show_opac_hidden_fields, 0);
527                                        $aff = $parent_notice->header ;
528                                        $this->nb_expl+=$parent_notice->nb_expl;
529                                }
530
531                                //Présentation différente si il y en a un ou plusieurs
532                                if (pmb_mysql_num_rows($result_linked)==1) {
533                                        $this->isbd.="<br /><b>".$relation_listup->table[$r_rel->relation_type]."</b> ".$aff."<br />";
534                                } else {
535                                        if ($r_rel->relation_type!=$r_type_local) {
536                                                $r_type_local=$r_rel->relation_type;
537                                                if ($ul_opened) {
538                                                        $this->isbd.="</ul>";
539                                                        $this->isbd.="\n<b>".$relation_listup->table[$r_rel->relation_type]."</b>";
540                                                        $this->isbd.="\n<ul class='notice_rel'>\n";
541                                                        $ul_opened=true;
542                                                } else {
543                                                        $this->isbd.="\n<br />";
544                                                        $this->isbd.="\n<b>".$relation_listup->table[$r_rel->relation_type]."</b>";
545                                                        $this->isbd.="\n<ul class='notice_rel'>\n";
546                                                        $ul_opened=true;
547                                                }
548                                        }
549                                        $this->isbd.="\n<li>".$aff."</li>\n";
550                                }
551                        }
552                        if ($ul_opened) $this->isbd.="\n</ul>\n";
553                }
554
555                if($pmb_show_notice_id || $pmb_show_permalink) $this->isbd .= "<br />";
556                if($pmb_show_notice_id){
557                        $prefixe = explode(",",$pmb_show_notice_id);
558                        $this->isbd .= "<b>".$msg['notice_id_libelle']."&nbsp;</b>".($prefixe[1] ? $prefixe[1] : '').$this->notice_id."<br />";
559                }
560                // Permalink OPAC
561                if ($pmb_show_permalink) {
562                                $this->isbd .= "<b>".$msg["notice_permalink_opac"]."&nbsp;</b><a href='".$pmb_opac_url."index.php?lvl=notice_display&id=".$this->notice_id."' target=\"__LINK__\">".$pmb_opac_url."index.php?lvl=notice_display&id=".$this->notice_id."</a><br />";
563                }
564                // fin du niveau 1
565                if($this->level == 1) {
566                        if ($this->show_explnum) {
567                                $explnum = show_explnum_per_notice($this->notice_id, 0, $this->lien_explnum);
568                                if ($explnum) $this->isbd .= "<br /><b>$msg[explnum_docs_associes]</b><br />".$explnum ;
569                                if ($this->notice->niveau_biblio == 'a' && $this->notice->niveau_hierar == '2' && (SESSrights & CATALOGAGE_AUTH) && $this->bouton_explnum) $this->isbd .= "<br /><input type='button' class='bouton' value=' $msg[explnum_ajouter_doc] ' onClick=\"document.location='".$base_path."/catalog.php?categ=serials&analysis_id=$this->notice_id&sub=analysis&action=explnum_form&bul_id=$this->bul_id'\">" ;
570                        }
571                        return;
572                }
573                // début du niveau 2
574
575                // map
576                if($pmb_map_activate && $this->show_map){
577                        $this->isbd.=$this->map->get_map();
578                }
579                // note générale
580                if($this->notice->n_gen)
581                        $this->isbd .= "<br /><b>$msg[265]</b>:&nbsp;".nl2br(htmlentities($this->notice->n_gen,ENT_QUOTES, $charset));
582                // note de contenu : non-applicable aux périodiques ??? Ha bon pourquoi ?
583                if($this->notice->n_contenu)
584                        $this->isbd .= "<br /><b>$msg[266]</b>:&nbsp;".nl2br($this->notice->n_contenu);
585                // résumé
586                if($this->notice->n_resume)
587                        $this->isbd .= "<br /><b>$msg[267]</b>:&nbsp;".nl2br($this->notice->n_resume);
588
589                // fin du niveau 2
590                if($this->level == 2)
591                        return;
592
593                // début du niveau 3
594                // fin du niveau 3
595                if($this->level == 3)
596                        return;
597
598                // début du niveau 4
599                // catégories
600                $categ_repetables = array() ;
601                if(!count($categories_top)) {
602                        $q = "select num_thesaurus,id_noeud from noeuds where num_parent in(select id_noeud from noeuds where autorite='TOP') ";
603                        $r = pmb_mysql_query($q, $dbh);
604                        while($res = pmb_mysql_fetch_object($r)) {
605                                $categories_top[]=$res->id_noeud;
606                        }
607                }
608                $requete = "select * from (
609                        select libelle_thesaurus, if (catlg.num_noeud is null, catdef.libelle_categorie, catlg.libelle_categorie ) as categ_libelle, noeuds.id_noeud , noeuds.num_parent, langue_defaut,id_thesaurus, if(catdef.langue = '".$lang."',2, if(catdef.langue= thesaurus.langue_defaut ,1,0)) as p, ordre_vedette, ordre_categorie
610                        FROM ((noeuds
611                        join thesaurus ON thesaurus.id_thesaurus = noeuds.num_thesaurus
612                        left join categories as catdef on noeuds.id_noeud=catdef.num_noeud and catdef.langue = thesaurus.langue_defaut
613                        left join categories as catlg on catdef.num_noeud = catlg.num_noeud and catlg.langue = '".$lang."'))
614                        ,notices_categories
615                        where notices_categories.num_noeud=noeuds.id_noeud and
616                        notices_categories.notcateg_notice=".$this->notice_id." order by id_thesaurus, noeuds.id_noeud, p desc
617                        ) as list_categ group by id_noeud";
618                if ($thesaurus_categories_affichage_ordre==1) $requete .= " order by ordre_vedette, ordre_categorie";
619
620                $result_categ=@pmb_mysql_query($requete);
621                if (pmb_mysql_num_rows($result_categ)) {
622                        while($res_categ = pmb_mysql_fetch_object($result_categ)) {
623                                $libelle_thesaurus=$res_categ->libelle_thesaurus;
624                                $categ_id=$res_categ->id_noeud  ;
625                                $libelle_categ=$res_categ->categ_libelle ;
626                                $num_parent=$res_categ->num_parent ;
627                                $langue_defaut=$res_categ->langue_defaut ;
628                                $categ_head=0;
629                                if(in_array($categ_id,$categories_top)) $categ_head=1;
630
631                                if ($thesaurus_categories_show_only_last || $categ_head) {
632                                        if ($use_opac_url_base) $url_base_lien_aut = $opac_url_base."index.php?&lvl=categ_see&id=" ;
633                                        else $url_base_lien_aut=$base_path."/autorites.php?categ=categories&sub=categ_form&id=";
634                                        if ( (SESSrights & AUTORITES_AUTH || $use_opac_url_base) && (!$this->print_mode) ) $libelle_aff_complet = "<a href='".$url_base_lien_aut.$categ_id."' class='lien_gestion'>".$libelle_categ."</a>";
635                                        else $libelle_aff_complet =$libelle_categ;
636                                        if ($thesaurus_mode_pmb) {
637                                                $categ_repetables[$libelle_thesaurus][] = $libelle_aff_complet;
638                                        } else $categ_repetables['MONOTHESAURUS'][] = $libelle_aff_complet;
639
640                                } else {
641                                        if(!$categories_memo[$categ_id]) {
642                                                $anti_recurse[$categ_id]=1;
643                                                $path_table='';
644                                                $requete = "select id_noeud as categ_id, num_noeud, num_parent as categ_parent, libelle_categorie as categ_libelle, num_renvoi_voir as categ_see, note_application as categ_comment, if(langue = '".$lang."',2, if(langue= '".$langue_defaut."' ,1,0)) as p
645                                                        FROM noeuds, categories where id_noeud ='".$num_parent."'
646                                                        AND noeuds.id_noeud = categories.num_noeud
647                                                        order by p desc limit 1";
648
649                                                $result=@pmb_mysql_query($requete);
650                                                if (pmb_mysql_num_rows($result)) {
651                                                        $parent = pmb_mysql_fetch_object($result);
652                                                        $anti_recurse[$parent->categ_id]=1;
653                                                        $path_table[] = array(
654                                                                                'id' => $parent->categ_id,
655                                                                                'libelle' => $parent->categ_libelle);
656
657                                                        // on remonte les ascendants
658                                                        while (($parent->categ_parent)&&(!$anti_recurse[$parent->categ_parent])) {
659                                                                $requete = "select id_noeud as categ_id, num_noeud, num_parent as categ_parent, libelle_categorie as categ_libelle,     num_renvoi_voir as categ_see, note_application as categ_comment, if(langue = '".$lang."',2, if(langue= '".$langue_defaut."' ,1,0)) as p
660                                                                        FROM noeuds, categories where id_noeud ='".$parent->categ_parent."'
661                                                                        AND noeuds.id_noeud = categories.num_noeud
662                                                                        order by p desc limit 1";
663                                                                $result=@pmb_mysql_query($requete);
664                                                                if (pmb_mysql_num_rows($result)) {
665                                                                        $parent = pmb_mysql_fetch_object($result);
666                                                                        $anti_recurse[$parent->categ_id]=1;
667                                                                        $path_table[] = array(
668                                                                                                'id' => $parent->categ_id,
669                                                                                                'libelle' => $parent->categ_libelle);
670                                                                } else {
671                                                                        break;
672                                                                }
673                                                        }
674                                                 $anti_recurse=array();
675                                                } else $path_table=array();
676                                                // ceci remet le tableau dans l'ordre général->particulier
677                                                $path_table = array_reverse($path_table);
678                                                if(sizeof($path_table)) {
679                                                        $temp_table='';
680                                                        while(list($xi, $l) = each($path_table)) {
681                                                                $temp_table[] = $l['libelle'];
682                                                        }
683                                                        $parent_libelle = join(':', $temp_table);
684                                                        $catalog_form = $parent_libelle.':'.$libelle_categ;
685                                                } else {
686                                                        $catalog_form = $libelle_categ;
687                                                }
688
689                                                if ($use_opac_url_base) $url_base_lien_aut = $opac_url_base."index.php?&lvl=categ_see&id=" ;
690                                                else $url_base_lien_aut=$base_path."/autorites.php?categ=categories&sub=categ_form&id=";
691                                                if ((SESSrights & AUTORITES_AUTH || $use_opac_url_base) && (!$this->print_mode) ) $libelle_aff_complet = "<a href='".$url_base_lien_aut.$categ_id."' class='lien_gestion'>".$catalog_form."</a>";
692                                                else $libelle_aff_complet =$catalog_form;
693                                                if ($thesaurus_mode_pmb) {
694                                                        $categ_repetables[$libelle_thesaurus][] = $libelle_aff_complet;
695                                                } else $categ_repetables['MONOTHESAURUS'][] = $libelle_aff_complet;
696
697                                                $categories_memo[$categ_id]=$libelle_aff_complet;
698                                                $libelle_thesaurus_memo[$categ_id]=$libelle_thesaurus;
699
700                                        } else {
701                                                if ($thesaurus_mode_pmb) $categ_repetables[$libelle_thesaurus_memo[$categ_id]][] =$categories_memo[$categ_id];
702                                                else $categ_repetables['MONOTHESAURUS'][] =$categories_memo[$categ_id] ;
703                                        }
704                                }
705                        }
706                }
707
708                while (list($nom_tesaurus, $val_lib)=each($categ_repetables)) {
709                        //c'est un tri par libellé qui est demandé
710                        if ($thesaurus_categories_affichage_ordre==0){
711                                $tmp=array();
712                                foreach ( $val_lib as $key => $value ) {
713                                        $tmp[$key]=strip_tags($value);
714                                }
715                                $tmp=array_map("convert_diacrit",$tmp);//On enlève les accents
716                                $tmp=array_map("strtoupper",$tmp);//On met en majuscule
717                                asort($tmp);//Tri sur les valeurs en majuscule sans accent
718                                foreach ( $tmp as $key => $value ) {
719                                        $tmp[$key]=$val_lib[$key];//On reprend les bons couples clé / libellé
720                                }
721                                $val_lib=$tmp;
722                        }
723
724                        if ($thesaurus_mode_pmb) {
725                                if (!$thesaurus_categories_categ_in_line) $categ_repetables_aff = "[".$nom_tesaurus."] ".implode("<br />[".$nom_tesaurus."] ",$val_lib) ;
726                                else $categ_repetables_aff = "<b>".$nom_tesaurus."</b><br />".implode(" $pmb_keyword_sep ",$val_lib) ;
727                        } else if (!$thesaurus_categories_categ_in_line) $categ_repetables_aff = implode("<br />",$val_lib) ;
728                        else $categ_repetables_aff = implode(" $pmb_keyword_sep ",$val_lib) ;
729
730                        if($categ_repetables_aff) $tmpcateg_aff .= "<br />$categ_repetables_aff";
731                }
732                if ($tmpcateg_aff) $this->isbd .= "<br />$tmpcateg_aff";
733
734                // Concepts
735                if ($thesaurus_concepts_active == 1) {
736                        $index_concept = new index_concept($this->notice_id, TYPE_NOTICE);
737                        $this->isbd .= $index_concept->get_isbd_display();
738                }
739
740                // fin du niveau 4
741                if($this->level == 4)
742                        return;
743
744                // début du niveau 5
745                // langues
746                if(count($this->langues)) {
747                        $langues = "<b>${msg[537]}</b>&nbsp;: ".construit_liste_langues($this->langues);
748                        }
749                if(count($this->languesorg)) {
750                        $langues .= " <b>${msg[711]}</b>&nbsp;: ".construit_liste_langues($this->languesorg);
751                        }
752                if($langues)
753                        $this->isbd .= "<br />$langues";
754
755                // indexation libre
756                if($this->notice->index_l)
757                        $this->isbd .= "<br /><b>${msg[324]}</b>&nbsp;: ".htmlentities($this->notice->index_l,ENT_QUOTES, $charset);
758
759                // indexation interne
760                if($this->notice->indexint) {
761                        $indexint = new indexint($this->notice->indexint);
762                        if ($this->print_mode) $indexint_isbd=$indexint->display; else $indexint_isbd=$indexint->isbd_entry_lien_gestion;
763                        $this->isbd .= "<br /><b>${msg[indexint_catal_title]}</b>&nbsp;: ".$indexint_isbd;
764                }
765
766                //code (ISSN,...)
767                if ($this->notice->code) $this->isbd .="<br /><b>${msg[165]}</b>&nbsp;: ".$this->notice->code;
768
769                $authperso = new authperso_notice($this->notice_id);
770                $this->isbd .=$authperso->get_notice_display();
771
772                //Champs personalisés
773                $perso_aff = "" ;
774                if (!$this->p_perso->no_special_fields) {
775                        $perso_=$this->p_perso->show_fields($this->notice_id);
776                        for ($i=0; $i<count($perso_["FIELDS"]); $i++) {
777                                $p=$perso_["FIELDS"][$i];
778                                // ajout de && ($p['OPAC_SHOW']||$this->show_opac_hidden_fields) afin de masquer les champs masqué de l'POAC en diff de bannette.
779                                if ($p["AFF"] && ($p['OPAC_SHOW']||$this->show_opac_hidden_fields)) $perso_aff .="<br />".$p["TITRE"]." ".$p["AFF"];
780                        }
781                }
782                if ($perso_aff) $this->isbd.=$perso_aff ;
783
784                //Notices liées
785                if ((count($this->childs))&&(!$this->print_mode)&&(!$this->no_link)) {
786                        $link = $base_path.'/catalog.php?categ=isbd&id=!!id!!';
787                        $link_expl = $base_path.'/catalog.php?categ=edit_expl&id=!!notice_id!!&cb=!!expl_cb!!&expl_id=!!expl_id!!';
788                        $link_explnum = $base_path.'/catalog.php?categ=edit_explnum&id=!!notice_id!!&explnum_id=!!explnum_id!!';
789                        global $relation_typedown;
790                        if (!$relation_typedown) $relation_typedown=new marc_list("relationtypedown");
791                        reset($this->childs);
792                        if(!$load_tablist_js) $aff_childs="<script type='text/javascript' src='".$base_path."/javascript/tablist.js'></script>\n";
793                        $aff_childs.="<br />";
794                        $load_tablist_js=1;
795                        $anti_loop=$this->anti_loop;
796                        $anti_loop[]=$this->notice_id;
797                        $n_childs=0;
798                        while ((list($rel_type,$child_notices)=each($this->childs))&&($n_childs<100)) {
799                                $aff_intermediaire="";
800                                for ($i=0; $i<count($child_notices); $i++) {
801                                        $as=array_search($child_notices[$i],$anti_loop);
802                                        if ($as===false) {
803                                                global $pmb_notice_fille_format;
804                                                if($pmb_notice_fille_format) $level_fille = 0;
805                                                else $level_fille = 6;
806
807                                                // il faut aller chercher le niveau biblio et niveau hierar de la notice liée
808                                                $requete_nbnh="select l.niveau_biblio as lnb, l.niveau_hierar as lnh, rank from notices as l join notices_relations on num_notice=notice_id where notice_id='".$child_notices[$i]."' ";
809                                                $r_rel=pmb_mysql_fetch_object(pmb_mysql_query($requete_nbnh));
810                                                if($r_rel->rank != $i){
811                                                        $req = "update notices_relations set rank='$i' where num_notice='".$child_notices[$i]."' and relation_type='".$rel_type."' and linked_notice='".$anti_loop[count($serial->anti_loop)-1]."'";
812                                                        pmb_mysql_query($req,$dbh);
813                                                }
814                                                if ($r_rel->lnb=='a' && $r_rel->lnh=='2') {
815                                                        // c'est un dépouillement de bulletin
816                                                        global $link_serial, $link_analysis, $link_bulletin, $link_explnum_analysis ;
817                                                        if(!$link_analysis){
818                                                                $link_analysis=$base_path."/catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=!!bul_id!!&art_to_show=!!id!!";
819                                                        }
820                                                        $serial = new serial_display($child_notices[$i], $level_fille, $link_serial, $link_analysis, $link_bulletin, "", $link_explnum_analysis, 0, 0, 1, 1 ,1,0,0,$anti_loop );
821
822                                                        if((count($serial->anti_loop) == 1) && $sort_children){
823                                                                //Drag pour trier les notices filles
824                                                                $id_elt =  $serial->notice_id.($serial->anti_loop?"_p".implode("_",$serial->anti_loop):"");
825                                                                $drag_fille = "<div id=\"drag_".$id_elt."\" handler=\"handle_".$id_elt."\" dragtype='daughter' draggable='yes' recepttype='daughter' recept='yes'
826                                                                        dragicon=\"".$base_path."/images/icone_drag_notice.png\" dragtext='".htmlentities($serial->tit1,ENT_QUOTES,$charset)."' callback_before=\"is_expandable\"
827                                                                        callback_after=\"\" downlight=\"noti_downlight\" highlight=\"noti_highlight\" fille='$child_notices[$i]' pere='".$anti_loop[count($serial->anti_loop)-1]."' order='$i' type_rel=\"$rel_type\">";
828                                                                $drag_fille .= "<span id=\"handle_".$id_elt."\" style=\"float:left; padding-right : 7px\"><img src=\"".$base_path."/images/sort.png\" style='width:12px; vertical-align:middle' /></span>";
829                                                                $display_fille = $serial->result;
830                                                        } else {
831                                                                $drag_fille ="";
832                                                                $display_fille = ($pmb_notice_fille_format ? "<li>".$serial->result."</li>" : $serial->result);
833                                                        }
834                                                        $aff = $drag_fille.$display_fille;
835                                                        if($drag_fille)
836                                                                $aff .= "</div>";
837                                                } elseif ($r_rel->lnb=='b' && $r_rel->lnh=='2') {
838                                                        // c'est une notice de bulletin, on n'affiche rien en aff de notice chapeau
839                                                        //On décrémente pour neutraliser l'incrément ultérieur : on ne compte pas les liens vers notices de bulletin dans la limite de liens affichés
840                                                        $n_childs--;
841                                                        $aff = "";
842                                                } elseif ($r_rel->lnb=='s' && $r_rel->lnh=='1') {
843                                                        // c'est une notice de pério
844                                                        global $link_serial, $link_analysis, $link_bulletin, $link_explnum_serial ;
845                                                        $link_serial_sub = $base_path."/catalog.php?categ=serials&sub=view&serial_id=".$child_notices[$i];
846                                                        $serial = new serial_display($child_notices[$i], $level_fille, $link_serial_sub, $link_analysis, $link_bulletin, "", $link_explnum_serial, 0, $this->print_mode, 1, 1 ,1,0,0,$anti_loop);
847
848                                                        if((count($serial->anti_loop) == 1) && $sort_children){
849                                                                //Drag pour trier les notices filles
850                                                                $id_elt =  $serial->notice_id.($serial->anti_loop?"_p".implode("_",$serial->anti_loop):"");
851                                                                $drag_fille = "<div id=\"drag_".$id_elt."\" handler=\"handle_".$id_elt."\" dragtype='daughter' draggable='yes' recepttype='daughter' recept='yes'
852                                                                        dragicon=\"".$base_path."/images/icone_drag_notice.png\" dragtext='".htmlentities($serial->tit1,ENT_QUOTES,$charset)."' callback_before=\"is_expandable\"
853                                                                        callback_after=\"\" downlight=\"noti_downlight\" highlight=\"noti_highlight\" fille='$child_notices[$i]' pere='".$anti_loop[count($serial->anti_loop)-1]."' order='$i' type_rel=\"$rel_type\">";
854                                                                $drag_fille .= "<span id=\"handle_".$id_elt."\" style=\"float:left; padding-right : 7px\"><img src=\"".$base_path."/images/sort.png\" style='width:12px; vertical-align:middle' /></span>";
855                                                                $display_fille = $serial->result;
856                                                        } else {
857                                                                $drag_fille = "";
858                                                                $display_fille = ($pmb_notice_fille_format ? "<li>".$serial->result."</li>" : $serial->result);
859                                                        }
860                                                        $aff = $drag_fille.$display_fille;
861                                                        if($drag_fille)
862                                                                $aff .= "</div>";
863                                                } else {
864                                                        $display = new mono_display($child_notices[$i], $level_fille, $link, 1, $link_expl, '', $link_explnum,1, 0, 1, 1,$anti_loop,$this->drag);
865
866                                                        if((count($display->anti_loop) == 1) && $sort_children) {
867                                                                //Drag pour trier les notices filles
868                                                                $id_elt =  $display->notice_id.($display->anti_loop?"_p".implode("_",$display->anti_loop):"");
869                                                                $drag_fille = "<div id=\"drag_".$id_elt."\" handler=\"handle_".$id_elt."\" dragtype='daughter' draggable='yes' recepttype='daughter' recept='yes'
870                                                                        dragicon=\"".$base_path."/images/icone_drag_notice.png\" dragtext='".htmlentities($display->tit1,ENT_QUOTES,$charset)."' callback_before=\"is_expandable\"
871                                                                        callback_after=\"\" downlight=\"noti_downlight\" highlight=\"noti_highlight\" fille='$child_notices[$i]' pere='".$anti_loop[count($display->anti_loop)-1]."' order='$i' type_rel=\"$rel_type\" >";
872                                                                $drag_fille .= "<span id=\"handle_".$id_elt."\" style=\"float:left; padding-right : 7px\"><img src=\"".$base_path."/images/sort.png\" style='width:12px; vertical-align:middle' /></span>";
873                                                                $display_fille = $display->result;
874                                                        } else {
875                                                                $drag_fille = "";
876                                                            $display_fille = ($pmb_notice_fille_format ? "<li>".$display->result."</li>" : $display->result);
877                                                        }
878                                                        $display->result=str_replace("<!-- !!bouton_modif!! -->"," ",$display->result);
879                                                        $aff = $drag_fille.$display_fille;
880                                                        $this->nb_expl+=$display->nb_expl;
881                                                        if($drag_fille)
882                                                                $aff .= "</div>";
883                                                }
884                                                $aff_intermediaire.=$aff;
885                                        }
886                                        $n_childs++;
887                                }
888                                if ($aff_intermediaire) {
889                                        $aff_childs.="<b>".$relation_typedown->table[$rel_type]."</b>";
890                                        $aff_childs.="<blockquote>";
891                                        if($pmb_notice_fille_format)
892                                                $aff_childs.= "<ul class='notice_rel'>";
893                                        $aff_childs.= $aff_intermediaire ;
894                                        if($pmb_notice_fille_format)
895                                                $aff_childs.= "</ul>";
896                                        $aff_childs.="</blockquote>";
897                                }
898                        }
899                        $this->isbd.=$aff_childs;
900                }
901                $this->do_image($this->isbd);
902                $this->isbd .= "<!-- !!avis_notice!! -->";
903
904                //Documents numériques
905                if ($this->show_explnum) {
906                        $explnum = show_explnum_per_notice($this->notice_id, 0, $this->lien_explnum);
907                        if ($explnum) $this->isbd .= "<br /><b>$msg[explnum_docs_associes]</b> (".show_explnum_per_notice($this->notice->notice_id, 0, $this->lien_explnum,array(),true).")<br />".$explnum ;
908                        if ($this->notice->niveau_biblio == 'a' && $this->notice->niveau_hierar == '2' && (SESSrights & CATALOGAGE_AUTH) && $this->bouton_explnum) $this->isbd .= "<br /><input type='button' class='bouton' value=' $msg[explnum_ajouter_doc] ' onClick=\"document.location='".$base_path."/catalog.php?categ=serials&analysis_id=$this->notice_id&sub=analysis&action=explnum_form&bul_id=$this->bul_id'\">" ;
909                }
910
911                // fin du niveau 5
912                if($this->level == 5)
913                        return;
914
915                // début du niveau 6
916                if($this->notice->niveau_biblio=="s") {
917                        // Si notice-mère alors on compte le nombre de numéros (bulletins)
918                        $this->isbd.=$this->get_etat_periodique();
919                        $this->isbd.=$this->print_etat_periodique();
920                        //état des collections
921                        $collstate = new collstate(0,$this->notice_id);
922                        //$this->isbd.= $collstate->get_callstate_isbd();
923                        if($pmb_etat_collections_localise)
924                                $collstate->get_display_list("",0,0,0,1,0,true);
925                        else
926                                $collstate->get_display_list("",0,0,0,0,0,true);
927                        if($collstate->nbr) {
928                                $this->isbd .= "<br /><b>".$msg["abts_onglet_collstate"]."</b><br />";
929                                $this->isbd.=$collstate->liste;
930                        }
931                }
932                // fin du niveau 6
933                return;
934
935
936        }
937
938/**
939 * Creation de l'image vignette associée
940 *
941 * @param  $entree
942 */
943function do_image(&$entree) {
944        global $charset;
945        global $pmb_book_pics_show ;
946        global $pmb_book_pics_url ;
947        global $pmb_book_pics_msg;
948        // pour url OPAC en diff DSI
949        global $prefix_url_image ;
950        global $depliable ;
951
952        if ($this->notice->code || $this->notice->thumbnail_url) {
953                if ($pmb_book_pics_show=='1' && ($pmb_book_pics_url || $this->notice->thumbnail_url)) {
954                        $code_chiffre = pmb_preg_replace('/-|\.| /', '', $this->notice->code);
955                        $url_image = $pmb_book_pics_url ;
956                        $url_image = $prefix_url_image."getimage.php?url_image=".urlencode($url_image)."&amp;noticecode=!!noticecode!!&amp;vigurl=".urlencode($this->notice->thumbnail_url) ;
957                        if ($depliable) $image = "<img class='img_notice' id='PMBimagecover".$this->notice_id."' src='".$prefix_url_image."images/vide.png' align='right' hspace='4' vspace='2' isbn='".$code_chiffre."' url_image='".$url_image."' vigurl=\"".$this->notice->thumbnail_url."\">";
958                        else {
959                                if ($this->notice->thumbnail_url) {
960                                        $url_image_ok=$this->notice->thumbnail_url;
961                                        $title_image_ok = "";
962                                } else {
963                                        $url_image_ok = str_replace("!!noticecode!!", $code_chiffre, $url_image) ;
964                                        $title_image_ok = htmlentities($pmb_book_pics_msg, ENT_QUOTES, $charset);
965                                }
966                                $image = "<img class='img_notice' id='PMBimagecover".$this->notice_id."' src='".$url_image_ok."' title=\"".$title_image_ok."\" align='right' hspace='4' vspace='2'>";
967                        }
968                } else $image="" ;
969                if ($image) {
970                        $entree = "<table width='100%'><tr><td valign=top>$entree</td><td valign=top align=right>$image</td></tr></table>" ;
971                } else {
972                        $entree = "<table width='100%'><tr><td valign=top>$entree</td></tr></table>" ;
973                }
974
975        } else {
976                $entree = "<table width='100%'><tr><td valign=top>$entree</td></tr></table>" ;
977        }
978}
979
980        function get_etat_periodique() {
981                global $dbh;
982                $bulletins=0;
983                $nb_expl=0;
984                $nb_notices=0;
985                if($this->notice->niveau_biblio=="s") {
986                        $requete = "SELECT * FROM bulletins WHERE bulletin_notice=".$this->notice_id;
987                        $Query = pmb_mysql_query($requete, $dbh);
988                        $bulletins=pmb_mysql_num_rows($Query);
989                        while (($row = pmb_mysql_fetch_array($Query))) {
990                                $requete2 = "SELECT count( * )  AS nb_notices FROM  analysis WHERE analysis_bulletin =".$row['bulletin_id'];
991                                $Query2 = pmb_mysql_query($requete2, $dbh);
992                                $analysis_array=pmb_mysql_fetch_array($Query2);
993                                $nb_notices+=$analysis_array['nb_notices'];
994                                $requete3 = "SELECT count( expL_id )  AS nb_expl FROM  exemplaires WHERE expl_bulletin =".$row['bulletin_id'];
995                                $Query3 = pmb_mysql_query($requete3, $dbh);
996                                $expl_array=pmb_mysql_fetch_array($Query3);
997                                $nb_expl+=$expl_array['nb_expl'];
998                        };
999                        $requete="SELECT COUNT(collstate_id) FROM collections_state WHERE id_serial='".$this->notice_id."'";
1000                        $Query=pmb_mysql_query($requete, $dbh);
1001                        if($Query && pmb_mysql_num_rows($Query)){
1002                                $this->serial_nb_etats_collection=pmb_mysql_result($Query,0,0);
1003                        }
1004                        $requete="SELECT COUNT(abt_id) FROM abts_abts WHERE num_notice='".$this->notice_id."' AND date_fin > CURDATE()";
1005                        $Query=pmb_mysql_query($requete, $dbh);
1006                        if($Query && pmb_mysql_num_rows($Query)){
1007                                $this->serial_nb_abo_actif=pmb_mysql_result($Query,0,0);
1008                        }
1009                        $this->serial_nb_bulletins=$bulletins;
1010                        $this->serial_nb_exemplaires=$nb_expl;
1011                        $this->serial_nb_articles=$nb_notices;
1012                }
1013        }
1014
1015        function print_etat_periodique() {
1016                global $msg;
1017                if($this->notice->niveau_biblio=="s") {
1018                        // Cas général : au moins un bulletin
1019                        if ($this->serial_nb_bulletins > 0)
1020                                {$affichage .="<br />\n
1021                                <b>".$msg["serial_bulletinage_etat"]."</b>
1022                                <table border='0' class='expl-list'>
1023                                <tr><td><strong>".$this->serial_nb_bulletins."</strong> ".$msg["serial_nb_bulletin"]."
1024                                <strong>".$this->serial_nb_exemplaires."</strong> ".$msg["bulletin_nb_ex"]."
1025                                <strong>".$this->serial_nb_articles."</strong> ".$msg["serial_nb_articles"]."
1026                                </td>
1027                                </tr></table>";
1028
1029                        } else { // 0 bulletin
1030                                $affichage .="<br /><br />\n
1031                                <b>".$msg["serial_bulletinage_etat"]."</b>
1032                                <table border='0' class='expl-list'>
1033                                <tr><td><strong>$bulletins</strong>
1034                                ".$msg["serial_nb_bulletin"]." : <strong>";
1035                                $affichage .=$msg["bull_no_expl"];
1036                                $affichage .="</strong></td>
1037                                </tr></table>";
1038                        }
1039                }
1040                return $affichage;
1041        }
1042
1043        // génération du header
1044        function do_header() {
1045                global $dbh, $base_path;
1046                global $charset,$msg;
1047                global $icon_doc,$biblio_doc,$use_opac_url_base,$opac_url_base;
1048                global $tdoc;
1049                global $no_aff_doc_num_image;
1050                global $pmb_notice_reduit_format;
1051
1052                $type_reduit = substr($pmb_notice_reduit_format,0,1);
1053
1054                //Icone type de Document
1055                $icon = $icon_doc[$this->notice->niveau_biblio.$this->notice->typdoc];
1056                if ($icon) {
1057                        $info_bulle_icon=$biblio_doc[$this->notice->niveau_biblio]." : ".$tdoc->table[$this->notice->typdoc];
1058                        if ($use_opac_url_base) $this->icondoc="<img src=\"".$opac_url_base."images/$icon\" alt=\"$info_bulle_icon\" title=\"$info_bulle_icon\" align='top' />";
1059                        else $this->icondoc="<img src=\"".$base_path."/images/$icon\" alt=\"$info_bulle_icon\" title=\"$info_bulle_icon\" align='top' />";
1060                }
1061
1062                //Icone nouveauté
1063                $icon = "icone_nouveautes.png";
1064                if($this->notice->notice_is_new){
1065                        $info_bulle_icon_new=$msg["notice_is_new_gestion"];
1066                        if ($use_opac_url_base) $this->icon_is_new="<img src=\"".$opac_url_base."images/$icon\" alt=\"$info_bulle_icon_new\" title=\"$info_bulle_icon_new\" align='top' />";
1067                        else $this->icon_is_new="<img src=\"".$base_path."/images/$icon\" alt=\"$info_bulle_icon_new\" title=\"$info_bulle_icon_new\" align='top' />";
1068                }
1069
1070                if ($this->notice->statut) {
1071                        $rqt_st = "SELECT class_html , gestion_libelle FROM notice_statut WHERE id_notice_statut='".$this->notice->statut."' ";
1072                        $res_st = pmb_mysql_query($rqt_st, $dbh);
1073                        $class_html = " class='".pmb_mysql_result($res_st, 0, 0)."' ";
1074                        if ($this->notice->statut>1) $txt = pmb_mysql_result($res_st, 0, 1) ;
1075                        else $txt = "" ;
1076                } else {
1077                        $class_html = " class='statutnot1' " ;
1078                        $txt = "" ;
1079                }
1080                if ($this->notice->commentaire_gestion) {
1081                        if ($txt) $txt .= ":\r\n".$this->notice->commentaire_gestion ;
1082                        else $txt = $this->notice->commentaire_gestion ;
1083                }
1084                if ($txt) {
1085                        $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='".$base_path."/images/spacer.gif' width='10' height='10' /></a></span></small>";
1086                        $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>" ;
1087                } else $statut = "<small><span $class_html style='margin-right: 3px;'><img src='".$base_path."/images/spacer.gif' width='10' height='10' /></span></small>";
1088                $this->aff_statut = $statut ;
1089
1090                if ($type_reduit=="H"){
1091                        $id_tpl=substr($pmb_notice_reduit_format,2);
1092                        if($id_tpl){
1093                                $tpl = new notice_tpl_gen($id_tpl);
1094                                $notice_tpl_header=$tpl->build_notice($this->notice_id);
1095                                if($notice_tpl_header){
1096                                        $this->header=$notice_tpl_header;
1097                                }
1098                        }
1099                }
1100                if ($type_reduit=="E" || $type_reduit=="P" ) {
1101                        // peut-être veut-on des personnalisés ?
1102                        $perso_voulus_temp = substr($pmb_notice_reduit_format,2) ;
1103                        if ($perso_voulus_temp!="") $perso_voulus = explode(",",$perso_voulus_temp);
1104                }
1105
1106                if ($type_reduit=="E") {
1107                        // zone de l'éditeur
1108                        if ($this->notice->ed1_id) {
1109                                $editeur = new editeur($this->notice->ed1_id);
1110                                $editeur_reduit = $editeur->display ;
1111                                if ($this->notice->year) $editeur_reduit .= " (".$this->notice->year.")";
1112                        } elseif ($this->notice->year) {
1113                                // année mais pas d'éditeur et si pas un article
1114                                if($this->notice->niveau_biblio != 'a' && $this->notice->niveau_hierar != 2)    $editeur_reduit = $this->notice->year." ";
1115                        }
1116                } else $editeur_reduit = "" ;
1117
1118                if ($type_reduit=="E" || $type_reduit=="P" ) {
1119                        if (!is_object($this->p_perso)) $this->p_perso = new parametres_perso("notices");
1120                        //Champs personalisés à ajouter au réduit
1121                        if (!$this->p_perso->no_special_fields) {
1122                                if (count($perso_voulus)) {
1123                                        $this->p_perso->get_values($this->notice_id) ;
1124                                        for ($i=0; $i<count($perso_voulus); $i++) {
1125                                                $perso_voulu_aff .= $this->p_perso->get_formatted_output($this->p_perso->values[$perso_voulus[$i]],$perso_voulus[$i])." " ;
1126                                        }
1127                                        $perso_voulu_aff=trim($perso_voulu_aff);
1128                                } else $perso_voulu_aff = "" ;
1129                        } else $perso_voulu_aff = "" ;
1130                }
1131
1132                if ($type_reduit!="H"){
1133                        $this->header = htmlentities($this->notice->tit1,ENT_QUOTES, $charset);
1134                        $this->memo_titre=$this->notice->tit1;
1135                        $this->memo_complement_titre=$this->notice->tit4;
1136                        $this->memo_titre_parallele=$this->notice->tit3;
1137                }
1138
1139                if ($type_reduit=='4') {
1140                        if ($this->memo_titre_parallele != "") {
1141                                $this->header .= "&nbsp;=&nbsp;".$this->memo_titre_parallele;
1142                        }
1143                }
1144
1145//              if ((floor($type_reduit/10) == 1)&&($this->memo_complement_titre)) {
1146//                      $this->header.="&nbsp;:&nbsp;".htmlentities($this->memo_complement_titre,ENT_QUOTES,$charset);
1147//              }
1148
1149                if ($type_reduit=="T" && $this->memo_complement_titre) {
1150                        $this->header.="&nbsp;:&nbsp;".htmlentities($this->memo_complement_titre,ENT_QUOTES,$charset);
1151                }
1152
1153                if (($type_reduit!='3') && ($type_reduit!='H')) {
1154                        $aut1_libelle = array() ;
1155                        //$this->responsabilites
1156                        $as = array_search ("0", $this->responsabilites["responsabilites"]) ;
1157                        if ($as!== FALSE && $as!== NULL) {
1158                                $auteur_0 = $this->responsabilites["auteurs"][$as] ;
1159                                $auteur = new auteur($auteur_0["id"]);
1160                                if ($auteur->isbd_entry)
1161                                        $this->header .= ' / '. $auteur->isbd_entry;
1162                        } else {
1163                                $as = array_keys ($this->responsabilites["responsabilites"], "1" ) ;
1164                                for ($i = 0 ; $i < count($as) ; $i++) {
1165                                        $indice = $as[$i] ;
1166                                        $auteur_1 = $this->responsabilites["auteurs"][$indice] ;
1167                                        $auteur = new auteur($auteur_1["id"]);
1168                                        $aut1_libelle[]= $auteur->isbd_entry;
1169                                }
1170                                $auteurs_liste = implode ("; ",$aut1_libelle) ;
1171                                if ($auteurs_liste)
1172                                        $this->header .= ' / '. $auteurs_liste ;
1173                        }
1174                }
1175
1176                if ($editeur_reduit) {
1177                        $this->header .= ' / '. $editeur_reduit ;
1178                }
1179                if ($perso_voulu_aff) {
1180                        $this->header .= ' / '. $perso_voulu_aff ;
1181                }
1182
1183                switch ($type_reduit) {
1184                        case "1":
1185                                if ($this->notice->year != '') {
1186                                        $this->header.=' ('.htmlentities($this->notice->year, ENT_QUOTES, $charset).')';
1187                                        //$this->header_texte.=' ('.$this->notice->year.')';
1188                                }
1189                                break;
1190                        case "2":
1191                                if ($this->notice->year != '') {
1192                                        $this->header.=' ('.htmlentities($this->notice->year, ENT_QUOTES, $charset).')';
1193                                        //$this->header_texte.=' ('.$this->notice->year.')';
1194                                }
1195                                if ($this->notice->code != '') {
1196                                        $this->header.=' / '.htmlentities($this->notice->code, ENT_QUOTES, $charset);
1197                                        //$this->header_texte.=' / '.$this->notice->code;
1198                                }
1199                                break;
1200                        default :
1201                                break;
1202                }
1203
1204                if (!$this->print_mode) {
1205                        if($this->notice->niveau_biblio == 's' && $this->notice->niveau_hierar == 1) {
1206                                if($this->action_serial)
1207                                        $this->header = "<a href=\"".$this->action_serial."\">".$this->header.'</a>';
1208                        }
1209                        if($this->notice->niveau_biblio == 'a' && $this->notice->niveau_hierar == 2) {
1210                                if($this->action_analysis)
1211                                        $this->header= "<a href=\"".$this->action_analysis."\">".$this->header.'</a>';
1212                                if ($this->level!=2)
1213                                        $this->header=$this->header." <i>in ".$this->parent_title." (".$this->parent_numero." ".($this->parent_date?$this->parent_date:$this->parent_aff_date_date).")</i> ";
1214                        }
1215                }
1216                if ($this->icon_is_new) $this->header = $this->header." ".$this->icon_is_new;
1217                global $use_opac_url_base, $opac_url_base, $use_dsi_diff_mode ;
1218                if($this->notice->lien) {
1219                        // ajout du lien pour les ressources électroniques
1220                        if (!$this->print_mode || $this->print_mode=='2' || $use_dsi_diff_mode){
1221                                $this->header .= "<a href=\"".$this->notice->lien."\" target=\"__LINK__\">";
1222                                if (!$use_opac_url_base) $this->header .= "<img src=\"".$base_path."/images/globe.gif\" border=\"0\" align=\"middle\" hspace=\"3\"";
1223                                else $this->header .= "<img src=\"".$opac_url_base."images/globe.gif\" border=\"0\" align=\"middle\" hspace=\"3\"";
1224                                $this->header .= " alt=\"";
1225                                $this->header .= $this->notice->eformat;
1226                                $this->header .= "\" title=\"";
1227                                $this->header .= $this->notice->eformat;
1228                                $this->header .= "\">";
1229                                $this->header .= "</a>";
1230                        }  elseif ($this->print_mode=='4') {
1231                                $this->header .= '<br />';
1232                                $this->header .= "<a href=\"".$this->notice->lien."\" target=\"__LINK__\">";
1233                                $this->header .= '<font size="-1">'.$this->notice->lien.'</font>';
1234                                $this->header .='</a>';
1235                        }else {
1236                                $this->header .= '<br />';
1237                                $this->header .= '<font size="-1">'.$this->notice->lien.'</font>';
1238                        }
1239                }
1240                if (!$this->print_mode || $this->print_mode=='2' && !$no_aff_doc_num_image) {
1241                        $sql_explnum = "SELECT explnum_id, explnum_nom FROM explnum WHERE explnum_notice = ".$this->notice_id;
1242                        $explnums = pmb_mysql_query($sql_explnum);
1243                        $explnumscount = pmb_mysql_num_rows($explnums);
1244                        if ($explnumscount == 1) {
1245                                $explnumrow = pmb_mysql_fetch_object($explnums);
1246                                if (!$use_opac_url_base) $this->header .= "<a href=\"".$base_path."/doc_num.php?explnum_id=".$explnumrow->explnum_id."\" target=\"__LINK__\">";
1247                                else $this->header .= "<a href=\"".$opac_url_base."doc_num.php?explnum_id=".$explnumrow->explnum_id."\" target=\"__LINK__\">";
1248                                if (!$use_opac_url_base) $this->header .= "<img src=\"".$base_path."/images/globe_orange.png\" border=\"0\" align=\"middle\" hspace=\"3\"";
1249                                else $this->header .= "<img src=\"".$opac_url_base."images/globe_orange.png\" border=\"0\" align=\"middle\" hspace=\"3\"";
1250                                $this->header .= " alt=\"";
1251                                $this->header .= htmlentities($explnumrow->explnum_nom,ENT_QUOTES,$charset);
1252                                $this->header .= "\" title=\"";
1253                                $this->header .= htmlentities($explnumrow->explnum_nom,ENT_QUOTES,$charset);
1254                                $this->header .= "\">";
1255                                $this->header .='</a>';
1256                        }
1257                        else if ($explnumscount > 1 ) {
1258                                if (!$use_opac_url_base) $this->header .= "<img src=\"".$base_path."/images/globe_rouge.png\" border=\"0\" align=\"middle\" hspace=\"3\">";
1259                                else $this->header .= "<img src=\"".$opac_url_base."images/globe_rouge.png\" border=\"0\" align=\"middle\" hspace=\"3\">";
1260                        }
1261                        if ($this->drag) $this->header.="<span onMouseOver='if(init_drag) init_drag();' id=\"NOTI_drag_".$this->notice_id."\" dragicon=\"".$base_path."/images/icone_drag_notice.png\" dragtext=\"".htmlentities($this->notice->tit1,ENT_QUOTES, $charset)."\" draggable=\"yes\" dragtype=\"notice\" callback_before=\"show_carts\" callback_after=\"\" style=\"padding-left:7px\"><img src=\"".$base_path."/images/notice_drag.png\"/></span>";
1262                }
1263                if ($this->icondoc) $this->header = $this->icondoc." ".$this->header;
1264                if ($this->show_statut) $this->header = $this->aff_statut." ".$this->header ;
1265        }
1266
1267        // récupération des valeurs en table
1268        function serial_display_fetch_data() {
1269                global $dbh;
1270                $requete = "SELECT * FROM notices WHERE notice_id=".$this->notice_id.' LIMIT 1';
1271                $myQuery = pmb_mysql_query($requete, $dbh);
1272                if (pmb_mysql_num_rows($myQuery)){
1273                        $this->notice = pmb_mysql_fetch_object($myQuery);
1274                }
1275                return pmb_mysql_num_rows($myQuery);
1276                }
1277
1278        } // fin classe serial_display
1279
1280        // -------------------------------------------------------------------
1281        //   classe bulletinage_display : utilisée pour le prêt de documents
1282        // -------------------------------------------------------------------
1283        class bulletinage_display {
1284        var $bul_id = 0;                // id du bulletinage à afficher
1285        var $display = '';              // texte à afficher
1286        var $parent_title = '';         // titre général de la revue à laquelle fait référence ce bulletinage
1287        var $bulletin_titre = '';       // titre de ce bulletin
1288        var $numerotation = '';         // mention de numérotation sur la revue
1289        var $periode      = '';         // mention de date de la revue (txt)
1290        var $date_date    = '';         // mention de date de la revue (date)
1291        var $header       = '';         // pour affichage réduit
1292
1293        // constructeur
1294        function bulletinage_display($id=0) {
1295                if(!$id) {
1296                        $this->display = "Error : bul_id is null";
1297                        return $this->bul_id;
1298                }
1299
1300                $this->bul_id = $id;
1301
1302                $this->fetch_bulletinage_data();
1303                $this->make_display();
1304
1305                return $this->bul_id;
1306        }
1307
1308        // fabrication de la mention à afficher
1309        function make_display() {
1310                if ($this->parent_title) {
1311                        $this->display = $this->parent_title;
1312                        } else {
1313                                $this->display = "error: unknown record";
1314                                return;
1315                                }
1316
1317                if((!$this->numerotation && !$this->periode && !$this->bulletin_titre && !$this->date_date) || !$this->bul_id) {
1318                        $this->display .= " error : missing information";
1319                        }
1320
1321                if($this->numerotation)
1322                        $this->display .= '. '.$this->numerotation;
1323
1324                $this->header = $this->display;
1325
1326                // affichage de la mention de date utile : mention_date si existe, sinon date_date
1327                if ($this->periode)
1328                        $date_affichee = " (".$this->periode.") ";
1329                        else $date_affichee .= " [".$this->aff_date_date."]";
1330                $this->display .= $date_affichee;
1331
1332                if ($date_affichee) $this->header .= $date_affichee ;
1333                }
1334
1335        // récupération des infos bulletinage en base
1336        function fetch_bulletinage_data() {
1337                global $msg, $dbh;
1338
1339                $requete = "SELECT bulletins.*, notices.tit1, date_format(date_date, '".$msg["format_date"]."') as aff_date_date FROM bulletins, notices ";
1340                $requete .= " WHERE bulletins.bulletin_id=".$this->bul_id;
1341                $requete .= " AND notices.notice_id=bulletins.bulletin_notice";
1342                $requete .= " AND notices.niveau_biblio='s' AND notices.niveau_hierar='1' LIMIT 1";
1343
1344                $myQuery = pmb_mysql_query($requete, $dbh);
1345                if(pmb_mysql_num_rows($myQuery)) {
1346                        $result = pmb_mysql_fetch_object($myQuery);
1347                        $this->parent_title = $result->tit1;
1348                        $this->bulletin_titre = $result->bulletin_titre;
1349                        $this->numerotation = $result->bulletin_numero;
1350                        $this->periode = $result->mention_date;
1351                        $this->date_date = $result->date_date;
1352                        $this->aff_date_date = $result->aff_date_date;
1353                        $this->bul_id = $result->bulletin_id;
1354                }
1355
1356                return;
1357        }
1358} // class serial_display
1359
Note: See TracBrowser for help on using the repository browser.