table; } require_once($include_path."/templates/collstate.tpl.php"); // Use this class if you want to show responsability functions before authors. // This class defines a new fetch_auteurs function that overwrites the one included in the parent class notice_affichage // using this function you can load the author functions from the litteral_function.xml file if this exists in the lang directory. // Marco Vaninetti class notice_affichage_custom_it extends notice_affichage { public function fetch_auteurs() { global $fonction_auteur0; global $dbh ; global $include_path; global $lang, $tdoc; $this->responsabilites = array() ; $auteurs = array() ; $res["responsabilites"] = array() ; $res["auteurs"] = array() ; // if literal_function.xml exists we use this instead of function.xml $ISBDv2=0; if (is_file("$include_path/marc_tables/$lang/literal_function.xml")) $ISBDv2=1; if (!count($tdoc)) $tdoc = new marc_list('doctype'); if (!count($fonction_auteur0)) { if ($ISBDv2) $fonction_auteur0 = new marc_list('literal_function'); else $fonction_auteur0 = new marc_list('function'); $fonction_auteur0 = $fonction_auteur0->table; } $rqt = "SELECT author_id, responsability_fonction, responsability_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, responsability_fonction " ; $res_sql = pmb_mysql_query($rqt, $dbh); while (($notice=pmb_mysql_fetch_object($res_sql))) { $responsabilites[] = $notice->responsability_type ; 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)) ; if ($notice->responsability_fonction) $fonction_aut=$fonction_auteur0[$notice->responsability_fonction] ; else { $fonction_aut=""; $notice->responsability_fonction="0"; } $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_aut, 'auteur_isbd' => $auteur_isbd, 'auteur_titre' => $auteur_titre ) ; } $res["responsabilites"] = $responsabilites ; $res["auteurs"] = $auteurs ; $this->responsabilites = $res; // $this->auteurs_principaux // on ne prend que le auteur_titre = "Prénom NOM" $this->auteurs_principaux = $this->record_datas->get_auteurs_principaux(); $flag1=0; // $this->auteurs_tous $mention_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($auteur_0["fonction"]!="0" and $auteur_0["fonction"]!= 70) $mention_resp_lib= $auteur_0["fonction_aff"]." ".$mention_resp_lib; $first_mention=$auteur_0["fonction_aff"]; $mention_resp[] = $mention_resp_lib ; } $i=0; $as = array_keys ($this->responsabilites["responsabilites"], "1" ) ; while ($i < count($as) ) { $j=count($as)-$i-1; $indice = $as[$j] ; $auteur_1 = $this->responsabilites["auteurs"][$indice] ; $flag= $auteur_1["fonction"]; $fonct_aff=$auteur_1["fonction_aff"]; $mention_resp_lib = ""; $k=0; $sep=""; while ($flag==$auteur_1["fonction"]) { $mention_resp_lib =$auteur_1["auteur_isbd"].$sep.$mention_resp_lib; if ($k==0) $sep= " e "; else $sep=","; $k++; $indice = $as[$j-$k] ; $auteur_1 = $this->responsabilites["auteurs"][$indice] ; } $i=$i+$k; if($fonct_aff==$first_mention) { if ($k==1)$mention_resp_lib=$mention_resp[0]." e ".$mention_resp_lib; else $mention_resp_lib=$mention_resp[0].", ".$mention_resp_lib; $flag1++; } else if($fonct_aff !="") $mention_resp_lib=$fonct_aff." ".$mention_resp_lib; $mention_resp1[] = $mention_resp_lib ; } $mention_resp1 =array_reverse($mention_resp1); if($flag1==1) $mention_resp=$mention_resp1; else $mention_resp= array_merge($mention_resp,$mention_resp1); $as = array_keys ($this->responsabilites["responsabilites"], "2" ) ; $i=0; while ($i < count($as) ) { $j=count($as)-$i-1; $indice = $as[$j] ; $auteur_2 = $this->responsabilites["auteurs"][$indice] ; $flag= $auteur_2["fonction"]; $fonct_aff=$auteur_2["fonction_aff"]; $mention_resp_lib = ""; $k=0; $sep=""; while ($flag==$auteur_2["fonction"]) { $mention_resp_lib =$auteur_2["auteur_isbd"].$sep.$mention_resp_lib; if ($k==0) $sep= " e "; else $sep=","; $k++; $indice = $as[$j-$k] ; $auteur_2 = $this->responsabilites["auteurs"][$indice] ; } $i=$i+$k; $mention_resp_lib =$fonct_aff." ".$mention_resp_lib; $mention_resp2[] =$mention_resp_lib ; } $mention_resp2 =array_reverse($mention_resp2); $mention_resp= array_merge($mention_resp,$mention_resp2); $libelle_mention_resp = implode (" ; ",$mention_resp) ; if ($libelle_mention_resp) $this->auteurs_tous = $libelle_mention_resp ; else $this->auteurs_tous ="" ; } // end fetch_auteurs } // end class notice_affichage_custom_it class notice_affichage_custom_bretagne extends notice_affichage { public function do_public_line($label, $value, $css='') { global $colspanbretagne; if($value) { if(substr(trim($label), strlen(trim($label))-1) != ':') $label .= ' :'; $this->notice_public .= " ".$label." ".$value." "; } } public function get_line_aff_suite($label, $value, $css='') { global $colspanbretagne; $line_aff_suite = ''; if($value) { if(substr(trim($label), strlen(trim($label))-1) != ':') $label .= ' :'; $line_aff_suite .= " ".$label." ".$value." "; } return $line_aff_suite; } public function do_public($short=0,$ex=1) { global $dbh; global $msg; global $tdoc; global $charset; global $memo_notice; global $opac_notice_affichage_class; global $opac_map_activate; global $opac_demandes_allow_from_record; global $opac_scan_request_activate; global $memo_expl; $this->notice_public= ""; if(!$this->notice_id) return; // ******* afin de pouvoir concaténer en td /td sous-collection et collection le cas échéant global $colspanbretagne; if ($this->notice->subcoll_id || ($this->notice->year && $this->notice->ed1_id)) $colspanbretagne = " colspan='3' "; else $colspanbretagne = ""; $this->notice_public=""; // Notices parentes $this->notice_public.=$this->parents; // constitution de la mention de titre if ($this->notice->serie_name) { $this->do_public_line($msg['tparent_start'], inslink($this->notice->serie_name, str_replace("!!id!!", $this->notice->tparent_id, $this->lien_rech_serie)).($this->notice->tnvol ? ", ".$this->notice->tnvol : ''), 'serie'); } //titre 1 - titre 4 $this->do_public_line($msg['title'], $this->notice->tit1.($this->notice->tit4 ? " : ".$this->notice->tit4 : ''), 'title'); //titre 2 $this->do_public_line($msg['other_title_t2'], $this->notice->tit2, 'tit2'); //titre 3 $this->do_public_line($msg['other_title_t3'], $this->notice->tit3, 'tit3'); //type de document $this->do_public_line($msg['typdocdisplay_start'], $tdoc->table[$this->notice->typdoc], 'typdoc'); //auteurs $this->do_public_line($msg['auteur_start'], $this->auteurs_tous, 'auteurs'); //congrès $this->do_public_line($msg['congres_aff_public_libelle'], $this->congres_tous, 'congres'); // mention d'édition $this->do_public_line($msg['mention_edition_start'], $this->notice->mention_edition, 'mention'); if ($this->notice->ed1_id) { $editeur = new publisher($this->notice->ed1_id); $this->publishers[]=$editeur; $this->do_public_line($msg['editeur_start'], inslink($editeur->display, str_replace("!!id!!", $this->notice->ed1_id, $this->lien_rech_editeur)).($this->notice->year ? ", ".$this->notice->year : ""), 'ed1'); } // Autre editeur if ($this->notice->ed2_id) { $editeur_2 = new publisher($this->notice->ed2_id); $this->publishers[]=$editeur; //+ année d'édition $this->do_public_line($msg['other_editor'], inslink($editeur_2->display, str_replace("!!id!!", $this->notice->ed2_id, $this->lien_rech_editeur)), 'ed2'); } // collection if ($this->notice->nocoll) $affnocoll = " ".str_replace("!!nocoll!!", $this->notice->nocoll, $msg['subcollection_details_nocoll']) ; else $affnocoll = ""; if($this->notice->subcoll_id) { $subcollection = new subcollection($this->notice->subcoll_id); $collection = new collection($this->notice->coll_id); $this->collections[]=$collection; $this->do_public_line($msg['coll_start'], inslink($collection->name, str_replace("!!id!!", $this->notice->coll_id, $this->lien_rech_collection))." ".$collection->collection_web_link, 'coll'); $this->do_public_line($msg['subcoll_start'], inslink($subcollection->name, str_replace("!!id!!", $this->notice->subcoll_id, $this->lien_rech_subcollection)).$affnocoll, 'subcoll'); } elseif ($this->notice->coll_id) { $collection = new collection($this->notice->coll_id); $this->collections[]=$collection; $this->do_public_line($msg['coll_start'], inslink($collection->get_isbd(), str_replace("!!id!!", $this->notice->coll_id, $this->lien_rech_collection)).$affnocoll." ".$collection->collection_web_link, 'coll'); } // $annee est vide si ajoutée avec l'éditeur, donc si pas éditeur, on l'affiche ici //année d'édition if (!$this->notice->ed1_id) { $this->do_public_line($msg['year_start'], $this->notice->year, 'year'); } // Titres uniformes if($this->notice->tu_print_type_2) { $this->do_public_line($msg['titre_uniforme_aff_public'], $this->notice->tu_print_type_2, 'tu'); } if($this->authperso_info)$this->notice_public .= $this->get_authperso_display(); // zone de la collation if($this->notice->npages) { if ($this->notice->niveau_biblio<>"a") { $this->do_public_line($msg['npages_start'], $this->notice->npages, 'npages'); } else { $this->do_public_line($msg['npages_start_perio'], $this->notice->npages, 'npages'); } } $this->do_public_line($msg['ill_start'], $this->notice->ill, 'ill'); $this->do_public_line($msg['size_start'], $this->notice->size, 'size'); $this->do_public_line($msg['accomp_start'], $this->notice->accomp, 'accomp'); if($opac_map_activate==1 || $opac_map_activate==2){ if($mapisbd=$this->map_info->get_public()) $this->notice_public .=$mapisbd; } // map if(($opac_map_activate==1 || $opac_map_activate==2) && $this->show_map){ $map = $this->map->get_map(); if($map){ $this->do_public_line($msg['map_notice_map'], $this->map->get_map(), 'map'); } } // ISBN ou NO. commercial $this->do_public_line($msg['code_start'], $this->notice->code, 'code'); $this->do_public_line($msg['price_start'], $this->notice->prix, 'prix'); // note générale $this->do_public_line($msg['n_gen_start'], nl2br(htmlentities($this->notice->n_gen,ENT_QUOTES, $charset)), 'ngen'); // langues if (count($this->langues)) { $langues_value = $this->construit_liste_langues($this->langues); if (count($this->languesorg)) $langues_value .= " ".$msg['711']." : ".$this->construit_liste_langues($this->languesorg); $this->do_public_line($msg['537'], $langues_value, 'langues'); } elseif (count($this->languesorg)) { $this->do_public_line($msg['711'], $this->construit_liste_langues($this->languesorg), 'langues'); } $this->notice_public.=$this->genere_in_perio(); if (!$short){ $this->notice_public .= $this->aff_suite() ; } $this->notice_public.="
\n"; //etat des collections if ($this->notice->niveau_biblio=='s' && $this->notice->niveau_hierar==1) $this->notice_public.=$this->affichage_etat_collections(); //notice de bulletin : etat des collections if ($this->notice->niveau_biblio=='b' && $this->notice->niveau_hierar==2) $this->notice_public.=$this->get_display_collstates_bulletin_notice(); // exemplaires, résas et compagnie if ($ex) $this->affichage_resa_expl = $this->aff_resa_expl() ; //carte des localisations if(($opac_map_activate==1 || $opac_map_activate==3) && $ex && $this->affichage_resa_expl){ $this->affichage_resa_expl = '
' . $this->affichage_resa_expl . map_locations_controler::get_map_location($memo_expl, $this->notice_id.'_0') . '
'; } // demandes if ($opac_demandes_allow_from_record) $this->aff_demand(); // demandes de numérisation if ($opac_scan_request_activate) $this->aff_scan_requests(); return; } // fin do_public($short=0,$ex=1) // fonction de génération de ,la mention in titre du pério + numéro public function genere_in_perio () { global $charset ; // serials : si article if($this->notice->niveau_biblio == 'a' && $this->notice->niveau_hierar == 2) { $bulletin = $this->parent_title; $notice_mere = inslink("".$this->parent_title."", str_replace("!!id!!", $this->parent_id, $this->lien_rech_perio)); if($this->parent_numero) $numero = $this->parent_numero." " ; // affichage de la mention de date utile : mention_date si existe, sinon date_date if ($this->parent_date) $date_affichee = " (".$this->parent_date.")"; elseif ($this->parent_date_date) $date_affichee .= " [".formatdate($this->parent_date_date)."]"; else $date_affichee="" ; $bulletin = inslink("".$numero.$date_affichee."", str_replace("!!id!!", $this->bulletin_id, $this->lien_rech_bulletin)); $this->bulletin_numero=$numero; $this->bulletin_date=$date_affichee; $mention_parent = "in $notice_mere > $bulletin "; $retour .= "
$mention_parent"; $pagination = htmlentities($this->notice->npages,ENT_QUOTES, $charset); //if ($pagination) $retour .= ". - $pagination"; } return $retour ; } // fin genere_in_perio () } // end class notice_affichage_custom_bretagne class notice_affichage_custom_alstom extends notice_affichage { // fonction d'affichage de la suite ISBD ou PUBLIC : partie commune, pour éviter la redondance de calcul public function aff_suite() { // afin d'éviter de recalculer un truc déjà calculé... if ($this->affichage_suite_flag) return $this->affichage_suite ; $ret = $this->genere_in_perio(); $ret .= parent::aff_suite(); return $ret ; } // fin aff_suite() } class notice_affichage_mw extends notice_affichage { //affichage alterné de 2 styles différents dans les lignes du tableau des notices protected $x=""; //gestion de l'alternance des lignes colorées dans le tableau HTML // génération d'une ligne de l'affichage public---------------------------------------- public function do_public_line($label, $value, $css='') { if($value) { if(substr(trim($label), strlen(trim($label))-1) != ':') $label .= ' :'; if($this->x) $this->x = ""; else $this->x = "2"; $this->notice_public .= " ".$label." ".$value." "; } } public function get_line_aff_suite($label, $value, $css='') { $line_aff_suite = ''; if($value) { if(substr(trim($label), strlen(trim($label))-1) != ':') $label .= ' :'; if($this->x) $this->x = ""; else $this->x = "2"; $line_aff_suite .= " ".$label." ".$value." "; } return $line_aff_suite; } // fonction d'affichage de la suite ISBD ou PUBLIC : partie commune, pour éviter la redondance de calcul public function aff_suite() { // afin d'éviter de recalculer un truc déjà calculé... if ($this->affichage_suite_flag) return $this->affichage_suite ; $ret = $this->genere_in_perio(); $ret .= parent::aff_suite(); return $ret ; } // fin aff_suite() // fonction d'affichage des exemplaires, résa et expl_num public function aff_resa_expl() { global $opac_resa ; global $opac_max_resa ; global $opac_show_exemplaires ; global $msg; global $dbh; global $popup_resa ; global $opac_resa_popup ; // la résa se fait-elle par popup ? global $allow_book ; // afin d'éviter de recalculer un truc déjà calculé... if ($this->affichage_resa_expl) return $this->affichage_resa_expl ; if ( (is_null($this->dom) &&$opac_show_exemplaires && $this->visu_expl && (!$this->visu_expl_abon || ($this->visu_expl_abon && $_SESSION["user_code"]))) || ($this->rights & 8) ) { $resa_check=check_statut($this->notice_id,0) ; // vérification si exemplaire réservable if ($resa_check) { // déplacé dans le IF, si pas visible : pas de bouton résa $requete_resa = "SELECT count(1) FROM resa WHERE resa_idnotice='$this->notice_id'"; $nb_resa_encours = pmb_mysql_result(pmb_mysql_query($requete_resa,$dbh), 0, 0) ; if ($nb_resa_encours) $message_nbresa = str_replace("!!nbresa!!", $nb_resa_encours, $msg["resa_nb_deja_resa"]) ; if (($this->notice->niveau_biblio=="m") && ($_SESSION["user_code"] && $allow_book) && $opac_resa && !$popup_resa) { $ret .= "

".$msg["bulletin_display_resa"]."

"; if ($opac_max_resa==0 || $opac_max_resa>$nb_resa_encours) { if ($opac_resa_popup) $ret .= "notice_id."&oresa=popup','doresa','scrollbars=yes,width=500,height=600,menubar=0,resizable=yes'); w.focus(); return false;\" id=\"bt_resa\">".$msg["bulletin_display_place_resa"]."" ; else $ret .= "".$msg["bulletin_display_place_resa"]."" ; $ret .= $message_nbresa ; } else $ret .= str_replace("!!nb_max_resa!!", $opac_max_resa, $msg["resa_nb_max_resa"]) ; $ret.= "
"; } elseif ( ($this->notice->niveau_biblio=="m") && !($_SESSION["user_code"]) && $opac_resa && !$popup_resa) { // utilisateur pas connecté // préparation lien réservation sans être connecté $ret .= "

".$msg["bulletin_display_resa"]."

"; if ($opac_resa_popup) $ret .= "notice_id."&oresa=popup','doresa','scrollbars=yes,width=500,height=600,menubar=0,resizable=yes'); w.focus(); return false;\" id=\"bt_resa\">".$msg["bulletin_display_place_resa"]."" ; else $ret .= "".$msg["bulletin_display_place_resa"]."" ; $ret .= $message_nbresa ; $ret .= "
"; } } $temp = static::expl_list($this->notice->niveau_biblio,$this->notice->notice_id); $ret .= $temp ; $this->affichage_expl = $temp ; } if ($this->visu_explnum && (!$this->visu_explnum_abon || ($this->visu_explnum_abon && $_SESSION["user_code"]))) { if (($explnum = show_explnum_per_notice($this->notice_id, 0, ''))) { $ret .= "

$msg[explnum]

".$explnum; $this->affichage_expl .= "

$msg[explnum]

".$explnum; } } $this->affichage_resa_expl = $ret ; return $ret ; } // génération du de l'affichage double avec onglets --------------------------------------------- // si $depliable=1 alors inclusion du parent / child public function genere_double($depliable=1, $premier='ISBD') { global $msg; global $cart_aff_case_traitement; global $opac_url_base ; global $opac_avis_allow; global $opac_allow_add_tag; $basket="
"; if ($this->cart_allowed) { $basket.="\"".$msg['notice_title_basket']."\"".$msg['notice_bt_panier'].""; } if (($opac_avis_allow && $opac_avis_allow != 2) || ($_SESSION["user_code"] && $opac_avis_allow == 2)) {//Avis $basket.="  notice_id','avis','width=520,height=290,scrollbars=yes,resizable=yes')\">".$msg['notice_bt_avis']."

"; } if (($opac_allow_add_tag==1)||(($opac_allow_add_tag==2)&&($_SESSION["user_code"]))){ //add tags $basket.="  notice_id','Ajouter_un_tag')\">".$msg['notice_bt_tag'].""; } if ((!$this->cart_allowed)&&($opac_avis_allow==0)) { $basket.=""; } $basket.="


"; // préparation de la case à cocher pour traitement panier if ($cart_aff_case_traitement) $case_a_cocher = " "; else $case_a_cocher = "" ; if ($this->notice->niveau_biblio=="s") $icon="icon_per_16x16.gif"; elseif ($this->notice->niveau_biblio=="a") $icon="icon_art_16x16.gif"; else $icon="icon_".$this->notice->typdoc."_16x16.gif"; if ($depliable) { $template="
$case_a_cocher \"".$msg['expandable_notice']."\""; if ($icon) $template.=" "; $template.=" !!heada!!