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; } // définition de la classe d'affichage des notices class notice_affichage { var $notice_id = 0; // id de la notice à afficher var $notice_header = "" ; // titre + auteur principaux var $notice_header_without_html = "" ; // titre + auteur principaux sans var $notice_header_with_link="" ; // titre + auteur principaux avec un lien sur la notice var $notice_header_globe_link = "" ; // le globe du lien // le terme affichage correspond au code HTML qui peut être envoyé avec un print var $notice_isbd = "" ; // Affichage ISBD de la notice var $notice_public = "" ; // Affichage public PMB de la notice var $notice_indexations = "" ; // Affichage des indexations catégories et mots clés, peut être ajouté à $notice_isbd ou à $notice_public afin d'avoir l'affichage complet PMB var $notice_exemplaires = "" ; // Affichage des exemplaires, peut être ajouté à $notice_isbd ou à $notice_public afin d'avoir l'affichage complet PMB var $notice_explnum = "" ; // Affichage des exemplaires numériques, peut être ajouté à $notice_isbd ou à $notice_public afin d'avoir l'affichage complet PMB var $notice_notes = "" ; // Affichage des notes de contenu et résumé, peut être ajouté à $notice_isbd ou à $notice_public afin d'avoir l'affichage complet PMB var $notice; // objet notice tel que fetché dans la table notices, // augmenté de $this->notice->serie_name si série il y a // augmenté de n_gen, n_contenu, n_resume si on est allé les chercher car non ISBD standard var $responsabilites = array("responsabilites" => array(),"auteurs" => array()); // les auteurs avec tout ce qu'il faut var $categories = array(); // les id des categories var $auteurs_principaux = "" ; // ce qui apparait après le titre pour le header var $auteurs_tous = "" ; // Tous les auteurs avec leur fonction var $categories_toutes = "" ; // Toutes les catégories dans lesquelles est rangée la notice var $lien_rech_notice ; var $lien_rech_auteur ; var $lien_rech_editeur ; var $lien_rech_serie ; var $lien_rech_collection ; var $lien_rech_subcollection ; var $lien_rech_indexint ; var $lien_rech_motcle ; var $lien_rech_categ ; var $lien_rech_perio ; var $lien_rech_bulletin ; var $liens = array(); 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 $isbd = ''; // isbd de la notice en fonction du level défini var $expl = 0; // flag indiquant si on affiche les infos d'exemplaire var $link_expl = ''; // lien associé à un exemplaire var $show_resa = 0; // flag indiquant si on affiche les infos de resa var $p_perso; var $cart_allowed = 0; var $avis_allowed = 0; var $tag_allowed = 0; var $sugg_allowed = 0; var $to_print = 0; var $affichage_resa_expl = "" ; // lien réservation, exemplaires et exemplaires numériques, en tableau comme il faut var $affichage_expl = "" ; // la même chose mais sans le lien réservation var $affichage_avis_detail=""; // affichage des avis de lecteurs var $statut = 1 ; // Statut (id) de la notice var $statut_notice = "" ; // Statut (libellé) de la notice var $visu_notice = 1 ; // Visibilité de la notice à tout le monde var $visu_notice_abon = 0 ; // Visibilité de la notice aux abonnés uniquement var $visu_expl = 1 ; // Visibilité des exemplaires de la notice à tout le monde var $visu_expl_abon = 0 ; // Visibilité des exemplaires de la notice aux abonnés uniquement var $visu_explnum = 1 ; // Visibilité des exemplaires numériques de la notice à tout le monde var $visu_explnum_abon = 0 ;// Visibilité des exemplaires numériques de la notice aux abonnés uniquement var $childs = array() ; // filles de la notice var $notice_childs = "" ; // l'équivalent à afficher var $anti_loop=""; var $seule = 0 ; var $premier = "PUBLIC" ; var $double_ou_simple = 2 ; var $avis_moyenne ; // Moyenne des avis var $avis_qte; // Quantité d'un avis var $antiloop=array(); var $bulletin_id=0; // id du bulletin s'il s'agit d'une notice de bulletin var $dom_2 = NULL; // objet domain var $rights = 0; // droits d'acces emprunteur/notice var $header_only = 0; // pour ne prendre que le nécessaire pour composer le titre var $parents = ""; // la chaine des parents, utilisée pour do_parents en isbd et en public var $no_header = 0 ; // ne pas afficher de header, permet de masquer l'icône var $notice_header_without_doclink=""; // notice_header sans les icones de lien url et d'indication de documents numériques var $notice_header_doclink=""; // les icones de lien url et d'indication de documents numériques var $notice_affichage_cmd; // constructeur------------------------------------------------------------ function notice_affichage($id, $liens, $cart=0, $to_print=0,$header_only=0,$no_header=0) { // $id = id de la notice à afficher // $liens = tableau de liens tel que ci-dessous // $cart : afficher ou pas le lien caddie // $to_print = affichage mode impression ou pas global $opac_avis_allow; global $opac_allow_add_tag; global $opac_show_suggest_notice; global $gestion_acces_active,$gestion_acces_empr_notice; if (!$id) return; $id+=0; //droits d'acces emprunteur/notice if ($gestion_acces_active==1 && $gestion_acces_empr_notice==1) { $ac= new acces(); $this->dom_2= $ac->setDomain(2); $this->rights= $this->dom_2->getRights($_SESSION['id_empr_session'], $id); } if (!$liens) $liens=array(); $this->lien_rech_notice = $liens['lien_rech_notice']; $this->lien_rech_auteur = $liens['lien_rech_auteur']; $this->lien_rech_editeur = $liens['lien_rech_editeur']; $this->lien_rech_serie = $liens['lien_rech_serie']; $this->lien_rech_collection = $liens['lien_rech_collection']; $this->lien_rech_subcollection = $liens['lien_rech_subcollection']; $this->lien_rech_indexint = $liens['lien_rech_indexint']; $this->lien_rech_motcle = $liens['lien_rech_motcle']; $this->lien_rech_categ = $liens['lien_rech_categ']; $this->lien_rech_perio = $liens['lien_rech_perio']; $this->lien_rech_bulletin = $liens['lien_rech_bulletin']; $this->liens = $liens; $this->cart_allowed = $cart; $this->no_header = $no_header ; if ($to_print) { $this->avis_allowed = 0; $this->tag_allowed = 0; $this->sugg_allowed = 0; } else { $this->avis_allowed = $opac_avis_allow; $this->tag_allowed = $opac_allow_add_tag; $this->sugg_allowed = $opac_show_suggest_notice; } $this->to_print = $to_print; $this->header_only = $header_only; // $seule : si 1 la notice est affichée seule et dans ce cas les notices childs sont en mode dépliable global $seule ; $this->seule = $seule ; $this->docnum_allowed = 1; if(!$id) return; else { $this->notice_id = $id; if(!$this->fetch_data()) return; } global $memo_p_perso_notices; if(!$memo_p_perso_notices) $memo_p_perso_notices=$this->p_perso=new parametres_perso("notices"); else $this->p_perso=$memo_p_perso_notices; } // récupération des valeurs en table--------------------------------------- function fetch_data() { global $dbh; if(is_null($this->dom_2)) { $requete = "SELECT notice_id, typdoc, tit1, tit2, tit3, tit4, tparent_id, tnvol, ed1_id, ed2_id, coll_id, subcoll_id, year, nocoll, mention_edition,code, npages, ill, size, accomp, lien, eformat, index_l, indexint, niveau_biblio, niveau_hierar, origine_catalogage, prix, n_gen, n_contenu, n_resume, statut, thumbnail_url, opac_visible_bulletinage "; $requete.= "FROM notices WHERE notice_id='".$this->notice_id."' "; } else { $requete = "SELECT notice_id, typdoc, tit1, tit2, tit3, tit4, tparent_id, tnvol, ed1_id, ed2_id, coll_id, subcoll_id, year, nocoll, mention_edition,code, npages, ill, size, accomp, lien, eformat, index_l, indexint, niveau_biblio, niveau_hierar, origine_catalogage, prix, n_gen, n_contenu, n_resume, thumbnail_url, opac_visible_bulletinage "; $requete.= "FROM notices "; $requete.= "WHERE notice_id='".$this->notice_id."'"; } $myQuery = mysql_query($requete, $dbh); if(mysql_num_rows($myQuery)) { $this->notice = mysql_fetch_object($myQuery); } else { $this->statut_notice = "" ; $this->statut = 0 ; $this->visu_notice = 0 ; $this->visu_notice_abon = 0 ; $this->visu_expl = 0 ; $this->visu_expl_abon = 0 ; $this->visu_explnum = 0 ; $this->visu_explnum_abon = 0 ; $this->notice_id=0; $this->opac_visible_bulletinage=0; return 0 ; } if (!$this->notice->typdoc) $this->notice->typdoc='a'; if ($this->notice->tparent_id) { $requete_serie = "SELECT serie_name FROM series WHERE serie_id='".$this->notice->tparent_id."' "; $myQuery_serie = mysql_query($requete_serie, $dbh); if (mysql_num_rows($myQuery_serie)) { $serie = mysql_fetch_object($myQuery_serie); $this->notice->serie_name = $serie->serie_name ; } } // serials : si article if ($this->notice->niveau_biblio == 'a' && $this->notice->niveau_hierar == 2) $this->get_bul_info(); if ($this->notice->niveau_biblio == 'b' && $this->notice->niveau_hierar == 2) $this->get_bul_info(); if(!$this->header_only)$this->fetch_categories(); $this->fetch_auteurs(); $this->fetch_titres_uniformes(); $this->fetch_visibilite(); if(!$this->header_only) $this->fetch_langues(0); if(!$this->header_only) $this->fetch_langues(1); if(!$this->header_only) $this->fetch_avis(); $this->childs=array(); if(!$this->header_only) { if (is_null($this->dom_2)) { $acces_j=''; $statut_j=',notice_statut'; $statut_r="and statut=id_notice_statut and ((notice_visible_opac=1 and notice_visible_opac_abon=0)".($_SESSION["user_code"]?" or (notice_visible_opac_abon=1 and notice_visible_opac=1)":"").")"; } else { $acces_j = $this->dom_2->getJoin($_SESSION['id_empr_session'],4,'notice_id'); $statut_j = ""; $statut_r = ""; } if ($this->notice->niveau_biblio =='b') { // notice de bulletins, les relations sont dans la table analysis $requete = "select analysis_notice as notice_id, 'd' as relation_type from analysis JOIN bulletins ON bulletin_id = analysis_bulletin, notices $acces_j $statut_j "; $requete.= "where num_notice=$this->notice_id AND notice_id = analysis_notice $statut_r "; $requete.= "order by analysis_notice DESC"; } else { // autres notices $requete ="select num_notice as notice_id,relation_type from notices_relations join notices on num_notice=notice_id $acces_j $statut_j "; $requete.= "where linked_notice='".$this->notice_id."' $statut_r order by relation_type, rank"; } // on va pré-remplir les childs avec les parents dont le libellé de la relation en up ou down est le même. $this->get_parents_as_childs(); $resultat=mysql_query($requete); // il y a des enfants ? if (mysql_num_rows($resultat)) { while (($r=mysql_fetch_object($resultat))) $this->childs[$r->relation_type][]=$r->notice_id; } $this->do_parents(); } return mysql_num_rows($myQuery); } // fin fetch_data function fetch_visibilite() { global $dbh; global $hide_explnum; $requete = "SELECT opac_libelle, notice_visible_opac, expl_visible_opac, notice_visible_opac_abon, expl_visible_opac_abon, explnum_visible_opac, explnum_visible_opac_abon FROM notice_statut WHERE id_notice_statut='".$this->notice->statut."' "; $myQuery = mysql_query($requete, $dbh); if(mysql_num_rows($myQuery)) { $statut_temp = mysql_fetch_object($myQuery); $this->statut_notice = $statut_temp->opac_libelle; $this->visu_notice = $statut_temp->notice_visible_opac; $this->visu_notice_abon = $statut_temp->notice_visible_opac_abon; $this->visu_expl = $statut_temp->expl_visible_opac; $this->visu_expl_abon = $statut_temp->expl_visible_opac_abon; $this->visu_explnum = $statut_temp->explnum_visible_opac; $this->visu_explnum_abon = $statut_temp->explnum_visible_opac_abon; if ($hide_explnum) { $this->visu_explnum=0; $this->visu_explnum_abon=0; } } } // fin fetch_visibilite() // récupération des auteurs --------------------------------------------------------------------- // retourne $this->auteurs_principaux = ce qu'on va afficher en titre du résultat // retourne $this->auteurs_tous = ce qu'on va afficher dans l'isbd // NOTE: now we have two functions: // fetch_auteurs() the pmb-standard one function fetch_auteurs() { global $fonction_auteur; global $dbh ; global $opac_url_base ; $this->responsabilites = array() ; $auteurs = array() ; $res["responsabilites"] = array() ; $res["auteurs"] = array() ; $rqt = "SELECT author_id, responsability_fonction, responsability_type, author_type,author_name, author_rejete, author_type, author_date, author_see, author_web "; $rqt.= "FROM responsability, authors "; $rqt.= "WHERE responsability_notice='".$this->notice_id."' AND responsability_author=author_id "; $rqt.= "ORDER BY responsability_type, responsability_ordre " ; $res_sql = mysql_query($rqt, $dbh); while (($notice=mysql_fetch_object($res_sql))) { $responsabilites[] = $notice->responsability_type ; $info_bulle=""; if($notice->author_type==72 || $notice->author_type==71) { $congres=new auteur($notice->author_id); $auteur_isbd=$congres->isbd_entry; $auteur_titre=$congres->display; $info_bulle=" title='".$congres->info_bulle."' "; } else { if ($notice->author_rejete) $auteur_isbd = $notice->author_rejete." ".$notice->author_name ; else $auteur_isbd = $notice->author_name ; // on s'arrête là pour auteur_titre = "Prénom NOM" uniquement $auteur_titre = $auteur_isbd ; // on complète auteur_isbd pour l'affichage complet if ($notice->author_date) $auteur_isbd .= " (".$notice->author_date.")" ; } // URL de l'auteur if ($notice->author_web) $auteur_web_link = " "; else $auteur_web_link = "" ; if (!$this->to_print) $auteur_isbd .= $auteur_web_link ; $auteur_isbd = inslink($auteur_isbd, str_replace("!!id!!", $notice->author_id, $this->lien_rech_auteur),$info_bulle) ; if ($notice->responsability_fonction) $auteur_isbd .= ", ".$fonction_auteur[$notice->responsability_fonction] ; $auteurs[] = array( 'id' => $notice->author_id, 'fonction' => $notice->responsability_fonction, 'responsability' => $notice->responsability_type, 'name' => $notice->author_name, 'rejete' => $notice->author_rejete, 'date' => $notice->author_date, 'type' => $notice->author_type, 'fonction_aff' => $fonction_auteur[$notice->responsability_fonction], 'auteur_isbd' => $auteur_isbd, 'auteur_titre' => $auteur_titre ) ; } if (!$responsabilites) $responsabilites = array(); if (!$auteurs) $auteurs = array(); $res["responsabilites"] = $responsabilites ; $res["auteurs"] = $auteurs ; $this->responsabilites = $res; // $this->auteurs_principaux // on ne prend que le auteur_titre = "Prénom NOM" $as = array_search ("0", $this->responsabilites["responsabilites"]) ; if ($as!== FALSE && $as!== NULL) { $auteur_0 = $this->responsabilites["auteurs"][$as] ; $this->auteurs_principaux = $auteur_0["auteur_titre"]; } else { $as = array_keys ($this->responsabilites["responsabilites"], "1" ) ; $aut1_libelle = array(); for ($i = 0 ; $i < count($as) ; $i++) { $indice = $as[$i] ; $auteur_1 = $this->responsabilites["auteurs"][$indice] ; if($auteur_1["type"]==72 || $auteur_1["type"]==72) { $congres=new auteur($auteur_1["id"]); $aut1_libelle[]=$congres->display; } else { $aut1_libelle[]= $auteur_1["auteur_titre"]; } } $auteurs_liste = implode (" ; ",$aut1_libelle) ; if ($auteurs_liste) $this->auteurs_principaux = $auteurs_liste ; } // $this->auteurs_tous $mention_resp = array() ; $congres_resp = array() ; $as = array_search ("0", $this->responsabilites["responsabilites"]) ; if ($as!== FALSE && $as!== NULL) { $auteur_0 = $this->responsabilites["auteurs"][$as] ; $mention_resp_lib = $auteur_0["auteur_isbd"]; if($this->responsabilites["auteurs"][$as]["type"]==72) { $congres_resp[] = $mention_resp_lib ; } else { $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] ; $mention_resp_lib = $auteur_1["auteur_isbd"]; if($this->responsabilites["auteurs"][$indice]["type"]==72) { $congres_resp[] = $mention_resp_lib ; } else { $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] ; $mention_resp_lib = $auteur_2["auteur_isbd"]; if($this->responsabilites["auteurs"][$indice]["type"]==72) { $congres_resp[] = $mention_resp_lib ; } else { $mention_resp[] = $mention_resp_lib ; } } $libelle_mention_resp = implode (" ; ",$mention_resp) ; if ($libelle_mention_resp) $this->auteurs_tous = $libelle_mention_resp ; else $this->auteurs_tous ="" ; $libelle_congres_resp = implode (" ; ",$congres_resp) ; if ($libelle_congres_resp) $this->congres_tous = $libelle_congres_resp ; else $this->congres_tous ="" ; } // fin fetch_auteurs // récupération des categories ------------------------------------------------------------------ function fetch_categories() { global $opac_thesaurus, $opac_categories_categ_in_line, $pmb_keyword_sep, $opac_categories_affichage_ordre; global $dbh; global $lang,$opac_categories_show_only_last; global $categories_memo,$libelle_thesaurus_memo; global $categories_top; $categ_repetables = array() ; if(!count($categories_top)) { $q = "select num_thesaurus,id_noeud from noeuds where num_parent in(select id_noeud from noeuds where autorite='TOP') "; $r = mysql_query($q, $dbh); while(($res = mysql_fetch_object($r))) { $categories_top[]=$res->id_noeud; } } $requete = "select * from ( select libelle_thesaurus, c0.libelle_categorie as categ_libelle, c0.comment_public, n0.id_noeud , n0.num_parent, langue_defaut,id_thesaurus, if(c0.langue = '".$lang."',2, if(c0.langue= thesaurus.langue_defaut ,1,0)) as p, ordre_vedette, ordre_categorie FROM noeuds as n0, categories as c0,thesaurus,notices_categories where notices_categories.num_noeud=n0.id_noeud and n0.id_noeud = c0.num_noeud and n0.num_thesaurus=id_thesaurus and notices_categories.notcateg_notice=".$this->notice_id." order by id_thesaurus, n0.id_noeud, p desc ) as list_categ group by id_noeud"; if ($opac_categories_affichage_ordre==1) $requete .= " order by ordre_vedette, ordre_categorie"; $result_categ=@mysql_query($requete); if (mysql_num_rows($result_categ)) { while(($res_categ = mysql_fetch_object($result_categ))) { $libelle_thesaurus=$res_categ->libelle_thesaurus; $categ_id=$res_categ->id_noeud ; $libelle_categ=$res_categ->categ_libelle ; $comment_public=$res_categ->comment_public ; $num_parent=$res_categ->num_parent ; $langue_defaut=$res_categ->langue_defaut ; $categ_head=0; if(in_array($categ_id,$categories_top))$categ_head=1; if ($opac_categories_show_only_last || $categ_head) { if ($opac_thesaurus) $catalog_form="[".$libelle_thesaurus."] ".$libelle_categ; // Si il y a présence d'un commentaire affichage du layer $result_com = categorie::zoom_categ($categ_id, $comment_public); $libelle_aff_complet = inslink($libelle_categ, str_replace("!!id!!", $categ_id, $this->lien_rech_categ), $result_com['java_com']); $libelle_aff_complet .= $result_com['zoom']; if ($opac_thesaurus) $categ_repetables[$libelle_thesaurus][] =$libelle_aff_complet; else $categ_repetables['MONOTHESAURUS'][] =$libelle_aff_complet ; } else { if(!$categories_memo[$categ_id]) { $anti_recurse[$categ_id]=1; $path_table=''; $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 FROM noeuds, categories where id_noeud ='".$num_parent."' AND noeuds.id_noeud = categories.num_noeud order by p desc limit 1"; $result=@mysql_query($requete); if (mysql_num_rows($result)) { $parent = mysql_fetch_object($result); $anti_recurse[$parent->categ_id]=1; $path_table[] = array( 'id' => $parent->categ_id, 'libelle' => $parent->categ_libelle); // on remonte les ascendants while (($parent->categ_parent)&&(!$anti_recurse[$parent->categ_parent])) { $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 FROM noeuds, categories where id_noeud ='".$parent->categ_parent."' AND noeuds.id_noeud = categories.num_noeud order by p desc limit 1"; $result=@mysql_query($requete); if (mysql_num_rows($result)) { $parent = mysql_fetch_object($result); $anti_recurse[$parent->categ_id]=1; $path_table[] = array( 'id' => $parent->categ_id, 'libelle' => $parent->categ_libelle); } else { break; } } $anti_recurse=array(); } else $path_table=array(); // ceci remet le tableau dans l'ordre général->particulier $path_table = array_reverse($path_table); if(sizeof($path_table)) { $temp_table=''; while(list($xi, $l) = each($path_table)) { $temp_table[] = $l['libelle']; } $parent_libelle = join(':', $temp_table); $catalog_form = $parent_libelle.':'.$libelle_categ; } else { $catalog_form = $libelle_categ; } // pour libellé complet mais sans le nom du thésaurus $libelle_aff_complet = $catalog_form ; if ($opac_thesaurus) $catalog_form="[".$libelle_thesaurus."] ".$catalog_form; //$categ = new category($categ_id); // Si il y a présence d'un commentaire affichage du layer $result_com = categorie::zoom_categ($categ_id, $comment_public); $libelle_aff_complet = inslink($libelle_aff_complet, str_replace("!!id!!", $categ_id, $this->lien_rech_categ), $result_com['java_com']); $libelle_aff_complet .= $result_com['zoom']; if ($opac_thesaurus) $categ_repetables[$libelle_thesaurus][] =$libelle_aff_complet; else $categ_repetables['MONOTHESAURUS'][] =$libelle_aff_complet ; $categories_memo[$categ_id]=$libelle_aff_complet; $libelle_thesaurus_memo[$categ_id]=$libelle_thesaurus; } else { if ($opac_thesaurus) $categ_repetables[$libelle_thesaurus_memo[$categ_id]][] =$categories_memo[$categ_id]; else $categ_repetables['MONOTHESAURUS'][] =$categories_memo[$categ_id] ; } } } } while (list($nom_tesaurus, $val_lib)=each($categ_repetables)) { //c'est un tri par libellé qui est demandé if ($opac_categories_affichage_ordre==0){ $tmp=array(); foreach ( $val_lib as $key => $value ) { $tmp[$key]=strip_tags($value); } $tmp=array_map("convert_diacrit",$tmp);//On enlève les accents $tmp=array_map("strtoupper",$tmp);//On met en majuscule asort($tmp);//Tri sur les valeurs en majuscule sans accent foreach ( $tmp as $key => $value ) { $tmp[$key]=$val_lib[$key];//On reprend les bons couples clé / libellé } $val_lib=$tmp; } if ($opac_thesaurus) { if (!$opac_categories_categ_in_line) { $categ_repetables_aff = "[".$nom_tesaurus."]".implode("
[".$nom_tesaurus."]",$val_lib) ; }else { $categ_repetables_aff = "".$nom_tesaurus."
".implode(" $pmb_keyword_sep ",$val_lib) ; } } elseif (!$opac_categories_categ_in_line) { $categ_repetables_aff = implode("
",$val_lib) ; } else { $categ_repetables_aff = implode(" $pmb_keyword_sep ",$val_lib) ; } if($categ_repetables_aff) $tmpcateg_aff .= "$categ_repetables_aff
"; } $this->categories_toutes = $tmpcateg_aff; } // fin fetch_categories() //Titres uniformes function fetch_titres_uniformes() { global $opac_url_base; $this->notice->tu= new tu_notice($this->notice_id); $this->notice->tu_print_type_2=$this->notice->tu->get_print_type(2,$opac_url_base."/index.php?lvl=titre_uniforme_see&id=" ); } // fin fetch_titres_uniformes() function fetch_langues($quelle_langues=0) { global $dbh; global $marc_liste_langues ; if (!$marc_liste_langues) $marc_liste_langues=new marc_list('lang'); $langues = array() ; $rqt = "select code_langue from notices_langues where num_notice='$this->notice_id' and type_langue=$quelle_langues order by ordre_langue "; $res_sql = mysql_query($rqt, $dbh); while (($notice=mysql_fetch_object($res_sql))) { if ($notice->code_langue) $langues[] = array( 'lang_code' => $notice->code_langue, 'langue' => $marc_liste_langues->table[$notice->code_langue] ) ; } if (!$quelle_langues) $this->langues = $langues; else $this->languesorg = $langues; } // fin fetch_langues($quelle_langues=0) function fetch_avis() { global $dbh; $sql="select avg(note) as m from avis where valide=1 and num_notice='$this->notice_id' group by num_notice"; $r = mysql_query($sql, $dbh); $sql_nb = "select * from avis where valide=1 and num_notice='$this->notice_id'"; $r_nb = mysql_query($sql_nb, $dbh); $qte_avis = mysql_num_rows($r_nb); $loc = mysql_fetch_object($r); if($loc->m > 0) $moyenne=number_format($loc->m,1, ',', ''); $this->avis_moyenne = $moyenne; $this->avis_qte = $qte_avis; } // fin fetch_avis() function affichage_etat_collections() { global $msg; global $pmb_etat_collections_localise; $collstate=new collstate(0,$this->notice_id); if($pmb_etat_collections_localise) { $collstate->get_display_list("",0,0,0,1); } else { $collstate->get_display_list("",0,0,0,0); } if($collstate->nbr) { $affichage.= "

".$msg["perio_etat_coll"]."

"; $affichage.=$collstate->liste; } return $affichage; } // fin affichage_etat_collections() function construit_liste_langues($tableau) { $langues = ""; for ($i = 0 ; $i < sizeof($tableau) ; $i++) { if ($langues) $langues.=" "; $langues .= $tableau[$i]["langue"]." (".$tableau[$i]["lang_code"].")"; } return $langues; } // fin construit_liste_langues($tableau) // Fonction d'affichage des avis function affichage_avis($notice_id) { global $msg; $nombre_avis = ""; //Affichage des Etoiles et nombre d'avis if ($this->avis_qte > 0) { $nombre_avis = "".$this->avis_qte." ".$msg['notice_bt_avis'].""; $etoiles_moyenne = $this->stars($this->avis_moyenne); $img_tag .= $nombre_avis."".$etoiles_moyenne.""; } else { $nombre_avis = "".$msg['avis_aucun'].""; $img_tag .= $nombre_avis; } return $img_tag; } // fin affichage_avis($notice_id) function avis_detail () { global $dbh, $msg; global $action; // pour gérer l'affichage des avis en impression de panier global $allow_avis_ajout; global $avis_tpl_form1; global $opac_avis_note_display_mode,$charset; $avis_tpl_form=$avis_tpl_form1; $avis_tpl_form=str_replace("!!notice_id!!",$this->notice_id,$avis_tpl_form); $add_avis_onclick="show_add_avis(".$this->notice_id.");"; $sql_avis = "select note, commentaire, sujet from avis where num_notice='$this->notice_id' and valide=1 order by avis_rank, note desc, id_avis desc"; $r_avis = mysql_query($sql_avis, $dbh) or die ("
".mysql_error()."
".$sql_avis."
"); $sql_avisnb = "select note, count(id_avis) as nb_by_note from avis where num_notice='$this->notice_id' and valide=1 group by note "; $r_avisnb = mysql_query($sql_avisnb, $dbh) or die ("
".mysql_error()."
".$sql_avisnb."
"); while ($datanb=mysql_fetch_object($r_avisnb)) $rowspan[$datanb->note]=$datanb->nb_by_note ; if (mysql_num_rows($r_avis)) { $pair_impair="odd"; $ret=""; while (($data=mysql_fetch_object($r_avis))) { // on affiche les résultats if ($pair_impair=="odd") $pair_impair="even"; else $pair_impair="odd"; $ret .= ""; if($opac_avis_note_display_mode){ if($opac_avis_note_display_mode!=1){ $categ_avis=$msg['avis_detail_note_'.$data->note]; } if($opac_avis_note_display_mode!=2){ $etoiles="";$cpt_star = 4; for ($i = 1; $i <= $data->note; $i++) { $etoiles.=""; } for ( $j = round($data->note);$j <= $cpt_star ; $j++) { $etoiles .= ""; } } if($opac_avis_note_display_mode==3)$aff=$etoiles."
".$categ_avis; else $aff=$etoiles.$categ_avis; $ret .= "".$aff.""; } $ret .= " ".do_bbcode($data->commentaire)."
".htmlentities($data->sujet,ENT_QUOTES,$charset)." \n"; } if($opac_avis_note_display_mode!=2 && $opac_avis_note_display_mode) $etoiles_moyenne = $this->stars($this->avis_moyenne); global $opac_avis_allow, $log_ok; if ($action=="print" || ($opac_avis_allow==1 && !$_SESSION["user_code"] )) { $ret = "

".$msg['avis_detail']."

".$ret."
"; } else { $ret = "

".$msg['avis_detail']." $etoiles_moyenne : ".str_replace("!!nb_avis!!",$this->avis_qte,$msg['avis_detail_nb_ajt'])."

$avis_tpl_form ".$ret."
"; } } else { if ($action=="print" || ($opac_avis_allow==1 && !$_SESSION["user_code"] )) { $ret = "

".$msg['avis_detail_aucun_ajt']."

"; } else { $ret="

".$msg['avis_detail']." ".$msg['avis_detail_aucun_ajt']."

$avis_tpl_form" ; } } return $ret; } //Fonction d'affichage des suggestions function affichage_suggestion($notice_id){ global $msg; $do_suggest="".$msg['suggest_notice_opac'].""; return $do_suggest; } // fin affichage_suggestion($notice_id) // Gestion des étoiles pour les avis function stars() { $etoiles_moyenne=""; $cpt_star = 4; for ($i = 1; $i <= $this->avis_moyenne; $i++) { $etoiles_moyenne.=""; } if(substr($this->avis_moyenne,2) > 1) { $etoiles_moyenne .= ""; $cpt_star = 3; } for ( $j = round($this->avis_moyenne);$j <= $cpt_star ; $j++) { $etoiles_moyenne .= ""; } return $etoiles_moyenne; } // fin stars() // génération du de l'affichage double avec onglets --------------------------------------------- // si $depliable=1 alors inclusion du parent / child function genere_double($depliable=1, $premier='ISBD') { global $msg,$charset; global $cart_aff_case_traitement; global $opac_url_base ; global $opac_visionneuse_allow; global $opac_show_social_network; global $icon_doc,$biblio_doc,$tdoc; global $opac_notice_enrichment; global $allow_tag; // l'utilisateur a-t-il le droit d'ajouter un tag global $allow_sugg;// l'utilisateur a-t-il le droit de faire une suggestion global $lvl; // pour savoir qui demande l'affichage global $opac_avis_display_mode; global $flag_no_get_bulletin; global $opac_allow_simili_search; $this->result =""; if(!$this->notice_id) return; $this->premier = $premier ; $this->double_ou_simple = 2 ; $this->notice_childs = $this->genere_notice_childs(); if ($this->cart_allowed){ $title=$this->notice_header; if(!$title)$title=$this->notice->tit1; $basket="notice_id."&header=".rawurlencode(strip_tags($title))."\" target=\"cart_info\" class=\"img_basket\">\"".$msg['notice_title_basket']."\""; }else $basket=""; //add tags if ( ($this->tag_allowed==1) || ( ($this->tag_allowed==2)&&($_SESSION["user_code"])&&($allow_tag) ) ) $img_tag.="notice_id','ajouter_un_tag','width=350,height=150,scrollbars=yes,resizable=yes'); return false;\">\"".$msg['notice_title_tag']."\""; //Avis if (($opac_avis_display_mode==0) && (($this->avis_allowed && $this->avis_allowed !=2)|| ($_SESSION["user_code"] && $this->avis_allowed ==2))) $img_tag .= $this->affichage_avis($this->notice_id); //Suggestions if (($this->sugg_allowed ==2)|| ($_SESSION["user_code"] && ($this->sugg_allowed ==1) && $allow_sugg)) $img_tag .= $this->affichage_suggestion($this->notice_id); // préparation de la case à cocher pour traitement panier if ($cart_aff_case_traitement) $case_a_cocher = " "; else $case_a_cocher = "" ; if ($this->no_header) $icon=""; else $icon = $icon_doc[$this->notice->niveau_biblio.$this->notice->typdoc]; if($opac_notice_enrichment){ $enrichment = new enrichment(); if($enrichment->active[$this->notice->niveau_biblio.$this->notice->typdoc]){ $source_enrichment = implode(",",$enrichment->active[$this->notice->niveau_biblio.$this->notice->typdoc]); }else if ($enrichment->active[$this->notice->niveau_biblio]){ $source_enrichment = implode(",",$enrichment->active[$this->notice->niveau_biblio]); } } if($opac_allow_simili_search) { $script_simili_search="show_simili_search('".$this->notice_id."');"; $simili_search_script_all=" "; $script_expl_voisin_search="show_expl_voisin_search('".$this->notice_id."');"; } if ($depliable == 1) { $template="$simili_search_script_all
$case_a_cocher "; if ($icon) { $info_bulle_icon=str_replace("!!niveau_biblio!!",$biblio_doc[$this->notice->niveau_biblio],$msg["info_bulle_icon"]); $info_bulle_icon=str_replace("!!typdoc!!",$tdoc->table[$this->notice->typdoc],$info_bulle_icon); $template.="".$info_bulle_icon.""; } $template.=" !!heada!!".$this->notice_header_doclink."