table; } if (!count($langue_doc)) { $langue_doc = new marc_list('lang'); $langue_doc = $langue_doc->table; } if (!count($icon_doc)) { $icon_doc = new marc_list('icondoc'); $icon_doc = $icon_doc->table; } if(!count($biblio_doc)) { $biblio_doc = new marc_list('nivbiblio'); $biblio_doc = $biblio_doc->table; } // propriétés pour le selecteur de panier $selector_prop = "toolbar=no, dependent=yes, resizable=yes, scrollbars=yes"; $cart_click = "onClick=\"openPopUp('./cart.php?object_type=NOTI&item=!!id!!&unq=!!unique!!', 'cart', 600, 700, -2, -2, '$selector_prop')\""; // définition de la classe d'affichage des monographies en liste class mono_display { var $notice_id = 0; // id de la notice à afficher var $isbn = 0; // isbn ou code EAN de la notice à afficher var $notice; // objet notice (tel que fetché dans la table 'notices' var $langues = array(); var $languesorg = array(); var $action = ''; // URL à associer au header var $header = ''; // chaine accueillant le chapeau de notice (peut-être cliquable) var $tit_serie = ''; // titre de série si applicable var $tit1 = ''; // valeur du titre 1 var $result = ''; // affichage final var $level = 1; // niveau d'affichage var $isbd = ''; // isbd de la notice en fonction du level défini var $simple_isbd = ""; // isbd de la notice en fonction du level défini, sans l'image var $expl = 0; // flag indiquant si on affiche les infos d'exemplaire var $nb_expl = 0; //nombre d'exemplaires var $link_expl = ''; // lien associé à un exemplaire var $responsabilites = array("responsabilites" => array(),"auteurs" => array()); // les auteurs var $categories = array();// les categories var $show_resa = 0; // flag indiquant si on affiche les infos de resa var $show_planning = 0; // flag indiquant si on affiche les infos de prévision var $p_perso; var $print_mode=0; // 0 affichage normal // 1 affichage impression sans liens // 2 affichage impression avec liens sur documents numeriques var $show_explnum=1; var $show_statut=0; var $aff_statut='' ; // carré de couleur pour signaler le statut de la notice var $tit_serie_lien_gestion ; var $childs=array(); //Filles de la notice var $anti_loop=""; var $drag=""; //Notice draggable ? var $no_link; var $show_opac_hidden_fields=true; var $ajax_mode=0; // constructeur------------------------------------------------------------ function mono_display( $id, // $id = id de la notice à afficher $level=1, // $level : // 0 : juste le header (titre / auteur principal avec le lien si applicable) // 1 : ISBD seul, pas de note, bouton modif, expl, explnum et résas // 6 : cas général détaillé avec notes, categ, langues, indexation... + boutons $action='', // $action = URL associée au header $expl=1, // $expl -> affiche ou non les exemplaires associés $expl_link='', // $expl_link -> lien associé à l'exemplaire avec !!expl_id!!, !!notice_id!! et !!expl_cb!! à mettre à jour $lien_suppr_cart="", // $lien_suppr_cart -> lien de suppression de la notice d'un caddie $explnum_link='', $show_resa=0, // $show_resa = affichage des resa ou pas $print=0, // $print = 0 affichage normal // 1 affichage impression sans liens // 2 affichage impression avec liens sur documents numeriques $show_explnum=1, $show_statut=0, $anti_loop='', $draggable=0, $no_link=false, $show_opac_hidden_fields=true, $ajax_mode=0, $show_planning=0 // $show_planning = affichage des prévisions ou pas ) { global $pmb_recherche_ajax_mode; global $categ; global $id_empr; if($pmb_recherche_ajax_mode){ $this->ajax_mode=$ajax_mode; if($this->ajax_mode) { if (is_object($id)){ $param['id']=$id->notice_id; } else { $param['id']=$id; } $param['function_to_call']="mono_display"; //if($level)$param['level']=$level; // à 6 if($action)$param['action']=$action; if($expl)$param['expl']=$expl; if($expl_link)$param['expl_link']=$expl_link; // if($lien_suppr_cart)$param['lien_suppr_cart']=$lien_suppr_cart; // if($explnum_link)$param['explnum_link']=$explnum_link; //if($show_resa)$param['show_resa']=$show_resa; if($print)$param['print']=$print; //if($show_explnum)$param['show_explnum']=$show_explnum; //if($show_statut)$param['show_statut']=$show_statut; //if($anti_loop)$param['anti_loop']=$anti_loop; //if($draggable)$param['draggable']=$draggable; if($no_link)$param['no_link']=$no_link; if($categ)$param['categ']=$categ; if($id_empr)$param['id_empr']=$id_empr; //if($show_opac_hidden_fields)$param['show_opac_hidden_fields']=$show_opac_hidden_fields; $this->mono_display_cmd=serialize($param); } } if(!$id) return; else { if (is_object($id)){ $this->notice_id = $id->notice_id; $this->notice = $id; $this->langues = get_notice_langues($this->notice_id, 0) ; // langues de la publication $this->languesorg = get_notice_langues($this->notice_id, 1) ; // langues originales $this->isbn = $id->code ; } else { $this->notice_id = $id; $this->mono_display_fetch_data(); } if(!$this->ajax_mode || !$level) { $this->childs=array(); $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"; $resultat=mysql_query($requete); if (mysql_num_rows($resultat)) { while ($r=mysql_fetch_object($resultat)) { $this->childs[$r->relation_type][]=$r->notice_id; } } } } global $memo_p_perso_notice; if(!$this->ajax_mode || !$level) { if(!$memo_p_perso_notice) { $memo_p_perso_notice=new parametres_perso("notices"); } $this->p_perso=$memo_p_perso_notice; } $this->level = $level; $this->expl = $expl; $this->show_resa = $show_resa; $this->link_expl = $expl_link; $this->link_explnum = $explnum_link; $this->lien_suppr_cart = $lien_suppr_cart; // mise à jour des liens $this->action = $action; $this->drag=$draggable; $this->print_mode=$print; $this->show_explnum=$show_explnum; $this->show_statut=$show_statut; $this->no_link=$no_link; $this->anti_loop=$anti_loop; //affichage ou pas des champs persos OPAC masqués $this->show_opac_hidden_fields=$show_opac_hidden_fields; $this->action = str_replace('!!id!!', $this->notice_id, $this->action); $this->responsabilites = get_notice_authors($this->notice_id) ; // mise à jour des catégories if(!$this->ajax_mode || !$level) $this->categories = get_notice_categories($this->notice_id) ; $this->show_planning = $show_planning; $this->do_header(); switch($level) { case 0: // là, c'est le niveau 0 : juste le header $this->result = $this->header; break; default: // niveau 1 et plus : header + isbd à générer $this->init_javascript(); if(!$this->ajax_mode) $this->do_isbd(); $this->finalize(); break; } return; } // finalisation du résultat (écriture de l'isbd) function finalize() { $this->result = str_replace('!!ISBD!!', $this->isbd, $this->result); } // génération du template javascript--------------------------------------- function init_javascript() { global $msg, $base_path, $pmb_recherche_ajax_mode; // propriétés pour le selecteur de panier $selector_prop = "toolbar=no, dependent=yes, width=500, height=400, resizable=yes, scrollbars=yes"; $cart_click = "onClick=\"openPopUp('".$base_path."/cart.php?object_type=NOTI&item=!!notice_id!!', 'cart', 600, 700, -2, -2, '$selector_prop')\""; $current=$_SESSION["CURRENT"]; if ($current!==false) { $print_action = " \"".$msg["histo_print"]."\""; } if($pmb_recherche_ajax_mode && $this->ajax_mode){ $javascript_template =" $attributs_drag
!!heada!!
"; if($this->is_child) $javascript_template .= ""; } else{ $javascript_template =" $attributs_drag
!!heada!!
"; if($this->is_child) $javascript_template .= ""; } $this->result = str_replace('!!id!!', $this->notice_id.($this->anti_loop?"_p".implode("_",$this->anti_loop):""), $javascript_template); $this->result = str_replace('!!notice_id!!', $this->notice_id, $this->result); $this->result = str_replace('!!heada!!', $this->lien_suppr_cart.$this->header, $this->result); } // génération de l'isbd---------------------------------------------------- function do_isbd() { global $dbh, $base_path; global $langue_doc; global $msg; global $tdoc; global $fonction_auteur; global $charset; global $thesaurus_mode_pmb, $thesaurus_categories_categ_in_line, $pmb_keyword_sep, $thesaurus_categories_affichage_ordre; global $load_tablist_js; global $lang; global $categories_memo,$libelle_thesaurus_memo; global $categories_top,$use_opac_url_base,$opac_url_base,$thesaurus_categories_show_only_last; global $categ; global $id_empr; global $pmb_show_notice_id; global $sort_children; global $pmb_resa_planning; // constitution de la mention de titre if($this->tit_serie) { if ($this->print_mode) $this->isbd = $this->tit_serie; else $this->isbd = $this->tit_serie_lien_gestion; if($this->notice->tnvol) $this->isbd .= ', '.$this->notice->tnvol; } $this->isbd ? $this->isbd .= '. '.$this->tit1 : $this->isbd = $this->tit1; $tit2 = $this->notice->tit2; $tit3 = $this->notice->tit3; $tit4 = $this->notice->tit4; if($tit3) $this->isbd .= " = $tit3"; if($tit4) $this->isbd .= " : $tit4"; if($tit2) $this->isbd .= " ; $tit2"; $this->isbd .= ' ['.$tdoc->table[$this->notice->typdoc].']'; $mention_resp = array() ; // constitution de la mention de responsabilité //$this->responsabilites $as = array_search ("0", $this->responsabilites["responsabilites"]) ; if ($as!== FALSE && $as!== NULL) { $auteur_0 = $this->responsabilites["auteurs"][$as] ; $auteur = new auteur($auteur_0["id"]); if ($this->print_mode) $mention_resp_lib = $auteur->isbd_entry; else $mention_resp_lib = $auteur->isbd_entry_lien_gestion; if (!$this->print_mode) $mention_resp_lib .= $auteur->author_web_link ; if ($auteur_0["fonction"]) $mention_resp_lib .= ", ".$fonction_auteur[$auteur_0["fonction"]]; $mention_resp[] = $mention_resp_lib ; } $as = array_keys ($this->responsabilites["responsabilites"], "1" ) ; for ($i = 0 ; $i < count($as) ; $i++) { $indice = $as[$i] ; $auteur_1 = $this->responsabilites["auteurs"][$indice] ; $auteur = new auteur($auteur_1["id"]); if ($this->print_mode) $mention_resp_lib = $auteur->isbd_entry; else $mention_resp_lib = $auteur->isbd_entry_lien_gestion; if (!$this->print_mode) $mention_resp_lib .= $auteur->author_web_link ; if ($auteur_1["fonction"]) $mention_resp_lib .= ", ".$fonction_auteur[$auteur_1["fonction"]]; $mention_resp[] = $mention_resp_lib ; } $as = array_keys ($this->responsabilites["responsabilites"], "2" ) ; for ($i = 0 ; $i < count($as) ; $i++) { $indice = $as[$i] ; $auteur_2 = $this->responsabilites["auteurs"][$indice] ; $auteur = new auteur($auteur_2["id"]); if ($this->print_mode) $mention_resp_lib = $auteur->isbd_entry; else $mention_resp_lib = $auteur->isbd_entry_lien_gestion; if (!$this->print_mode) $mention_resp_lib .= $auteur->author_web_link ; if ($auteur_2["fonction"]) $mention_resp_lib .= ", ".$fonction_auteur[$auteur_2["fonction"]]; $mention_resp[] = $mention_resp_lib ; } $libelle_mention_resp = implode ("; ",$mention_resp) ; if($libelle_mention_resp) $this->isbd .= " / $libelle_mention_resp" ; // mention d'édition if($this->notice->mention_edition) $this->isbd .= ". - ".$this->notice->mention_edition; // zone de l'adresse // on récupère la collection au passage, si besoin est if($this->notice->subcoll_id) { $collection = new subcollection($this->notice->subcoll_id); $ed_obj = new editeur($collection->editeur) ; if ($this->print_mode) { $editeurs .= $ed_obj->isbd_entry; $collections = $collection->isbd_entry; } else { $editeurs .= $ed_obj->isbd_entry_lien_gestion; $collections = $collection->isbd_entry_lien_gestion; } } elseif ($this->notice->coll_id) { $collection = new collection($this->notice->coll_id); $ed_obj = new editeur($collection->parent) ; if ($this->print_mode) { $editeurs .= $ed_obj->isbd_entry; $collections = $collection->isbd_entry; } else { $editeurs .= $ed_obj->isbd_entry_lien_gestion; $collections = $collection->isbd_entry_lien_gestion; } } elseif ($this->notice->ed1_id) { $editeur = new editeur($this->notice->ed1_id); if ($this->print_mode) $editeurs .= $editeur->isbd_entry; else $editeurs .= $editeur->isbd_entry_lien_gestion; } if($this->notice->ed2_id) { $editeur = new editeur($this->notice->ed2_id); if ($this->print_mode) $ed_isbd=$editeur->isbd_entry; else $ed_isbd=$editeur->isbd_entry_lien_gestion; $editeurs ? $editeurs .= ' ; '.$ed_isbd : $editeurs = $ed_isbd; } if($this->notice->year) $editeurs ? $editeurs .= ', '.$this->notice->year : $editeurs = $this->notice->year; elseif ($this->notice->niveau_biblio!='b') $editeurs ? $editeurs .= ', [s.d.]' : $editeurs = "[s.d.]"; if ($editeurs) $this->isbd .= ". - $editeurs"; // zone de la collation (ne concerne que a2) if($this->notice->npages) $collation = $this->notice->npages; if($this->notice->ill) $collation .= ': '.$this->notice->ill; if($this->notice->size) $collation .= '; '.$this->notice->size; if($this->notice->accomp) $collation .= '+ '.$this->notice->accomp; if($collation) $this->isbd .= ". - $collation"; if($collections) { if($this->notice->nocoll) $collections .= '; '.$this->notice->nocoll; $this->isbd .= ". - ($collections)".' '; } if(substr(trim($this->isbd), -1) != "."){ $this->isbd .= '.'; } // note générale if($this->notice->n_gen) $zoneNote = nl2br(htmlentities($this->notice->n_gen,ENT_QUOTES, $charset)).' '; // ISBN ou NO. commercial if($this->notice->code) { if(isISBN($this->notice->code)) { if ($zoneNote) { $zoneNote .= '. - ISBN '; } else { $zoneNote = 'ISBN '; } } else { if($zoneNote) $zoneNote .= '. - '; } $zoneNote .= $this->notice->code; } if($this->notice->prix) { if($this->notice->code) {$zoneNote .= ' : '.$this->notice->prix;} else { if ($zoneNote) { $zoneNote .= '  '.$this->notice->prix;} else { $zoneNote = $this->notice->prix;} } } if($zoneNote) $this->isbd .= "

$zoneNote."; //In //Recherche des notices parentes if (!$this->no_link) { $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"; $result_linked=mysql_query($requete) or die(mysql_error()); //Si il y en a, on prépare l'affichage if (mysql_num_rows($result_linked)) { global $relation_listup ; if (!$relation_listup) $relation_listup=new marc_list("relationtypeup"); } $r_type=array(); $ul_opened=false; $r_type_local=""; //Pour toutes les notices liées while ($r_rel=mysql_fetch_object($result_linked)) { //Pour avoir le lien par défaut if (!$this->print_mode && (SESSrights & CATALOGAGE_AUTH)) $link_parent=$base_path.'/catalog.php?categ=isbd&id=!!id!!'; else $link_parent=""; if ($r_rel->lnb=='s' && $r_rel->lnh=='1') { // c'est une notice chapeau global $link_serial,$link_analysis, $link_bulletin, $link_explnum_serial ; $link_serial_sub = $base_path."/catalog.php?categ=serials&sub=view&serial_id=".$r_rel->linked_notice; // 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 ) { $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); $aff = $serial->header; } else if ($r_rel->lnb=='a' && $r_rel->lnh=='2') { // c'est un dépouillement de bulletin global $link_serial, $link_analysis, $link_bulletin, $link_explnum_serial ; if(!$link_analysis){ $link_analysis=$base_path."/catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=!!bul_id!!&art_to_show=!!id!!"; } $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); $aff = $serial->result; } else { if($link_parent && $r_rel->lnb=='b' && $r_rel->lnh=='2'){ $requete="SELECT bulletin_id FROM bulletins WHERE num_notice='".$r_rel->linked_notice."'"; $res=mysql_query($requete); if(mysql_num_rows($res)){ $link_parent=$base_path."/catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=".mysql_result($res,0,0); } } // dans les autres cas $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); $aff = $parent_notice->header ; $this->nb_expl+=$parent_notice->nb_expl; } //$parent_notice=new mono_display($r_rel->linked_notice,0,$link_parent); //Présentation différente si il y en a un ou plusieurs if (mysql_num_rows($result_linked)==1) { $this->isbd.="
".$relation_listup->table[$r_rel->relation_type]." ".$aff."
"; } else { if ($r_rel->relation_type!=$r_type_local) { $r_type_local=$r_rel->relation_type; if ($ul_opened) { $this->isbd.=""; $this->isbd.="\n".$relation_listup->table[$r_rel->relation_type].""; $this->isbd.="\n