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;
}
// definition de la classe d'affichage des notices
class notice_affichage_unimarc {
var $notice_id = 0; // id de la notice a afficher
var $notice_header = "" ; // titre + auteur principaux
// le terme affichage correspond au code HTML qui peut etre envoye 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 categories et mots cles, peut etre ajoute a $notice_isbd ou a $notice_public afin d'avoir l'affichage complet PMB
var $notice_exemplaires = "" ; // Affichage des exemplaires, peut etre ajoute a $notice_isbd ou a $notice_public afin d'avoir l'affichage complet PMB
var $notice_explnum = "" ; // Affichage des exemplaires numeriques, peut etre ajoute a $notice_isbd ou a $notice_public afin d'avoir l'affichage complet PMB
var $notice_notes = "" ; // Affichage des notes de contenu et resume, peut etre ajoute a $notice_isbd ou a $notice_public afin d'avoir l'affichage complet PMB
var $notice; // objet notice tel que fetche dans la table notices,
// augmente de $this->notice->serie_name si serie il y a
// augmente de n_gen, n_contenu, n_resume si on est alle 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 apres le titre pour le header
var $auteurs_tous = "" ; // Tous les auteurs avec leur fonction
var $categories_toutes = "" ; // Toutes les categories dans lesquelles est rangee 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 $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 $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 $unimarc=array();
var $source_id;
var $source_name;
var $entrepots_localisations=array();
var $notice_expired = false;
// constructeur------------------------------------------------------------
function notice_affichage_unimarc($id, $liens, $cart=0, $to_print=0, $entrepots_localisations=array()) {
// $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;
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->entrepots_localisations = $entrepots_localisations;
if ($to_print) {
$this->avis_allowed = 0;
$this->tag_allowed = 0;
} else {
$this->avis_allowed = $opac_avis_allow;
$this->tag_allowed = $opac_allow_add_tag;
}
$this->to_print = $to_print;
// $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 ;
if(!$id)
return;
else {
$id+=0;
$this->notice_id = $id;
$this->fetch_data();
}
//$this->p_perso=new parametres_perso("notices");
}
// récupération des valeurs en table---------------------------------------
function fetch_data() {
global $dbh;
$requete = "SELECT source_id FROM external_count WHERE rid=".addslashes($this->notice_id);
$myQuery = mysql_query($requete, $dbh);
$source_id = mysql_result($myQuery, 0, 0);
$requete="select * from entrepot_source_".$source_id." where recid='".addslashes($this->notice_id)."' group by field_order,ufield,usubfield,subfield_order,value";
$myQuery = mysql_query($requete, $dbh);
$notice= new stdClass();
$lpfo="";
$n_ed=-1;
$exemplaires = array();
$doc_nums = array();
$cpt_notice_pperso=0;
$notice->notice_pperso= array();
if(mysql_num_rows($myQuery)) {
$is_article = false;
while ($l=mysql_fetch_object($myQuery)) {
if (!$this->source_id) {
$this->source_id=$l->source_id;
$requete="select name from connectors_sources where source_id=".$l->source_id;
$rsname=mysql_query($requete);
if (mysql_num_rows($rsname)) $this->source_name=mysql_result($rsname,0,0);
}
$this->unimarc[$l->ufield][$l->field_order][$l->usubfield][$l->subfield_order];
switch ($l->ufield) {
//dt
case "dt":
$notice->typdoc=$l->value;
break;
case "bl":
if($l->value == 'a'){
$notice->niveau_biblio=$l->value;
} else $notice->niveau_biblio='m'; //On force le document au type monographie
break;
case "hl":
if($l->value == '2'){
$notice->niveau_hierar=$l->value;
} else $notice->niveau_hierar='0'; //On force le niveau à zéro
break;
//ISBN
case "010":
if ($l->usubfield=="a") $notice->code=$l->value;
break;
//Titres
case "200":
switch ($l->usubfield) {
case "a":
$notice->tit1.=($notice->tit1?" ":"").$l->value;
break;
case "c":
$notice->tit2.=($notice->tit2?" ":"").$l->value;
break;
case "d":
$notice->tit3.=($notice->tit3?" ":"").$l->value;
break;
case "e":
$notice->tit4.=($notice->tit4?" ":"").$l->value;
break;
}
break;
//Editeur
case "210":
if($l->field_order!=$lpfo) {
$lpfo=$l->field_order;
$n_ed++;
}
switch ($l->usubfield) {
case "a":
$this->publishers[$n_ed]["city"]=$l->value;
break;
case "c":
$this->publishers[$n_ed]["name"]=$l->value;
break;
case "d":
$this->publishers[$n_ed]["year"]=$l->value;
$this->year=$l->value;
break;
}
break;
//Collation
case "215":
switch ($l->usubfield) {
case "a":
$notice->npages=$l->value;
break;
case "c":
$notice->ill=$l->value;
break;
case "d":
$notice->size=$l->value;
break;
case "e":
$notice->accomp=$l->value;
break;
}
break;
//Collection
case "225":
switch ($l->usubfield) {
case "a":
if(!$notice->coll)$notice->coll = new stdClass();
$notice->coll->titre=$l->value;
break;
case "i":
if(!$notice->subcoll)$notice->subcoll = new stdClass();
$notice->subcoll->titre=$l->value;
break;
case "v":
if(!$notice->coll)$notice->coll = new stdClass();
$notice->coll->num=$l->value;
break;
}
break;
//Note generale
case "300":
$notice->n_gen[]=$l->value;
break;
//Note de contenu
case "327":
$notice->n_contenu[]=$l->value;
break;
//Note de resume
case "330":
$notice->n_resume[]=$l->value;
break;
//Serie ou Pério
case "461":
switch($l->usubfield){
case 'x':
$this->perio_issn = $l->value;
break;
case 't':
$this->parent_title = $l->value;
$notice->serie_name = $l->value;
break;
case '9':
$is_article = true;
break;
}
if($is_article)
$notice->serie_name = "";
else {
$this->parent_title = "";
$this->perio_issn = "";
}
break;
//Bulletins
case "463" :
switch($l->usubfield){
case 't':
$notice->bulletin_titre = $l->value;
break;
case 'v':
$this->parent_numero = $l->value;
break;
case 'd':
$this->parent_aff_date_date = $l->value;
break;
case 'e':
$this->parent_date = $l->value;
break;
}
break;
//Titres Uniformes
case "500":
switch ($l->usubfield) {
case "a":
$this->titres_uniformes[]=$l->value;
break;
}
break;
//Mots cles
case "610":
switch ($l->usubfield) {
case "a":
$notice->index_l.=($notice->index_l?" / ":"").$l->value;
break;
}
break;
//Indexations décimales..;
case "676":
case "686":
switch ($l->usubfield) {
case "a":
$notice->indexint[] = $l->value;
break;
}
break;
//URL
case "856":
switch ($l->usubfield) {
case "u":
$notice->lien=$l->value;
break;
case "q":
$notice->eformat=$l->value;
break;
case "t":
$notice->lien_texte=$l->value;
break;
}
break;
// champs perso notice
case "900":
switch ($l->usubfield) {
case "a":
if($notice->notice_pperso[$cpt_notice_pperso]['value']){
$cpt_notice_pperso++;
}
$notice->notice_pperso[$cpt_notice_pperso]['value']=$l->value;
break;
case "l":
$notice->notice_pperso[$cpt_notice_pperso]['libelle']=$l->value;
break;
case "n":
$notice->notice_pperso[$cpt_notice_pperso]['name']=$l->value;
break;
case "t":
$notice->notice_pperso[$cpt_notice_pperso]['type']=$l->value;
break;
}
break;
case "996":
$exemplaires[$l->field_order][$l->usubfield] = $l->value;
break;
//Thumbnail
case "896":
switch ($l->usubfield) {
case "a":
$notice->thumbnail_url=$l->value;
}
break;
//Documents numériques
case "897":
$doc_nums[$l->field_order][$l->usubfield] = $l->value;
break;
}
}
}
$this->exemplaires = $exemplaires;
$this->docnums = $doc_nums;
$this->notice=$notice;
if (!$this->notice->typdoc) $this->notice->typdoc='a';
// serials : si article
//if($this->notice->niveau_biblio == 'a' && $this->notice->niveau_hierar == 2)
//$this->get_bul_info();
$this->fetch_categories() ;
$this->fetch_auteurs() ;
//$this->fetch_visibilite() ;
$this->fetch_langues(0) ;
$this->fetch_langues(1) ;
//$this->fetch_avis();
//$this->childs=array();
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;
// }
// }
//
//}
// recuperation des auteurs ---------------------------------------------------------------------
// retourne $this->auteurs_principaux = ce qu'on va afficher en titre du resultat
// 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() ;
if(!$this->source_id){
$requete = "SELECT source_id FROM external_count WHERE rid=".addslashes($this->notice_id);
$myQuery = mysql_query($requete, $dbh);
$this->source_id = mysql_result($myQuery, 0, 0);
}
$rqt = "select ufield,field_order,usubfield,subfield_order,value from entrepot_source_".$this->source_id." where recid='".addslashes($this->notice_id)."' and ufield like '7%' group by ufield,usubfield,field_order,subfield_order,value order by recid,field_order,subfield_order";
$res_sql=mysql_query($rqt);
$id_aut="";
$n_aut=-1;
while ($l=mysql_fetch_object($res_sql)) {
if ($l->field_order!=$id_aut) {
$n_aut++;
switch ($l->ufield) {
case "700":
case "710":
$responsabilites[]=0;
break;
case "701":
case "711":
$responsabilites[]=1;
break;
case "702":
case "712":
$responsabilites[]=2;
break;
}
switch (substr($l->ufield,0,2)) {
case "70":
$auteurs[$n_aut]["type"]=1;
break;
case "71":
$auteurs[$n_aut]["type"]=2;
break;
}
$auteurs[$n_aut]["id"]=$l->recid.$l->field_order;
$id_aut=$l->field_order;
}
switch ($l->usubfield) {
case '4':
$auteurs[$n_aut]['fonction']=$l->value;
$auteurs[$n_aut]['fonction_aff']=$fonction_auteur[$l->value];
break;
case 'a':
$auteurs[$n_aut]['name']=$l->value;
break;
case 'b':
if ($auteurs[$n_aut]['type']==2) {
$auteurs[$n_aut]['subdivision']=$l->value;
} else {
$auteurs[$n_aut]['rejete']=$l->value;
}
break;
case 'd':
if ($auteurs[$n_aut]['type']==2) {
$auteurs[$n_aut]['numero']=$l->value;
}
break;
case 'e':
if ($auteurs[$n_aut]['type']==2) {
$auteurs[$n_aut]['lieu'].=(($auteurs[$n_aut]['lieu'])?'; ':'').$l->value;
}
break;
case 'f':
$auteurs[$n_aut]['date']=$l->value;
break;
case 'g':
if ($auteurs[$n_aut]['type']==2) {
$auteurs[$n_aut]['rejete']=$l->value;
}
break;
}
}
foreach($auteurs as $n_aut=>$auteur) {
$auteurs[$n_aut]['auteur_titre']=$auteurs[$n_aut]['rejete'].($auteurs[$n_aut]['rejete']?' ':'').$auteurs[$n_aut]['name'];
if ($auteur['type']==2 && ($auteurs[$n_aut]['subdivision'] || $auteurs[$n_aut]['numero'] || $auteurs[$n_aut]['date'] || $auteurs[$n_aut]['lieu'])) {
$c='';
$c.=$auteurs[$n_aut]['subdivision'];
$c.=($c && $auteurs[$n_aut]['numero'])?(', '.$auteurs[$n_aut]['numero']):($auteurs[$n_aut]['numero']);
$c.=($c && $auteurs[$n_aut]['date'])?(', '.$auteurs[$n_aut]['date']):($auteurs[$n_aut]['date']);
$c.=($c && $auteurs[$n_aut]['lieu'])?(', '.$auteurs[$n_aut]['lieu']):($auteurs[$n_aut]['lieu']);
$auteurs[$n_aut]['auteur_titre'].=' ('.$c.')';
}
$auteurs[$n_aut]['auteur_isbd']=$auteurs[$n_aut]['auteur_titre'].($auteurs[$n_aut]['fonction_aff']?' ,':'').$auteurs[$n_aut]['fonction_aff'];
}
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 = "Prenom 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] ;
$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() ;
$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"];
$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"];
$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"];
$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 ="" ;
} // fin fetch_auteurs
// recuperation des categories ------------------------------------------------------------------
function fetch_categories() {
global $opac_thesaurus, $opac_categories_categ_in_line, $pmb_keyword_sep,$dbh;
$this->categories_toutes="";
if(!$this->source_id){
$requete = "SELECT source_id FROM external_count WHERE rid=".addslashes($this->notice_id);
$myQuery = mysql_query($requete, $dbh);
$this->source_id = mysql_result($myQuery, 0, 0);
}
$rqt = "select ufield,field_order,usubfield,subfield_order,value from entrepot_source_".$this->source_id." where recid='".addslashes($this->notice_id)."' and ufield like '60%' group by ufield,usubfield,field_order,subfield_order,value order by recid,field_order,subfield_order";
$res_sql=mysql_query($rqt);
$id_categ="";
$n_categ=-1;
$categ_l=array();
while ($l=mysql_fetch_object($res_sql)) {
if ($l->field_order!=$id_categ) {
if ($n_categ!=-1) {
$categ_libelle=$categ_l["a"].($categ_l["x"]?" - ".implode(" - ",$categ_l["x"]):"").($categ_l["y"]?" - ".implode(" - ",$categ_l["y"]):"").($categ_l["z"]?" - ".implode(" - ",$categ_l["z"]):"");
$this->categories_toutes.=($this->categories_toutes?" ":"").$categ_libelle;
}
$categ_l=array();
$n_categ++;
$id_categ=$l->field_order;
}
$categ_l[$l->usubfield]=$l->value;
}
if ($n_categ>=0) {
$categ_libelle=$categ_l["a"].($categ_l["x"]?" - ".implode(" - ",$categ_l["x"]):"").($categ_l["y"]?" - ".implode(" - ",$categ_l["y"]):"").($categ_l["z"]?" - ".implode(" - ",$categ_l["z"]):"");
$this->categories_toutes.=($this->categories_toutes?" ":"").$categ_libelle;
}
}
function fetch_langues($quelle_langues=0) {
global $dbh;
global $marc_liste_langues ;
if (!$marc_liste_langues) $marc_liste_langues=new marc_list('lang');
if(!$this->source_id){
$requete = "SELECT source_id FROM external_count WHERE rid=".addslashes($this->notice_id);
$myQuery = mysql_query($requete, $dbh);
$this->source_id = mysql_result($myQuery, 0, 0);
}
$rqt = "select ufield,field_order,usubfield,subfield_order,value from entrepot_source_".$this->source_id." where recid='".addslashes($this->notice_id)."' and ufield like '101' group by ufield,usubfield,field_order,subfield_order,value order by recid,field_order,subfield_order";
$res_sql=mysql_query($rqt);
$langues = array() ;
$subfield=array("0"=>"a","1"=>"c");
while ($l=mysql_fetch_object($res_sql)) {
if ($l->usubfield==$subfield[$quelle_langues]) {
if ($marc_liste_langues->table[$l->value]) {
$langues[] = array(
'lang_code' => $l->value,
'langue' => $marc_liste_langues->table[$l->value]
) ;
}
}
}
if (!$quelle_langues) $this->langues = $langues;
else $this->languesorg = $langues;
}
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;
}
//function affichage_etat_collections() {
// global $msg;
// global $pmb_etat_collections_localise;
//
// //etat des collections
// $affichage="";
// if ($pmb_etat_collections_localise) {
// $restrict_location=" and idlocation=location_id";
// $table_location=",docs_location";
// $select_location=",location_libelle";
// } else $restrict_location=" group by id_serial";
// $rqt="select state_collections$select_location from collections_state$table_location where id_serial=".$this->notice_id.$restrict_location;
// $execute_query=mysql_query($rqt);
// if ($execute_query) {
// if (mysql_num_rows($execute_query)) {
// $affichage = " ".$msg["perio_etat_coll"]." ";
// $bool=false;
// while ($r=mysql_fetch_object($execute_query)) {
// if ($r->state_collections) {
// if ($r->location_libelle) $affichage .= "".$r->location_libelle." : ";
// $affichage .= $r->state_collections." \n";
// $bool=true;
// }
// }
// if ($bool==false) $affichage="";
// }
// }
// return $affichage;
//}
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;
}
// Fonction d'affichage des avis
function affichage_avis($notice_id) {
global $dbh;
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);
} else {
$nombre_avis = "".$msg['avis_aucun']."";
$cpt_star = -1;
}
// Affichage du nombre d'avis ainsi que la note moyenne et les etoiles associees
$img_tag .= $nombre_avis."".$etoiles_moyenne."";
return $img_tag;
}
// Gestion des etoiles 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;
}
// generation du de l'affichage double avec onglets ---------------------------------------------
// si $depliable=1 alors inclusion du parent / child
function genere_double($depliable=1, $premier='ISBD') {
global $msg;
global $css;
global $cart_aff_case_traitement;
global $opac_url_base ;
global $dbh;
global $icon_doc, $tdoc, $biblio_doc;
global $allow_tag ; // l'utilisateur a-t-il le droit d'ajouter un tag
$this->premier = $premier ;
$this->double_ou_simple = 2 ;
$this->notice_childs = $this->genere_notice_childs();
if ($this->cart_allowed)
$basket="notice_id."&header=".rawurlencode(strip_tags($this->notice_header))."\" target=\"cart_info\">";
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;\">";
//Avis
//if ($this->avis_allowed) {
// $img_tag .= $this->affichage_avis($this->notice_id);
//}
// preparation de la case a cocher pour traitement panier
if ($cart_aff_case_traitement) $case_a_cocher = " ";
else $case_a_cocher = "" ;
$icon = $icon_doc[$this->notice->niveau_biblio.$this->notice->typdoc];
if($depliable == 1){
$template="
$case_a_cocher";
if(!$this->notice_expired)
$template.="
";
if ($icon) $template.="
";
$template.="
!!heada!!
";
}elseif($depliable == 2){
$template="
$case_a_cocher";
if(!$this->notice_expired)
$template.="
";
if ($icon) $template.="
";
$template.="
!!heada!!
";
}else{
$template="
$case_a_cocher";
if ($icon) $template.="";
$template.="!!heada!!";
}
$template.="!!CONTENU!!
!!SUITE!!
" ;
}
// ajout $annee si pas vide. Est vide si deja ajoute plus haut
$this->notice_public .= $annee ;
// zone de la collation
if($this->notice->npages)
if ($this->notice->niveau_biblio<>"a") $this->notice_public .= "
".$msg['npages_start']."
".$this->notice->npages."
";
else $this->notice_public .= "
".$msg['npages_start_perio']."
".$this->notice->npages."
";
if ($this->notice->ill)
$this->notice_public .= "
".$msg['ill_start']."
".$this->notice->ill."
";
if ($this->notice->size)
$this->notice_public .= "
".$msg['size_start']."
".$this->notice->size."
";
if ($this->notice->accomp)
$this->notice_public .= "
".$msg['accomp_start']."
".$this->notice->accomp."
";
// ISBN ou NO. commercial
if ($this->notice->code)
$this->notice_public .= "
".$msg['code_start']."
".$this->notice->code."
";
if ($this->notice->prix)
$this->notice_public .= "
".$msg['price_start']."
".$this->notice->prix."
";
// note generale
if (is_array($this->notice->n_gen) && count($this->notice->n_gen)) $zoneNote = nl2br(htmlentities(strip_tags(implode("\n",$this->notice->n_gen)),ENT_QUOTES, $charset));
if ($zoneNote) $this->notice_public .= "
".$msg['n_gen_start']."
".$zoneNote."
";
// langues
if (count($this->langues)) {
$this->notice_public .= "
".$msg['537']." :
".$this->construit_liste_langues($this->langues);
if (count($this->languesorg)) $this->notice_public .= " ".$msg['711']." : ".$this->construit_liste_langues($this->languesorg);
$this->notice_public.="
";
} else
if (count($this->languesorg)) $this->notice_public .= "
";
if(count($this->notice->notice_pperso)){
foreach($this->notice->notice_pperso as $pperso){
// est-ce bien de type pmb
if($pperso['value'] && $pperso['libelle'] && $pperso['name'] ){
switch($pperso['type']){
case 'url':
$html_pprerso .= "
".$explnum;
// }
// if ($autres_lectures = $this->autres_lectures($this->notice_id,$this->bulletin_id)) {
// $ret .= $autres_lectures;
// }
// $this->affichage_resa_expl = $ret ;
// return $ret ;
//}
// fonction d'affichage de la suite ISBD ou PUBLIC : partie commune, pour eviter la redondance de calcul
function aff_suite() {
global $msg;
global $charset;
global $mode;
global $opac_allow_tags_search;
// afin d'eviter de recalculer un truc deja calcule...
if ($this->affichage_suite) return $this->affichage_suite ;
// serials : si article
$ret .= $this->genere_in_perio () ;
//Espace
$ret.="
";
}
$this->notice_childs=$aff_childs." ";
} else $this->notice_childs = "" ;
return $this->notice_childs ;
}
function genere_bulletinage(){
global $msg,$charset;
$html="";
if($this->notice->niveau_biblio == "s" && $this->notice->niveau_hierar == "1"){
$query ="select
serial.recid as bulletin_id,
bulletin_num.value as bulletin_num,
bulletin_date.value as bulletin_date,
bulletin_date_date.value as bulletin_date_date,
group_concat(distinct analysis.recid) as analysis
from entrepot_source_".$this->source_id." as serial
join entrepot_source_".$this->source_id." as bulletin_num on serial.recid = bulletin_num.recid and bulletin_num.ufield='463' and bulletin_num.usubfield = 'v'
left join entrepot_source_".$this->source_id." as bulletin_title on serial.recid = bulletin_title.recid and bulletin_title.ufield='463' and bulletin_title.usubfield = 't'
left join entrepot_source_".$this->source_id." as bulletin_date on serial.recid = bulletin_date.recid and bulletin_date.ufield='463' and bulletin_date.usubfield = 'd'
left join entrepot_source_".$this->source_id." as bulletin_date_date on serial.recid = bulletin_date_date.recid and bulletin_date_date.ufield='463' and bulletin_date_date.usubfield = 'e'
left join entrepot_source_".$this->source_id." as analysis on serial.recid = analysis.recid
where serial.ufield='461' and serial.usubfield='t' and serial.value = '".addslashes($this->notice->tit1)."'
group by bulletin_num.value,bulletin_date.value,bulletin_date_date.value order by bulletin_date.value desc,bulletin_num.value desc";
$result = mysql_query($query);
if(mysql_num_rows($result)){
$html="
".$msg['see_bull']."
";
while($row = mysql_fetch_object($result)){
// highlight_string(print_r($row,true));
$html.=$this->genere_bulletin($row);
}
}
}
return $html;
}
function genere_bulletin($bulletin_infos){
global $opac_notices_depliable;
$html.="";
$titre = $bulletin_infos->bulletin_num;
if($bulletin_infos->bulletin_date){
$titre.= " (".format_date($bulletin_infos->bulletin_date).")";
}
if($bulletin_infos->bulletin_titre){
$titre.=": ".$bulletin_infos->bulletin_titre;
}
$contenu = "";
$analysis = explode(",",$bulletin_infos->analysis);
$opac_notices_depliable=1;
foreach($analysis as $article){
$contenu.=aff_notice_unimarc($article);
}
$opac_notices_depliable=0;
return gen_plus("es_bull_".$bulletin_infos->bulletin_id,$titre, $contenu);
}
// function get_bulletins(){
// global $dbh;
//
// if($this->notice->opac_visible_bulletinage){
// $requete = "SELECT * FROM bulletins where bulletin_id in(
// SELECT bulletin_id FROM bulletins WHERE bulletin_notice='".$this->notice_id."' and num_notice=0
// ) or bulletin_id in(
// SELECT bulletin_id FROM bulletins,notice_statut, notices WHERE bulletin_notice='".$this->notice_id."'
// and notice_id=num_notice
// 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)":"").")) ";
// $res = mysql_query($requete,$dbh);print $requete; exit();
// if(mysql_num_rows($res)){
// return mysql_fetch_array($res);
// }
// } else return 0;
// }
}