table;
}
// definition de la classe d'affichage des notices
class notice_affichage_unimarc {
public $notice_id = 0; // id de la notice a afficher
public $notice_header = "" ; // titre + auteur principaux
// le terme affichage correspond au code HTML qui peut etre envoye avec un print
public $notice_isbd = "" ; // Affichage ISBD de la notice
public $notice_public = "" ; // Affichage public PMB de la notice
public $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
public $notice_exemplaires = "" ; // Affichage des exemplaires, peut etre ajoute a $notice_isbd ou a $notice_public afin d'avoir l'affichage complet PMB
public $notice_explnum = "" ; // Affichage des exemplaires numeriques, peut etre ajoute a $notice_isbd ou a $notice_public afin d'avoir l'affichage complet PMB
public $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
public $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
public $responsabilites = array("responsabilites" => array(),"auteurs" => array()); // les auteurs avec tout ce qu'il faut
public $categories = array(); // les id des categories
public $auteurs_principaux = "" ; // ce qui apparait apres le titre pour le header
public $auteurs_tous = "" ; // Tous les auteurs avec leur fonction
public $categories_toutes = "" ; // Toutes les categories dans lesquelles est rangee la notice
public $lien_rech_notice ;
public $lien_rech_auteur ;
public $lien_rech_editeur ;
public $lien_rech_serie ;
public $lien_rech_collection ;
public $lien_rech_subcollection ;
public $lien_rech_indexint ;
public $lien_rech_motcle ;
public $lien_rech_categ ;
public $lien_rech_perio ;
public $lien_rech_bulletin ;
public $liens = array();
public $langues = array();
public $languesorg = array();
public $action = ''; // URL à associer au header
public $header = ''; // chaine accueillant le chapeau de notice (peut-être cliquable)
public $tit_serie = ''; // titre de série si applicable
public $tit1 = ''; // valeur du titre 1
public $result = ''; // affichage final
public $isbd = ''; // isbd de la notice en fonction du level défini
public $expl = 0; // flag indiquant si on affiche les infos d'exemplaire
public $link_expl = ''; // lien associé à un exemplaire
public $show_resa = 0; // flag indiquant si on affiche les infos de resa
public $p_perso;
public $cart_allowed = 0;
public $avis_allowed = 0;
public $tag_allowed = 0;
public $to_print = 0;
public $affichage_resa_expl = "" ; // lien réservation, exemplaires et exemplaires numériques, en tableau comme il faut
public $affichage_expl = "" ; // la même chose mais sans le lien réservation
public $statut = 1 ; // Statut (id) de la notice
public $statut_notice = "" ; // Statut (libellé) de la notice
public $visu_notice = 1 ; // Visibilité de la notice à tout le monde
public $visu_notice_abon = 0 ; // Visibilité de la notice aux abonnés uniquement
public $visu_expl = 1 ; // Visibilité des exemplaires de la notice à tout le monde
public $visu_expl_abon = 0 ; // Visibilité des exemplaires de la notice aux abonnés uniquement
public $visu_explnum = 1 ; // Visibilité des exemplaires numériques de la notice à tout le monde
public $visu_explnum_abon = 0 ;// Visibilité des exemplaires numériques de la notice aux abonnés uniquement
public $childs = array() ; // filles de la notice
public $notice_childs = "" ; // l'équivalent à afficher
public $anti_loop="";
public $seule = 0 ;
public $premier = "PUBLIC" ;
public $double_ou_simple = 2 ;
public $avis_moyenne ; // Moyenne des avis
public $avis_qte; // Quantité d'un avis
public $antiloop=array();
public $unimarc=array();
public $source_id;
public $source_name;
public $connector_id;
public $entrepots_localisations=array();
public $notice_expired = false;
public $details = array();
public $publishers = array();
public $titres_uniformes = array();
// constructeur------------------------------------------------------------
public function __construct($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 = (isset($liens['lien_rech_notice']) ? $liens['lien_rech_notice'] : '');
$this->lien_rech_auteur = (isset($liens['lien_rech_auteur']) ? $liens['lien_rech_auteur'] : '');
$this->lien_rech_editeur = (isset($liens['lien_rech_editeur']) ? $liens['lien_rech_editeur'] : '');
$this->lien_rech_serie = (isset($liens['lien_rech_serie']) ? $liens['lien_rech_serie'] : '');
$this->lien_rech_collection = (isset($liens['lien_rech_collection']) ? $liens['lien_rech_collection'] : '');
$this->lien_rech_subcollection = (isset($liens['lien_rech_subcollection']) ? $liens['lien_rech_subcollection'] : '');
$this->lien_rech_indexint = (isset($liens['lien_rech_indexint']) ? $liens['lien_rech_indexint'] : '');
$this->lien_rech_motcle = (isset($liens['lien_rech_motcle']) ? $liens['lien_rech_motcle'] : '');
$this->lien_rech_categ = (isset($liens['lien_rech_categ']) ? $liens['lien_rech_categ'] : '');
$this->lien_rech_perio = (isset($liens['lien_rech_perio']) ? $liens['lien_rech_perio'] : '');
$this->lien_rech_bulletin = (isset($liens['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 = intval($id);
$this->notice_id = $id;
$this->fetch_data();
}
//$this->p_perso=new parametres_perso("notices");
}
// récupération des valeurs en table---------------------------------------
public function fetch_data() {
global $dbh;
$requete = "SELECT source_id FROM external_count WHERE rid=".addslashes($this->notice_id);
$myQuery = pmb_mysql_query($requete, $dbh);
$source_id = pmb_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 = pmb_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(pmb_mysql_num_rows($myQuery)) {
$is_article = false;
while ($l=pmb_mysql_fetch_object($myQuery)) {
if (!$this->source_id) {
$this->source_id=$l->source_id;
$requete="select name, id_connector from connectors_sources where source_id=".$l->source_id;
$result=pmb_mysql_query($requete);
if (pmb_mysql_num_rows($result)) {
$row = pmb_mysql_fetch_object($result);
$this->source_name = $row->name;
$this->connector_id = $row->id_connector;
}
}
if (!isset($this->details[$l->ufield])) {
$this->details[$l->ufield] = array();
}
if ($l->usubfield === "") {
$this->details[$l->ufield][] = $l->value;
} else {
$this->details[$l->ufield][] = array($l->usubfield => $l->value);
}
// $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":
if(!isset($notice->tit1)) $notice->tit1 = '';
$notice->tit1.=($notice->tit1?" ":"").$l->value;
break;
case "c":
if(!isset($notice->tit2)) $notice->tit2 = '';
$notice->tit2.=($notice->tit2?" ":"").$l->value;
break;
case "d":
if(!isset($notice->tit3)) $notice->tit3 = '';
$notice->tit3.=($notice->tit3?" ":"").$l->value;
break;
case "e":
if(!isset($notice->tit4)) $notice->tit4 = '';
$notice->tit4.=($notice->tit4?" ":"").$l->value;
break;
}
break;
//Editeur
case "210":
case "214":
case "219":
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(!isset($notice->coll))$notice->coll = new stdClass();
$notice->coll->titre=$l->value;
break;
case "i":
if(!isset($notice->subcoll))$notice->subcoll = new stdClass();
$notice->subcoll->titre=$l->value;
break;
case "v":
if(!isset($notice->coll))$notice->coll = new stdClass();
$notice->coll->num=$l->value;
break;
}
break;
//Note generale
case "300":
if(empty($notice->n_gen)) {
$notice->n_gen = array();
}
$notice->n_gen[]=$l->value;
break;
//Note de contenu
case "327":
if(empty($notice->n_contenu)) {
$notice->n_contenu = array();
}
$notice->n_contenu[]=$l->value;
break;
//Note de resume
case "330":
if(empty($notice->n_resume)) {
$notice->n_resume = array();
}
$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":
if (!isset($notice->index_l)) {
$notice->index_l = "";
}
$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(isset($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 pmb_mysql_num_rows($myQuery);
} // fin fetch_data
//public 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 = pmb_mysql_query($requete, $dbh);
// if(pmb_mysql_num_rows($myQuery)) {
// $statut_temp = pmb_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
public 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 = pmb_mysql_query($requete, $dbh);
$this->source_id = pmb_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=pmb_mysql_query($rqt);
$id_aut="";
$n_aut=-1;
while ($l=pmb_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"]=(isset($l->recid) ? $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) {
if (!isset($auteurs[$n_aut]['lieu'])) {
$auteurs[$n_aut]['lieu'] = "";
}
$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'] = (!empty($auteurs[$n_aut]['rejete']) ? $auteurs[$n_aut]['rejete'].' ' : '').$auteurs[$n_aut]['name'];
if ($auteur['type']==2 && (!empty($auteurs[$n_aut]['subdivision']) || !empty($auteurs[$n_aut]['numero']) || !empty($auteurs[$n_aut]['date']) || !empty($auteurs[$n_aut]['lieu']))) {
$c='';
$c.=(!empty($auteurs[$n_aut]['subdivision']) ? $auteurs[$n_aut]['subdivision'] : "");
$c.=($c && !empty($auteurs[$n_aut]['numero'])) ? ', ' : "";
$c.=(!empty($auteurs[$n_aut]['numero'])) ? $auteurs[$n_aut]['numero'] : "";
$c.=($c && !empty($auteurs[$n_aut]['date'])) ? ', ' : "";
$c.=(!empty($auteurs[$n_aut]['date'])) ? $auteurs[$n_aut]['date'] : "";
$c.=($c && !empty($auteurs[$n_aut]['lieu'])) ? ', ' : "";
$c.=(!empty($auteurs[$n_aut]['lieu'])) ? $auteurs[$n_aut]['lieu'] : "";
$auteurs[$n_aut]['auteur_titre'].=' ('.$c.')';
}
$auteurs[$n_aut]['auteur_isbd']=$auteurs[$n_aut]['auteur_titre'].(!empty($auteurs[$n_aut]['fonction_aff'])?' ,':'').(isset($auteurs[$n_aut]['fonction_aff']) ? $auteurs[$n_aut]['fonction_aff'] : '');
}
if (!isset($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 ------------------------------------------------------------------
public 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 = pmb_mysql_query($requete, $dbh);
$this->source_id = pmb_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=pmb_mysql_query($rqt);
$id_categ="";
$n_categ=-1;
$categ_l=array();
while ($l=pmb_mysql_fetch_object($res_sql)) {
if ($l->field_order!=$id_categ) {
if ($n_categ!=-1) {
$categ_libelle=(!empty($categ_l["a"][0]) ? $categ_l["a"][0] : "").(!empty($categ_l["x"])?" - ".implode(" - ",$categ_l["x"]):"").(!empty($categ_l["y"]) ?" - ".implode(" - ",$categ_l["y"]):"").(!empty($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=(!empty($categ_l["a"][0]) ? $categ_l["a"][0] : "").(!empty($categ_l["x"])?" - ".implode(" - ",$categ_l["x"]):"").(!empty($categ_l["y"]) ?" - ".implode(" - ",$categ_l["y"]):"").(!empty($categ_l["z"]) ?" - ".implode(" - ",$categ_l["z"]):"");
$this->categories_toutes.=($this->categories_toutes?"
":"").$categ_libelle;
}
}
public 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 = pmb_mysql_query($requete, $dbh);
$this->source_id = pmb_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=pmb_mysql_query($rqt);
$langues = array() ;
$subfield=array("0"=>"a","1"=>"c");
while ($l=pmb_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;
}
public function fetch_avis() {
global $dbh;
$sql="select avg(note) as m from avis where valide=1 and type_object=1 and num_notice='$this->notice_id' group by num_notice";
$r = pmb_mysql_query($sql, $dbh);
$sql_nb = "select * from avis where valide=1 and type_object=1 and num_notice='$this->notice_id'";
$r_nb = pmb_mysql_query($sql_nb, $dbh);
$qte_avis = pmb_mysql_num_rows($r_nb);
$loc = pmb_mysql_fetch_object($r);
if($loc->m > 0) $moyenne=number_format($loc->m,1, ',', '');
$this->avis_moyenne = $moyenne;
$this->avis_qte = $qte_avis;
}
//public 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=pmb_mysql_query($rqt);
// if ($execute_query) {
// if (pmb_mysql_num_rows($execute_query)) {
// $affichage = "
".$msg["perio_etat_coll"]."
";
// $bool=false;
// while ($r=pmb_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;
//}
public 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
public 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
public 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
public function genere_double($depliable=1, $premier='ISBD') {
global $msg;
global $css;
global $cart_aff_case_traitement;
global $opac_url_base ;
global $dbh;
global $tdoc;
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) {
if(isset($_SESSION["cart"]) && in_array("es".$this->notice_id, $_SESSION["cart"])) {
$basket="";
} else {
$basket="notice_id."&header=".rawurlencode(strip_tags($this->notice_header))."\" target=\"cart_info\" title=\"".$msg['notice_title_basket']."\">";
}
} else {
$basket="";
}
//add tags
$img_tag = "";
//if ( ($this->tag_allowed==1) || ( ($this->tag_allowed==2)&&($_SESSION["user_code"])&&($allow_tag) ) )
// $img_tag.="notice_id','ajouter_un_tag'); 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_doc = marc_list_collection::get_instance('icondoc');
$icon = (isset($icon_doc->table[$this->notice->niveau_biblio.$this->notice->typdoc]) ? $icon_doc->table[$this->notice->niveau_biblio.$this->notice->typdoc] : "");
$biblio_doc = marc_list_collection::get_instance('nivbiblio');
if($depliable == 1){
$template="