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; } class notice_info { var $notice; function notice_info($id,$environement=array()) { $this->notice_id=$id; $this->environement=$environement; if(!$this->environement["short"]) $this->environement["short"] = 6; if(!$this->environement["ex"]) $this->environement["ex"] = 0; if(!$this->environement["exnum"]) $this->environement["exnum"] = 1; if(!$this->environement["link"]) $this->environement["link"] = "./catalog.php?categ=isbd&id=!!id!!" ; if(!$this->environement["link_analysis"]) $this->environement["link_analysis"] = "./catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=!!bul_id!!&art_to_show=!!id!!" ; if(!$this->environement["link_explnum"]) $this->environement["link_explnum"] = "./catalog.php?categ=serials&sub=analysis&action=explnum_form&bul_id=!!bul_id!!&analysis_id=!!analysis_id!!&explnum_id=!!explnum_id!!" ; if(!$this->environement["link_bulletin"]) $this->environement["link_bulletin"] = "./catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=!!id!!" ; $this->fetch_data(); } function fetch_analysis_info() { if (($this->niveau_biblio=="a")&&($this->niveau_hierar==2)) { $requete="select tit1,bulletin_numero,date_date,mention_date from analysis join bulletins on (analysis_bulletin=bulletin_id) join notices on (bulletin_notice=notice_id) where " . "analysis_notice=".$this->notice_id; $resultat=mysql_query($requete); if (mysql_num_rows($resultat)) { $r=mysql_fetch_object($resultat); $this->serial_title=$r->tit1; $this->bulletin_numero=$r->bulletin_numero; $this->bulletin_mention_date=$r->mention_date; $this->bulletin_date_date=formatdate($r->date_date); } } } function fetch_data() { global $charset; global $opac_show_book_pics ; global $opac_book_pics_url ; global $opac_book_pics_msg; global $opac_url_base ; global $opac_sur_location_activate; global $fonction_auteur,$msg; global $tdoc; //Recuperation des infos de la notice $requete = "select * from notices where notice_id=".$this->notice_id; $resultat = mysql_query($requete); $res = mysql_fetch_object($resultat); $this->notice=$res; $this->memo_isbn = $this->notice->code ; $this->niveau_biblio=$this->notice->niveau_biblio; $this->niveau_hierar=$this->notice->niveau_hierar; //Recherche des infos du périodique $this->fetch_analysis_info(); //Recherche des etats de collection $this->fetch_collstate(); //Titres //Titre de serie et composition du titre $this->memo_series[]=array(); if($res->tparent_id) { $requete = "select * from series where serie_id=".$res->tparent_id; $resultat = mysql_query($requete); if (($serie = mysql_fetch_object($resultat))) { $this->memo_series[]=$serie; $this->memo_titre=$serie->serie_name; $this->memo_titre_serie=$serie->serie_name; $this->isbd = $this->serie_name; if($this->notice->tnvol) { $this->memo_titre.= ', '.$res->tnvol; $this->memo_titre_serie.= ', '.$res->tnvol; $this->isbd .= ', '.$this->tnvol; } } } elseif($this->notice->tnvol){ $this->memo_titre.= $res->tnvol; } $this->memo_titre ? $this->memo_titre .= '. '.$res->tit1 : $this->memo_titre = $res->tit1; $this->isbd ? $this->isbd .= '. '.$this->notice->tit1 : $this->isbd = $this->notice->tit1; $tit2 = $this->notice->tit2; $tit3 = $this->notice->tit3; $tit4 = $this->notice->tit4; if($tit3) $this->isbd .= " = $tit3"; if($tit4) $this->isbd .= " : $tit4"; if($tit2) $this->isbd .= " ; $tit2"; $this->isbd .= ' ['.$tdoc->table[$this->notice->typdoc].']'; $this->memo_notice_bulletin=new stdClass(); $this->memo_bulletin=new stdClass(); if ($res->niveau_biblio=='b') { $rqt="select tit1, date_format(date_date, '".$msg["format_date"]."') as aff_date_date, bulletin_numero as num_bull,bulletin_notice from bulletins,notices where bulletins.num_notice='".$this->notice_id."' and notices.notice_id=bulletins.bulletin_notice"; $execute_query=mysql_query($rqt); $row=mysql_fetch_object($execute_query); $this->memo_titre.=" ".(!$row->aff_date_date?sprintf($msg["bul_titre_perio"],$row->tit1):sprintf($msg["bul_titre_perio"],$row->tit1.", ".$row->num_bull." [".$row->aff_date_date."]")); // recherche editeur de la notice de perio $rqt_perio="select * from notices where notice_id=".$row->bulletin_notice; $execute_query_perio=mysql_query($rqt_perio); $row_perio=mysql_fetch_object($execute_query_perio); if (!$this->notice->ed1_id) { $this->notice->ed1_id=$row_perio->ed1_id; } }elseif ($res->niveau_biblio == 'a' && $res->niveau_hierar == 2) { $requete = "SELECT b.* "; $requete .= "from analysis a, notices b, bulletins c"; $requete .= " WHERE a.analysis_notice=".$this->notice_id; $requete .= " AND c.bulletin_id=a.analysis_bulletin"; $requete .= " AND c.bulletin_notice=b.notice_id"; $requete .= " LIMIT 1"; $myQuery = mysql_query($requete); if (mysql_num_rows($myQuery)) { $row_perio = mysql_fetch_object($myQuery); if (!$this->notice->ed1_id) { $this->notice->ed1_id=$row_perio->ed1_id; } } // info du bulletin de ce dépouillement $req_bulletin = "SELECT c.* from analysis a, bulletins c WHERE c.bulletin_id=a.analysis_bulletin AND analysis_notice=".$res->notice_id; $result_bull = mysql_query($req_bulletin); if(($bull=mysql_fetch_object($result_bull))){ $this->memo_bulletin=$bull; $this->memo_notice_bulletin=$bull; $this->bulletin_mention_date=$bull->mention_date; $this->bulletin_date_date=$bull->date_date; $this->bulletin_numero=$bull->bulletin_numero; } } $this->memo_complement_titre=$res->tit4; $this->memo_titre_parallele=$res->tit3; $this->memo_notice = $res; //mention d'édition $this->memo_mention_edition=$res->mention_edition; //Titre du pério pour les notices de bulletin if($res->niveau_biblio == 'b' && $res->niveau_hierar == '2'){ $req_bulletin = "SELECT bulletin_id, bulletin_numero, date_date, mention_date, bulletin_titre, bulletin_numero, tit1 as titre from bulletins, notices WHERE bulletin_notice=notice_id AND num_notice=".$res->notice_id; $result_bull = mysql_query($req_bulletin); while(($bull=mysql_fetch_object($result_bull))){ $this->memo_notice_bulletin=$bull; $this->memo_bulletin=$bull; $this->serial_title=$bull->titre; $this->bulletin_mention_date=$bull->mention_date; $this->bulletin_date_date=$bull->date_date; $this->bulletin_numero=$bull->bulletin_numero; $this->bulletin_id = $bull->bulletin_id; } } //Langage $this->memo_lang = get_notice_langues($this->notice_id, 0) ; // langues de la publication $this->memo_lang_or = get_notice_langues($this->notice_id, 1) ; // langues originales //Auteurs $this->authors = array(); //Recherche des auteurs; $this->responsabilites = get_notice_authors($this->notice_id); $mention_resp = $mention_resp_1 = $mention_resp_2 = array() ; $isbd_entry_1 = $isbd_entry_2 = array() ; $as = array_search ("0", $this->responsabilites["responsabilites"]) ; if ($as!== FALSE && $as!== NULL) { $auteur_0 = $this->responsabilites["auteurs"][$as] ; $auteur = new auteur($auteur_0["id"]); $auteur->fonction = $fonction_auteur[$auteur_0["fonction"]]; $this->authors[]=$auteur; if ($this->print_mode) $mention_resp_lib = $auteur->isbd_entry; else $mention_resp_lib = $auteur->isbd_entry_lien_gestion; if (!$this->print_mode) $mention_resp_lib .= $auteur->author_web_link ; if ($auteur_0["fonction"]) $mention_resp_lib .= ", ".$fonction_auteur[$auteur_0["fonction"]]; $mention_resp[] = $mention_resp_lib; $this->memo_auteur_principal=$auteur->isbd_entry; } $as = array_keys ($this->responsabilites["responsabilites"], "1" ) ; for ($i = 0 ; $i < count($as) ; $i++) { $indice = $as[$i] ; $auteur_1 = $this->responsabilites["auteurs"][$indice] ; $auteur = new auteur($auteur_1["id"]); $auteur->fonction = $fonction_auteur[$auteur_1["fonction"]]; $this->authors[]=$auteur; if ($this->print_mode) $mention_resp_lib = $auteur->isbd_entry; else $mention_resp_lib = $auteur->isbd_entry_lien_gestion; if (!$this->print_mode) $mention_resp_lib .= $auteur->author_web_link ; if ($auteur_1["fonction"]) $mention_resp_lib .= ", ".$fonction_auteur[$auteur_1["fonction"]]; $mention_resp[] = $mention_resp_lib; $mention_resp_1[] = $mention_resp_lib; $isbd_entry_1[]= $auteur->isbd_entry; } $this->memo_mention_resp_1 = implode ("; ",$mention_resp_1); $this->memo_auteur_autre_tab = $isbd_entry_1; $this->memo_auteur_autre = implode ("; ",$isbd_entry_1); $as = array_keys ($this->responsabilites["responsabilites"], "2" ) ; for ($i = 0 ; $i < count($as) ; $i++) { $indice = $as[$i] ; $auteur_2 = $this->responsabilites["auteurs"][$indice] ; $auteur = new auteur($auteur_2["id"]); $auteur->fonction = $fonction_auteur[$auteur_2["fonction"]]; $this->authors[]=$auteur; if ($this->print_mode) $mention_resp_lib = $auteur->isbd_entry; else $mention_resp_lib = $auteur->isbd_entry_lien_gestion; if (!$this->print_mode) $mention_resp_lib .= $auteur->author_web_link ; if ($auteur_2["fonction"]) $mention_resp_lib .= ", ".$fonction_auteur[$auteur_2["fonction"]]; $mention_resp[] = $mention_resp_lib; $mention_resp_2[]= $mention_resp_lib; $isbd_entry_2[]= $auteur->isbd_entry; } $this->memo_mention_resp_2 = implode ("; ",$mention_resp_2); $this->memo_auteur_secondaire_tab = $isbd_entry_2; $this->memo_auteur_secondaire = implode ("; ",$isbd_entry_2); $this->memo_libelle_mention_resp = implode ("; ",$mention_resp); if($this->memo_libelle_mention_resp) $this->isbd .= " / $this->memo_libelle_mention_resp" ; // on récupère la collection au passage, si besoin est if($this->notice->subcoll_id) { $collection = new subcollection($this->notice->subcoll_id); $info=$this->get_info_editeur($collection->editeur); $this->memo_collection=$collection->isbd_entry; $this->memo_ed1=$info["isbd_entry"]; $this->memo_ed1_name=$info["name"]; $this->memo_ed1_place=$info["place"]; $editeurs=$info["isbd_entry"]; } elseif ($this->notice->coll_id) { $collection = new collection($this->notice->coll_id); $info=$this->get_info_editeur($collection->parent); $this->memo_collection=$collection->isbd_entry; $this->memo_ed1=$info["isbd_entry"]; $this->memo_ed1_name=$info["name"]; $this->memo_ed1_place=$info["place"]; $editeurs=$info["isbd_entry"]; } elseif ($this->notice->ed1_id) { $info=$this->get_info_editeur($this->notice->ed1_id); $this->memo_ed1=$info["isbd_entry"]; $this->memo_ed1_name=$info["name"]; $this->memo_ed1_place=$info["place"]; $editeurs=$info["isbd_entry"]; } if($this->notice->ed2_id) { $info=$this->get_info_editeur($this->notice->ed2_id); $this->memo_ed2=$info["isbd_entry"]; $editeurs ? $editeurs .= ' ; '.$info["isbd_entry"] : $editeurs = $info["isbd_entry"]; } if($this->notice->year) { $editeurs ? $editeurs .= ', '.$this->notice->year : $editeurs = $this->notice->year; } elseif ($this->notice->niveau_biblio!='b') $editeurs ? $editeurs .= ', [s.d.]' : $editeurs = "[s.d.]"; $this->memo_year=$this->notice->year; if ($editeurs) $this->isbd .= ". - $editeurs"; // zone de la collation (ne concerne que a2) if($this->notice->npages) $collation = $this->notice->npages; if($this->notice->ill) $collation .= ': '.$this->notice->ill; if($this->notice->size) $collation .= '; '.$this->notice->size; if($this->notice->accomp) $collation .= '+ '.$this->notice->accomp; if($collation) $this->isbd .= ". - $collation"; $this->memo_collation=$collation; //Recherche du code dewey $requete = "select * from indexint where indexint_id=".$res -> indexint; $resultat = mysql_query($requete); if (($code_dewey=mysql_fetch_object($resultat))) { $this->memo_dewey=$code_dewey; } if($collections=$this->memo_collection) { if($this->notice->nocoll) $collections .= '; '.$this->notice->nocoll; $this->isbd .= ". - ($collections)".' '; } if(substr(trim($this->isbd), -1) != "."){ $this->isbd .= '.'; } //Traitement des exemplaires $this->memo_exemplaires=array(); $requete = "select expl_id, expl_cb, expl_cote, expl_statut,statut_libelle, expl_typdoc, tdoc_libelle, expl_note, expl_comment, expl_section, section_libelle, "; $requete.= "expl_owner, lender_libelle, expl_codestat, codestat_libelle, expl_date_retour, expl_date_depot, expl_note, pret_flag, expl_location, location_libelle "; if($opac_sur_location_activate) { $requete.= ", ifnull(surloc_id,0) as surloc_id, ifnull(surloc_libelle,'') as surloc_libelle "; } $requete.= "from exemplaires, docs_statut, docs_type, docs_section, docs_codestat, lenders, docs_location "; if($opac_sur_location_activate) { $requete.= "left join sur_location on surloc_num=surloc_id "; } $requete.= "where expl_notice=".$res -> notice_id." and expl_statut=idstatut and expl_typdoc=idtyp_doc and expl_section=idsection and expl_owner=idlender and expl_codestat=idcode "; $requete.= "and expl_location=idlocation"; $resultat = mysql_query($requete); while (($ex = mysql_fetch_object($resultat))) { //Champs perso d'exemplaires $parametres_perso=array(); $mes_pp=new parametres_perso("expl"); if (!$mes_pp->no_special_fields) { $mes_pp->get_values($ex->expl_id); $values = $mes_pp->values; foreach ( $values as $field_id => $vals ) { $parametres_perso[$mes_pp->t_fields[$field_id]["NAME"]]["TITRE"]=$mes_pp->t_fields[$field_id]["TITRE"]; foreach ( $vals as $value ) { $parametres_perso[$mes_pp->t_fields[$field_id]["NAME"]]["VALUE"][]=$mes_pp->get_formatted_output(array($value),$field_id); } } } $ex->parametres_perso=$parametres_perso; $this->memo_exemplaires[]=$ex; } //Descripteurs $requete="SELECT libelle_categorie FROM categories, notices_categories WHERE notcateg_notice=".$res->notice_id." and categories.num_noeud = notices_categories.num_noeud ORDER BY ordre_categorie"; $resultat=mysql_query($requete); $this->memo_categories=array(); while (($cat = mysql_fetch_object($resultat))) { $this->memo_categories[]=$cat; } //Champs perso de notice traite par la table notice_custom $mes_pp= new parametres_perso("notices"); $mes_pp->get_values($res->notice_id); $values = $mes_pp->values; $this->parametres_perso=array(); foreach ( $values as $field_id => $vals ) { $this->parametres_perso[$mes_pp->t_fields[$field_id]["NAME"]]["TITRE"]=$mes_pp->t_fields[$field_id]["TITRE"]; foreach ( $vals as $value ) { $this->parametres_perso[$mes_pp->t_fields[$field_id]["NAME"]]["VALUE"][]=$mes_pp->get_formatted_output(array($value),$field_id); } } //Notices liées, relations entre notices //les notices mères $requete="SELECT num_notice, linked_notice, relation_type, rank from notices_relations where num_notice=".$res->notice_id." order by num_notice, rank asc"; $resultat=mysql_query($requete); while(($notice_fille=mysql_fetch_object($resultat))) { $this->memo_notice_mere[]=$notice_fille->linked_notice; } // les notices filles $requete="SELECT num_notice, linked_notice, relation_type, rank from notices_relations where linked_notice=".$res->notice_id." order by num_notice, rank asc"; $resultat=mysql_query($requete); while(($notice_mere=mysql_fetch_object($resultat))) { $this->memo_notice_fille[]=$notice_mere->num_notice; } // liens vers les périodiques pour les notices d'article $req_perio_link = "SELECT notice_id, tit1, code from bulletins,analysis,notices WHERE bulletin_notice=notice_id and bulletin_id=analysis_bulletin and analysis_notice=".$res->notice_id; $result_perio_link=mysql_query($req_perio_link); while(($notice_perio_link=mysql_fetch_object($result_perio_link))){ $this->memo_notice_article[]=$notice_perio_link->notice_id; } // bulletinage pour les notices de pério $req_bulletinage = "SELECT bulletin_id, bulletin_numero, date_date, mention_date, bulletin_titre, bulletin_numero from bulletins, notices WHERE bulletin_notice = notice_id AND notice_id=".$res->notice_id; $result_bulletinage=mysql_query($req_bulletinage); while(($notice_bulletinage=mysql_fetch_object($result_bulletinage))){ $this->memo_bulletinage[]=$notice_bulletinage->bulletin_id; } // liens vers les bulletins pour les notices d'article $req_bull_link = "SELECT bulletin_id, bulletin_numero, date_date, mention_date, bulletin_titre, bulletin_numero from bulletins, analysis WHERE bulletin_id=analysis_bulletin and analysis_notice=".$res->notice_id; $result_bull_link=mysql_query($req_bull_link); while(($notice_bull_link=mysql_fetch_object($result_bull_link))){ $this->memo_article_bulletinage[]=$notice_bull_link->bulletin_id; } $paramaff["mine_type"]=1; $this->memo_explnum_assoc=show_explnum_per_notice($res->notice_id, 0,"",$paramaff); if ($this->notice->code || $this->notice->thumbnail_url) { if ($opac_show_book_pics=='1' && ($opac_book_pics_url || $this->notice->thumbnail_url)) { $code_chiffre = pmb_preg_replace('/-|\.| /', '', $this->notice->code); $url_image = $opac_book_pics_url ; $url_image = $opac_url_base."getimage.php?url_image=".urlencode($url_image)."¬icecode=!!noticecode!!&vigurl=".urlencode($this->notice->thumbnail_url) ; if ($this->notice->thumbnail_url) { $url_image_ok=$this->notice->thumbnail_url; $title_image_ok=""; } else { $url_image_ok = str_replace("!!noticecode!!", $code_chiffre, $url_image) ; $title_image_ok = htmlentities($opac_book_pics_msg, ENT_QUOTES, $charset); } $this->memo_image = ""; $this->memo_url_image=$url_image_ok; } else{ $this->memo_image="" ; $this->memo_url_image="./images/no_image.jpg"; } } //calcul du permalink... if($this->notice->niveau_biblio != "b"){ $this->permalink = $opac_url_base."index.php?lvl=notice_display&id=".$this->notice_id; }else { $this->permalink = $opac_url_base."index.php?lvl=bulletin_display&id=".$this->bulletin_id; } return true; } function get_info_editeur($id) { $info=array(); $requete = "SELECT * FROM publishers WHERE ed_id=$id LIMIT 1 "; $result = @mysql_query($requete); if(mysql_num_rows($result)) { $temp = mysql_fetch_object($result); mysql_free_result($result); $id = $temp->ed_id; $name = $temp->ed_name; $adr1 = $temp->ed_adr1; $adr2 = $temp->ed_adr2; $cp = $temp->ed_cp; $ville = $temp->ed_ville; $pays = $temp->ed_pays; $web = $temp->ed_web; $ed_comment= $temp->ed_comment ; // Determine le lieu de publication $l = ''; if ($adr1) $l = $adr1; if ($adr2) $l = ($l=='') ? $adr2 : $l.', '.$adr2; if ($cp) $l = ($l=='') ? $cp : $l.', '.$cp; if ($pays) $l = ($l=='') ? $pays : $l.', '.$pays; if ($ville) $l = ($l=='') ? $ville : $ville.' ('.$l.')'; if ($l=='') $l = '[S.l.]'; // Determine le nom de l'editeur if ($name) $n = $name; else $n = '[S.n.]'; // Constitue l'ISBD pour le coupe lieu/editeur if ($l == '[S.l.]' AND $n == '[S.n.]') $isbd_entry = '[S.l. : s.n.]'; else $isbd_entry = $l.' : '.$n; $info['isbd_entry']=$isbd_entry; $info['name'] = $name; $info['place'] = $l; } return($info); } function fetch_notices_parents(){ $this->notices_parents = array(); for($i=0 ; $imemo_notice_mere) ; $i++){ $this->notices_parents[] = new notice_info($this->memo_notice_mere[$i]); } } function fetch_notices_childs(){ $this->notices_childs = array(); for($i=0 ; $imemo_notice_fille) ; $i++){ $this->notices_childs[] = new notice_info($this->memo_notice_fille[$i]); } } function fetch_collstate() { if (($this->niveau_biblio=='s')&&($this->niveau_hierar==1)) { global $dbh; global $opac_sur_location_activate; //Traitement des exemplaires $this->memo_collstate=array(); $q = "select collstate_id, id_serial, state_collections, collstate_origine, collstate_cote, collstate_archive, collstate_lacune, collstate_note, "; $q.= "idlocation, location_libelle, "; $q.= "archempla_id, archempla_libelle, "; $q.= "archtype_id, archtype_libelle, "; $q.= "archstatut_id, archstatut_opac_libelle "; if($opac_sur_location_activate) { $q.= ", ifnull(surloc_id,0) as surloc_id, ifnull(surloc_libelle,'') as surloc_libelle "; } $q.= "from collections_state "; $q.= "join docs_location on location_id=idlocation "; if($opac_sur_location_activate) { $q.= "left join sur_location on surloc_num=surloc_id "; } $q.= "join arch_emplacement on collstate_emplacement=archempla_id "; $q.= "join arch_type on collstate_type=archtype_id "; $q.= "join arch_statut on collstate_statut=archstatut_id "; $q.= "where id_serial = '".$this->notice_id."' "; //pour l'opac $q.= "and ((archstatut_visible_opac=1 and archstatut_visible_opac_abon=0)".($_SESSION["user_code"]?" or (archstatut_visible_opac_abon=1 and archstatut_visible_opac=1)":"").")"; $r = mysql_query($q, $dbh); if ($r) { while (($cs = mysql_fetch_object($r))) { //Champs perso d'etats de collection $parametres_perso=array(); $pp=new parametres_perso("collstate"); if (!$pp->no_special_fields) { $pp->get_values($cs->expl_id); $values = $pp->values; foreach ( $values as $field_id => $vals ) { foreach ( $vals as $value ) { $parametres_perso[$pp->t_fields[$field_id]["NAME"]]["TITRE"]=$pp->t_fields[$field_id]["TITRE"]; $parametres_perso[$pp->t_fields[$field_id]["NAME"]]["VALUE"]=$pp->get_formatted_output(array($value),$field_id); } } } $cs->parametres_perso=$parametres_perso; $this->memo_collstate[]=$cs; } } } } } ?>