source: pmb4.2/trunk/fuentes/pmb/classes/notice_info.class.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 30.5 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: notice_info.class.php,v 1.50.2.5 2015-10-28 10:19:20 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9// Récupération des info de notices
10require_once($class_path."/parametres_perso.class.php");
11require_once($include_path."/notice_authors.inc.php");
12require_once("$class_path/author.class.php");
13require_once("$class_path/collection.class.php");
14require_once("$class_path/subcollection.class.php");
15require_once($include_path."/notice_categories.inc.php");
16require_once($include_path."/explnum.inc.php");
17require_once($include_path."/interpreter/bbcode.inc.php");
18require_once("$class_path/authperso_notice.class.php");
19require_once("$class_path/map/map_objects_controler.class.php");
20require_once("$class_path/map_info.class.php");
21
22if (!sizeof($tdoc)) $tdoc = new marc_list('doctype');
23
24if (!count($fonction_auteur)) {
25        $fonction_auteur = new marc_list('function');
26        $fonction_auteur = $fonction_auteur->table;
27}
28
29if (!count($langue_doc)) {
30        $langue_doc = new marc_list('lang');
31        $langue_doc = $langue_doc->table;
32        }
33if (!count($icon_doc)) {
34        $icon_doc = new marc_list('icondoc');
35        $icon_doc = $icon_doc->table;
36}
37if(!count($biblio_doc)) {
38        $biblio_doc = new marc_list('nivbiblio');
39        $biblio_doc = $biblio_doc->table;
40}
41
42class notice_info {
43        var $notice;   
44       
45        function notice_info($id,$environement=array()) {                       
46                $this->notice_id=$id;
47                $this->environement=$environement;
48                if(!$this->environement["short"]) $this->environement["short"] = 6;
49                if(!$this->environement["ex"])  $this->environement["ex"] = 0;
50                if(!$this->environement["exnum"]) $this->environement["exnum"] = 1;
51               
52                if(!$this->environement["link"]) $this->environement["link"] = "./catalog.php?categ=isbd&id=!!id!!" ;
53                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!!" ;
54                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!!" ;
55                if(!$this->environement["link_bulletin"]) $this->environement["link_bulletin"] = "./catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=!!id!!" ;
56               
57                $this->fetch_data();
58        }
59       
60        function fetch_analysis_info() {
61                if (($this->niveau_biblio=="a")&&($this->niveau_hierar==2)) {
62                        $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 " .
63                                        "analysis_notice=".$this->notice_id;
64                        $resultat=pmb_mysql_query($requete);
65                        if (pmb_mysql_num_rows($resultat)) {
66                                $r=pmb_mysql_fetch_object($resultat);
67                                $this->serial_title=$r->tit1;
68                                $this->bulletin_numero=$r->bulletin_numero;
69                                $this->bulletin_mention_date=$r->mention_date;
70                                $this->bulletin_date_date=formatdate($r->date_date);
71                        }
72                }
73        }
74       
75        function fetch_data() {
76                global $base_path,$charset;
77                global $opac_show_book_pics ;
78                global $opac_book_pics_url ;
79                global $opac_book_pics_msg;
80                global $opac_url_base,$use_opac_url_base;
81                global $opac_sur_location_activate;
82                global $fonction_auteur,$msg;
83                global $tdoc,$icon_doc,$biblio_doc;
84                global $pmb_map_activate;
85                global $pmb_url_base;
86               
87                if (!$this->notice_id) return false;
88               
89                //Recuperation des infos de la notice
90                $requete = "select * from notices where notice_id=".$this->notice_id;
91                $resultat = pmb_mysql_query($requete);
92                $res = pmb_mysql_fetch_object($resultat);
93                $this->notice=$res;
94
95                $this->memo_isbn = $this->notice->code ;
96                $this->memo_typdoc = $tdoc->table[$this->notice->typdoc];
97                //Icone type de Document
98                $icon = $icon_doc[$this->notice->niveau_biblio.$this->notice->typdoc];
99                if ($icon) {
100                        $info_bulle_icon=$biblio_doc[$this->notice->niveau_biblio]." : ".$tdoc->table[$this->notice->typdoc];
101                        if ($use_opac_url_base) $this->memo_icondoc="<img src=\"".$opac_url_base."images/$icon\" alt=\"$info_bulle_icon\" title=\"$info_bulle_icon\" align='top' />";
102                        else $this->memo_icondoc="<img src=\"".$pmb_url_base."images/$icon\" alt=\"$info_bulle_icon\" title=\"$info_bulle_icon\" align='top' />";
103                }
104                if($use_opac_url_base) {
105                        if(isset($_SESSION["cart"]) && in_array($this->notice_id, $_SESSION["cart"])) {
106                                $this->memo_iconcart="<span id='baskets".$this->notice_id."'><a href='#' class=\"img_basket_exist\" title=\"".$msg['notice_title_basket_exist']."\"><img src=\"".$opac_url_base."images/basket_exist.gif\" border=\"0\" alt=\"".$msg['notice_title_basket_exist']."\" /></a></span>";
107                        } else {
108                                $title=$this->notice_header;
109                                if(!$title)$title=$this->notice->tit1;
110                                $this->memo_iconcart="<span id='baskets".$this->notice_id."'><a href=\"cart_info.php?id=".$this->notice_id."&header=".rawurlencode(strip_tags($title))."\" target=\"cart_info\" class=\"img_basket\" title=\"".$msg['notice_title_basket']."\"><img src=\"".$opac_url_base."images/basket_small_20x20.gif\" border=\"0\" title=\"".$msg['notice_title_basket']."\" alt=\"".$msg['notice_title_basket']."\" /></a></span>";
111                        }
112                } else {
113                        $this->memo_iconcart = "<img src=\"".$pmb_url_base."images/basket_small_20x20.gif\" align='absmiddle' border='0' title='".$msg["400"]."' alt='".$msg["400"]."' />";
114                }
115                $this->niveau_biblio=$this->notice->niveau_biblio;
116                $this->niveau_hierar=$this->notice->niveau_hierar;
117               
118                //Recherche des infos du périodique
119                $this->fetch_analysis_info();
120               
121                //Recherche des etats de collection
122                $this->fetch_collstate();
123               
124                //Titres
125                //Titre de serie et composition du titre
126                $this->memo_series[]=array();
127                if($res->tparent_id) {
128                        $requete = "select * from series where serie_id=".$res->tparent_id;
129                        $resultat = pmb_mysql_query($requete);
130                        if (($serie = pmb_mysql_fetch_object($resultat))) {
131                                $this->memo_series[]=$serie;
132                                $this->memo_titre=$serie->serie_name;
133                                $this->memo_titre_serie=$serie->serie_name;
134                                $this->isbd = $this->serie_name;
135                                if($this->notice->tnvol) {
136                                        $this->memo_titre.= ', '.$res->tnvol;                           
137                                        $this->memo_titre_serie.= ', '.$res->tnvol;     
138                                        $this->isbd .= ',&nbsp;'.$this->tnvol;
139                                }
140                        }
141                } elseif($this->notice->tnvol){
142                        $this->memo_titre.= $res->tnvol;
143                }
144               
145                $this->memo_titre ? $this->memo_titre .= '. '.$res->tit1 : $this->memo_titre = $res->tit1;     
146               
147                $this->isbd ? $this->isbd .= '.&nbsp;'.$this->notice->tit1 : $this->isbd = $this->notice->tit1;
148                $tit2 = $this->notice->tit2;
149                $tit3 = $this->notice->tit3;
150                $tit4 = $this->notice->tit4;
151                if($tit3) $this->isbd .= "&nbsp;= $tit3";
152                if($tit4) $this->isbd .= "&nbsp;: $tit4";
153                if($tit2) $this->isbd .= "&nbsp;; $tit2";
154                $this->isbd .= ' ['.$tdoc->table[$this->notice->typdoc].']';
155               
156               
157                $this->memo_notice_bulletin=new stdClass();
158                $this->memo_bulletin=new stdClass();
159                if ($res->niveau_biblio=='b') {
160                        $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";
161                        $execute_query=pmb_mysql_query($rqt);
162                        $row=pmb_mysql_fetch_object($execute_query);
163                        $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."]"));
164                       
165                        // recherche editeur de la notice de perio
166                        $rqt_perio="select * from notices where notice_id=".$row->bulletin_notice;
167                        $execute_query_perio=pmb_mysql_query($rqt_perio);
168                        $row_perio=pmb_mysql_fetch_object($execute_query_perio);
169                        if (!$this->notice->ed1_id) {
170                                $this->notice->ed1_id=$row_perio->ed1_id;
171                        }
172                        //issn pour les notices de bulletin
173                        if (!$this->notice->code) {
174                                $this->memo_isbn=$row_perio->code;
175                        }
176                }elseif ($res->niveau_biblio == 'a' && $res->niveau_hierar == 2) {     
177                        $requete = "SELECT b.* "; 
178                        $requete .= "from analysis a, notices b, bulletins c";
179                        $requete .= " WHERE a.analysis_notice=".$this->notice_id;
180                        $requete .= " AND c.bulletin_id=a.analysis_bulletin";
181                        $requete .= " AND c.bulletin_notice=b.notice_id";
182                        $requete .= " LIMIT 1";
183                        $myQuery = pmb_mysql_query($requete);
184                        if (pmb_mysql_num_rows($myQuery)) {             
185                                $row_perio = pmb_mysql_fetch_object($myQuery);
186                                if (!$this->notice->ed1_id) {                   
187                                        $this->notice->ed1_id=$row_perio->ed1_id;
188                                }
189                                //issn pour les notice de dépouillement
190                                if (!$this->notice->code) {
191                                        $this->memo_isbn=$row_perio->code;
192                                }                               
193                        }       
194
195                        //      info du bulletin de ce dépouillement                   
196                        $req_bulletin = "SELECT  c.* from analysis a, bulletins c WHERE c.bulletin_id=a.analysis_bulletin AND analysis_notice=".$res->notice_id;
197                        $result_bull = pmb_mysql_query($req_bulletin);
198                        if(($bull=pmb_mysql_fetch_object($result_bull))){                               
199                                $this->memo_bulletin=$bull;                             
200                                $this->memo_notice_bulletin=$bull;
201                                $this->bulletin_mention_date=$bull->mention_date;
202                                $this->bulletin_date_date=formatdate($bull->date_date);
203                                $this->bulletin_numero=$bull->bulletin_numero;
204                        }
205                }       
206                $this->memo_complement_titre=$res->tit4;
207                $this->memo_titre_parallele=$res->tit3;
208               
209                $this->memo_notice = $res;
210               
211                //mention d'édition
212                $this->memo_mention_edition=$res->mention_edition;
213       
214                //Titre du pério pour les notices de bulletin           
215                if($res->niveau_biblio == 'b' && $res->niveau_hierar == '2'){                           
216                        $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;
217                        $result_bull = pmb_mysql_query($req_bulletin);
218                        while(($bull=pmb_mysql_fetch_object($result_bull))){
219                                $this->memo_notice_bulletin=$bull;
220                                $this->memo_bulletin=$bull;
221                                $this->serial_title=$bull->titre;
222                                $this->bulletin_mention_date=$bull->mention_date;
223                                $this->bulletin_date_date=formatdate($bull->date_date);
224                                $this->bulletin_numero=$bull->bulletin_numero;
225                                $this->bulletin_id = $bull->bulletin_id;
226                        }                               
227                }
228
229                //Langage
230                $this->memo_lang        = get_notice_langues($this->notice_id, 0) ;     // langues de la publication
231                $this->memo_lang_or     = get_notice_langues($this->notice_id, 1) ; // langues originales
232                       
233                               
234                //Auteurs
235                $this->authors = array();
236                //Recherche des auteurs;
237                $this->responsabilites = get_notice_authors($this->notice_id); 
238                $mention_resp = $mention_resp_1 = $mention_resp_2 = array() ;   
239                $isbd_entry_1 = $isbd_entry_2 = array() ;               
240                $as = array_search ("0", $this->responsabilites["responsabilites"]) ;
241                if ($as!== FALSE && $as!== NULL) {
242                        $auteur_0 = $this->responsabilites["auteurs"][$as] ;
243                        $auteur = new auteur($auteur_0["id"]);
244                        $auteur->fonction = $fonction_auteur[$auteur_0["fonction"]];
245                        $this->authors[]=$auteur;
246                        if ($this->print_mode) $mention_resp_lib = $auteur->isbd_entry; 
247                        else $mention_resp_lib = $auteur->isbd_entry_lien_gestion;
248                        if (!$this->print_mode) $mention_resp_lib .= $auteur->author_web_link ;
249                        if ($auteur_0["fonction"]) $mention_resp_lib .= ", ".$fonction_auteur[$auteur_0["fonction"]];
250                        $mention_resp[] = $mention_resp_lib;
251                        $this->memo_auteur_principal=$auteur->isbd_entry;
252                }               
253                $as = array_keys ($this->responsabilites["responsabilites"], "1" ) ;
254                for ($i = 0 ; $i < count($as) ; $i++) {
255                        $indice = $as[$i] ;
256                        $auteur_1 = $this->responsabilites["auteurs"][$indice] ;
257                        $auteur = new auteur($auteur_1["id"]);
258                        $auteur->fonction = $fonction_auteur[$auteur_1["fonction"]];
259                        $this->authors[]=$auteur;
260                        if ($this->print_mode) $mention_resp_lib = $auteur->isbd_entry; 
261                        else $mention_resp_lib = $auteur->isbd_entry_lien_gestion;
262                        if (!$this->print_mode) $mention_resp_lib .= $auteur->author_web_link ;
263                        if ($auteur_1["fonction"]) $mention_resp_lib .= ", ".$fonction_auteur[$auteur_1["fonction"]];
264                        $mention_resp[] = $mention_resp_lib;
265                        $mention_resp_1[] = $mention_resp_lib;
266                        $isbd_entry_1[]= $auteur->isbd_entry;
267                }       
268                $this->memo_mention_resp_1 = implode ("; ",$mention_resp_1);
269                $this->memo_auteur_autre_tab = $isbd_entry_1;
270                $this->memo_auteur_autre = implode ("; ",$isbd_entry_1);
271                       
272                $as = array_keys ($this->responsabilites["responsabilites"], "2" ) ;
273                for ($i = 0 ; $i < count($as) ; $i++) {
274                        $indice = $as[$i] ;
275                        $auteur_2 = $this->responsabilites["auteurs"][$indice] ;
276                        $auteur = new auteur($auteur_2["id"]);
277                        $auteur->fonction = $fonction_auteur[$auteur_2["fonction"]];
278                        $this->authors[]=$auteur;
279                        if ($this->print_mode) $mention_resp_lib = $auteur->isbd_entry; 
280                        else $mention_resp_lib = $auteur->isbd_entry_lien_gestion;
281                        if (!$this->print_mode) $mention_resp_lib .= $auteur->author_web_link ;
282                        if ($auteur_2["fonction"]) $mention_resp_lib .= ", ".$fonction_auteur[$auteur_2["fonction"]];
283                        $mention_resp[] = $mention_resp_lib;
284                        $mention_resp_2[]= $mention_resp_lib;
285                        $isbd_entry_2[]= $auteur->isbd_entry;
286                }       
287                $this->memo_mention_resp_2 = implode ("; ",$mention_resp_2);
288                $this->memo_auteur_secondaire_tab = $isbd_entry_2;             
289                $this->memo_auteur_secondaire = implode ("; ",$isbd_entry_2);
290                               
291                $this->memo_libelle_mention_resp = implode ("; ",$mention_resp);               
292                if($this->memo_libelle_mention_resp) $this->isbd .= "&nbsp;/ $this->memo_libelle_mention_resp" ;
293
294                // on récupère la collection au passage, si besoin est
295                if($this->notice->subcoll_id) {
296                        $collection = new subcollection($this->notice->subcoll_id);
297                        $info=$this->get_info_editeur($collection->editeur);                   
298                        $this->memo_collection=$collection->isbd_entry;
299                        $this->memo_ed1=$info["isbd_entry"];
300                        $this->memo_ed1_name=$info["name"];
301                        $this->memo_ed1_place=$info["place"];
302                        $editeurs=$info["isbd_entry"];                         
303                } elseif ($this->notice->coll_id) {
304                        $collection = new collection($this->notice->coll_id);
305                        $info=$this->get_info_editeur($collection->parent);                     
306                        $this->memo_collection=$collection->isbd_entry;
307                        $this->memo_ed1=$info["isbd_entry"];
308                        $this->memo_ed1_name=$info["name"];
309                        $this->memo_ed1_place=$info["place"];
310                        $editeurs=$info["isbd_entry"];         
311                } elseif ($this->notice->ed1_id) {
312                        $info=$this->get_info_editeur($this->notice->ed1_id);
313                        $this->memo_ed1=$info["isbd_entry"];   
314                        $this->memo_ed1_name=$info["name"];
315                        $this->memo_ed1_place=$info["place"];
316                        $editeurs=$info["isbd_entry"];         
317                }               
318                if($this->notice->ed2_id) {
319                        $info=$this->get_info_editeur($this->notice->ed2_id);   
320                        $this->memo_ed2=$info["isbd_entry"];
321                        $this->memo_ed2_name=$info["name"];
322                        $this->memo_ed2_place=$info["place"];
323                        $editeurs ? $editeurs .= '&nbsp;; '.$info["isbd_entry"] : $editeurs = $info["isbd_entry"];
324                }
325       
326                if($this->notice->year) {
327                        $editeurs ? $editeurs .= ', '.$this->notice->year : $editeurs = $this->notice->year;
328                } elseif ($this->notice->niveau_biblio!='b') $editeurs ? $editeurs .= ', [s.d.]' : $editeurs = "[s.d.]";
329                $this->memo_year=$this->notice->year;
330       
331                if ($editeurs) $this->isbd .= ".&nbsp;-&nbsp;$editeurs";               
332               
333                // zone de la collation (ne concerne que a2)
334                if($this->notice->npages)
335                        $collation = $this->notice->npages;
336                if($this->notice->ill)
337                        $collation .= ': '.$this->notice->ill;
338                if($this->notice->size)
339                        $collation .= '; '.$this->notice->size;
340                if($this->notice->accomp)
341                        $collation .= '+ '.$this->notice->accomp;
342                       
343                if($collation)
344                        $this->isbd .= ".&nbsp;-&nbsp;$collation";
345                $this->memo_collation=$collation;
346
347                // map
348                $this->memo_map_isbd="";                       
349                $this->memo_map_id = 0;
350                $this->memo_map_echelle = "";
351                $this->memo_map_projection = "";
352                $this->memo_map_ref = "";
353                $this->memo_map_equinoxe = "";
354                $this->memo_map="";
355                if($pmb_map_activate){
356                        $ids[]=$this->notice_id;
357                        $this->map=new map_objects_controler(TYPE_RECORD,$ids);
358                        $this->map_info=new map_info($this->notice_id);
359                       
360                        $this->memo_map_isbd=$this->map_info->get_isbd();
361                        if($this->memo_map_isbd)$this->isbd .=".&nbsp;-&nbsp;".$this->memo_map_isbd;
362                       
363                        $this->memo_map_id = $this->map_info->map['id'];
364                        $this->memo_map_echelle = $this->map_info->map['echelle'];
365                        $this->memo_map_projection = $this->map_info->map['projection'];
366                        $this->memo_map_ref = $this->map_info->map['ref'];
367                        $this->memo_map_equinoxe = $this->map_info->map['equinoxe'];
368                        $this->memo_map=$this->map->get_map();                 
369                }
370
371                //Recherche du code dewey
372                $requete = "select * from indexint where indexint_id=".$res -> indexint;
373                $resultat = pmb_mysql_query($requete);
374                if (($code_dewey=pmb_mysql_fetch_object($resultat))) {
375                        $this->memo_dewey=$code_dewey;
376                }
377               
378                if($collections=$this->memo_collection) {
379                        if($this->notice->nocoll) $collections .= '; '.$this->notice->nocoll;
380                        $this->isbd .= ".&nbsp;-&nbsp;($collections)".' ';
381                }
382                if(substr(trim($this->isbd), -1) != "."){
383                        $this->isbd .= '.';
384                }
385               
386                //Traitement des exemplaires
387                $this->memo_exemplaires=array();
388                $requete = "select expl_id, expl_cb, expl_cote, expl_statut,statut_libelle, expl_typdoc, tdoc_libelle, expl_note, expl_comment, expl_section, section_libelle, "; 
389                $requete.= "expl_owner, lender_libelle, expl_codestat, codestat_libelle, expl_date_retour, expl_date_depot, expl_note, pret_flag, expl_location, location_libelle, expl_prix ";
390                if($opac_sur_location_activate) {
391                        $requete.= ", ifnull(surloc_id,0) as surloc_id, ifnull(surloc_libelle,'') as surloc_libelle ";
392                }
393                $requete.= "from exemplaires, docs_statut, docs_type, docs_section, docs_codestat, lenders, docs_location "; 
394                if($opac_sur_location_activate) {
395                        $requete.= "left join sur_location on surloc_num=surloc_id ";
396                }
397                $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 ";
398                $requete.= "and expl_location=idlocation ";
399                $requete.= "union ";
400                $requete.= "select expl_id, expl_cb, expl_cote, expl_statut,statut_libelle, expl_typdoc, tdoc_libelle, expl_note, expl_comment, expl_section, section_libelle, "; 
401                $requete.= "expl_owner, lender_libelle, expl_codestat, codestat_libelle, expl_date_retour, expl_date_depot, expl_note, pret_flag, expl_location, location_libelle, expl_prix ";
402                if($opac_sur_location_activate) {
403                        $requete.= ", ifnull(surloc_id,0) as surloc_id, ifnull(surloc_libelle,'') as surloc_libelle ";
404                }
405                $requete.= "from exemplaires, bulletins, docs_statut, docs_type, docs_section, docs_codestat, lenders, docs_location "; 
406                if($opac_sur_location_activate) {
407                        $requete.= "left join sur_location on surloc_num=surloc_id ";
408                }
409                $requete.= "where bulletins.num_notice=".$res -> notice_id." and expl_bulletin=bulletin_id and expl_statut=idstatut and expl_typdoc=idtyp_doc and expl_section=idsection and expl_owner=idlender and expl_codestat=idcode ";
410                $requete.= "and expl_location=idlocation";
411                $resultat = pmb_mysql_query($requete);         
412                while (($ex = pmb_mysql_fetch_object($resultat))) {
413                        //Champs perso d'exemplaires                   
414                        $parametres_perso=array();
415                        $mes_pp=new parametres_perso("expl");
416                        if (!$mes_pp->no_special_fields) {                     
417                                $mes_pp->get_values($ex->expl_id);
418                                $values = $mes_pp->values;
419                                foreach ( $values as $field_id => $vals ) {
420                                        $parametres_perso[$mes_pp->t_fields[$field_id]["NAME"]]["TITRE"]=$mes_pp->t_fields[$field_id]["TITRE"];
421                                        foreach ( $vals as $value ) {                           
422                                                $parametres_perso[$mes_pp->t_fields[$field_id]["NAME"]]["VALUE"][]=$mes_pp->get_formatted_output(array($value),$field_id);     
423                                        }
424                                }                                                       
425                        }
426                        $ex->parametres_perso=$parametres_perso;
427                        $this->memo_exemplaires[]=$ex;
428                }
429               
430                //Descripteurs
431                $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";
432                $resultat=pmb_mysql_query($requete);
433                $this->memo_categories=array();
434                while (($cat = pmb_mysql_fetch_object($resultat))) {
435                        $this->memo_categories[]=$cat;
436                }
437               
438                $authperso = new authperso_notice($this->notice_id);
439                $this->memo_authperso_all_isbd .=$authperso->get_notice_display();
440                $this->memo_authperso_all_isbd_list=$authperso->get_notice_display_list();             
441                foreach ($authperso->auth_info as $fields) {
442                        foreach ($fields["info_fields"] as $field) {
443                                if(is_array($field["values"]) && count($field["values"])) {
444                                        $tvalues = array();
445                                        foreach ($field["values"] as $values) {
446                                                $tvalues[] = $values["format_value"];
447                                        }
448                                        $this->parametres_auth_perso[$field["name"]]["TITRE"][] = $field["label"];
449                                        $this->parametres_auth_perso[$field["name"]]["VALUE"][] = $tvalues;
450                                }
451                        }
452                }
453               
454                //Champs perso de notice traite par la table notice_custom
455                $mes_pp= new parametres_perso("notices");
456                $mes_pp->get_values($res->notice_id);
457                $values = $mes_pp->values;
458                $this->parametres_perso=array();
459                foreach ( $values as $field_id => $vals ) {
460                        $this->parametres_perso[$mes_pp->t_fields[$field_id]["NAME"]]["TITRE"]=$mes_pp->t_fields[$field_id]["TITRE"];
461                        foreach ( $vals as $value ) {
462                                $this->parametres_perso[$mes_pp->t_fields[$field_id]["NAME"]]["VALUE"][]=$mes_pp->get_formatted_output(array($value),$field_id);                               
463                                $this->parametres_perso[$mes_pp->t_fields[$field_id]["NAME"]]["VALUE_IN_DATABASE"][]=$value;                           
464                        }
465                }               
466
467                //Notices liées, relations entre notices
468                //les notices mères
469                $requete="SELECT num_notice, linked_notice, relation_type, rank from notices_relations where num_notice=".$res->notice_id." order by num_notice, rank asc";
470                $resultat=pmb_mysql_query($requete);
471                $i=0;
472                while(($notice_fille=pmb_mysql_fetch_object($resultat))) {                                             
473                        $this->memo_notice_mere[$i]=$notice_fille->linked_notice;               
474                        $this->memo_notice_mere_relation_type[$i]=$notice_fille->relation_type;
475                        $i++;
476                }
477       
478                // les notices filles   
479                $requete="SELECT num_notice, linked_notice, relation_type, rank from notices_relations where linked_notice=".$res->notice_id." order by num_notice, rank asc";
480                $resultat=pmb_mysql_query($requete);
481                $i=0;
482                while(($notice_mere=pmb_mysql_fetch_object($resultat))) {                                               
483                        $this->memo_notice_fille[$i]=$notice_mere->num_notice; 
484                        $this->memo_notice_fille_relation_type[$i]=$notice_mere->relation_type;
485                        $i++;
486                }
487                       
488                // liens vers les périodiques pour les notices d'article
489                $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;
490                $result_perio_link=pmb_mysql_query($req_perio_link);
491                while(($notice_perio_link=pmb_mysql_fetch_object($result_perio_link))){
492                        $this->memo_notice_article[]=$notice_perio_link->notice_id;
493                }               
494       
495                // bulletinage pour les notices de pério                       
496                $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;
497                $result_bulletinage=pmb_mysql_query($req_bulletinage);                                 
498                while(($notice_bulletinage=pmb_mysql_fetch_object($result_bulletinage))){
499                        $this->memo_bulletinage[]=$notice_bulletinage->bulletin_id;
500                }                                       
501                               
502                // liens vers les bulletins pour les notices d'article
503                $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;
504                $result_bull_link=pmb_mysql_query($req_bull_link);                                             
505                while(($notice_bull_link=pmb_mysql_fetch_object($result_bull_link))){
506                        $this->memo_article_bulletinage[]=$notice_bull_link->bulletin_id;
507                }                       
508                                       
509                $paramaff["mine_type"]=1;
510                $this->memo_explnum_assoc=show_explnum_per_notice($res->notice_id, 0,"",$paramaff);
511               
512                if ($this->notice->code || $this->notice->thumbnail_url) {
513                        if ($opac_show_book_pics=='1' && ($opac_book_pics_url || $this->notice->thumbnail_url)) {
514                                $code_chiffre = pmb_preg_replace('/-|\.| /', '', $this->notice->code);
515                                $url_image = $opac_book_pics_url ;
516                                $url_image = $opac_url_base."getimage.php?url_image=".urlencode($url_image)."&amp;noticecode=!!noticecode!!&amp;vigurl=".urlencode($this->notice->thumbnail_url) ;
517                               
518                                if ($this->notice->thumbnail_url) {
519                                        $url_image_ok=$this->notice->thumbnail_url;
520                                        $title_image_ok="";
521                                } else {
522                                        $url_image_ok = str_replace("!!noticecode!!", $code_chiffre, $url_image) ;
523                                        $title_image_ok = htmlentities($opac_book_pics_msg, ENT_QUOTES, $charset);
524                                }
525                                $this->memo_image = "<img class='vignetteimg' src='".$url_image_ok."' title=\"".$title_image_ok."\" align='right' hspace='4' vspace='2' style='max-width : 140px; max-height: 200px;' >";
526                                $this->memo_url_image=$url_image_ok;
527                               
528                        } else{
529                                $this->memo_image="" ;
530                                $this->memo_url_image="";
531                        }
532                }       
533               
534                //calcul du permalink...
535                if($this->notice->niveau_biblio != "b"){
536                        $this->permalink = $opac_url_base."index.php?lvl=notice_display&id=".$this->notice_id;
537                }else {
538                        $this->permalink = $opac_url_base."index.php?lvl=bulletin_display&id=".$this->bulletin_id;
539                }               
540               
541                //Traitement des avis
542                $this->memo_avis=array();
543                $requete="SELECT id_avis,note,sujet,commentaire,DATE_FORMAT(dateajout,'".$msg['format_date']."') as ladate,empr_login,empr_nom, empr_prenom, valide
544                from avis left join empr on id_empr=num_empr where num_notice='".$res->notice_id."' and valide=1 order by avis_rank, dateajout desc";
545                $resultat = pmb_mysql_query($requete);
546                if ($resultat) {
547                        while (($avis = pmb_mysql_fetch_object($resultat))) {
548                                $avis->note_textuelle = $msg['avis_detail_note_'.$avis->note];
549                                if($charset != "utf-8") $avis->commentaire=cp1252Toiso88591($avis->commentaire);
550                                $avis->commentaire = do_bbcode($avis->commentaire);
551                                $this->memo_avis[]=$avis;
552                        }
553                }
554               
555                //Titres uniformes
556                $requete = "select * from notices_titres_uniformes where ntu_num_notice=".$res -> notice_id." order by ntu_ordre";
557                $resultat = pmb_mysql_query($requete);
558                if (pmb_mysql_num_rows($resultat)) {
559                        while(($tu=pmb_mysql_fetch_object($resultat))) {
560                                $tu_memo = new titre_uniforme($tu->ntu_num_tu);
561                                $tu_memo->parametres_perso=array();
562                               
563                                $mes_pp= new parametres_perso("tu");
564                                $mes_pp->get_values($tu->ntu_num_tu);
565                                $values = $mes_pp->values;
566                                foreach ( $values as $field_id => $vals ) {
567                                        $tu_memo->parametres_perso[$mes_pp->t_fields[$field_id]["NAME"]]["TITRE"]=$mes_pp->t_fields[$field_id]["TITRE"];
568                                        foreach ( $vals as $value ) {
569                                                $tu_memo->parametres_perso[$mes_pp->t_fields[$field_id]["NAME"]]["VALUE"][]=$mes_pp->get_formatted_output(array($value),$field_id);
570                                        }
571                                }
572                               
573                                $this->memo_tu[]=$tu_memo;
574                        }
575                }
576               
577                //statut
578                $this->memo_statut['id_notice_statut'] = $res->statut;
579                $this->memo_statut['gestion_statut_libelle'] = '';
580                $this->memo_statut['opac_statut_libelle'] = '';
581                if ($this->memo_statut['id_notice_statut']) {
582                        $requete="SELECT * FROM notice_statut WHERE id_notice_statut=".($this->memo_statut['id_notice_statut']*1);
583                        $resultat = pmb_mysql_query($requete);
584                        if ($resultat) {
585                                $statut=pmb_mysql_fetch_object($resultat);
586                                $this->memo_statut['gestion_statut_libelle'] = $statut->gestion_libelle;
587                                $this->memo_statut['opac_statut_libelle'] = $statut->opac_libelle;
588                        }
589                }
590               
591                return true;
592        }
593       
594        function get_info_editeur($id) {
595                $info=array();
596                if($id){
597                        $requete = "SELECT * FROM publishers WHERE ed_id=$id LIMIT 1 ";
598                        $result = @pmb_mysql_query($requete);
599                        if($result && pmb_mysql_num_rows($result)) {
600                                $temp = pmb_mysql_fetch_object($result);
601                                pmb_mysql_free_result($result);
602                                $id             = $temp->ed_id;
603                                $name           = $temp->ed_name;
604                                $adr1           = $temp->ed_adr1;
605                                $adr2           = $temp->ed_adr2;
606                                $cp             = $temp->ed_cp;
607                                $ville  = $temp->ed_ville;
608                                $pays           = $temp->ed_pays;
609                                $web            = $temp->ed_web;
610                                $ed_comment= $temp->ed_comment  ;
611
612                                // Determine le lieu de publication
613                                $l = '';
614                                if ($adr1)  $l = $adr1;
615                                if ($adr2)  $l = ($l=='') ? $adr2 : $l.', '.$adr2;
616                                if ($cp)    $l = ($l=='') ? $cp   : $l.', '.$cp;
617                                if ($pays)  $l = ($l=='') ? $pays : $l.', '.$pays;
618                                if ($ville) $l = ($l=='') ? $ville : $ville.' ('.$l.')';
619                                if ($l=='')       $l = '[S.l.]';
620                                       
621                                // Determine le nom de l'editeur
622                                if ($name) $n = $name; else $n = '[S.n.]';
623                                       
624                                // Constitue l'ISBD pour le coupe lieu/editeur
625                                if ($l == '[S.l.]' AND $n == '[S.n.]') $isbd_entry = '[S.l.&nbsp;: s.n.]';
626                                else $isbd_entry = $l.'&nbsp;: '.$n;
627                                $info['isbd_entry']=$isbd_entry;
628                                $info['name'] = $name;
629                                $info['place'] = $l;
630                        }
631                }       
632                return($info);
633        }
634       
635        function fetch_notices_parents(){
636                $this->notices_parents = array();
637                for($i=0 ; $i<count($this->memo_notice_mere) ; $i++){
638                        $this->notices_parents[] = new notice_info($this->memo_notice_mere[$i]);
639                }
640        }
641
642        function fetch_notices_childs(){
643                $this->notices_childs = array();
644                for($i=0 ; $i<count($this->memo_notice_fille) ; $i++){
645                        $this->notices_childs[] = new notice_info($this->memo_notice_fille[$i]);
646                }               
647        }
648       
649        function fetch_collstate() {
650
651                if (($this->niveau_biblio=='s')&&($this->niveau_hierar==1)) {
652                        global $dbh;
653                        global $opac_sur_location_activate;
654                       
655                        //Traitement des exemplaires
656                        $this->memo_collstate=array();
657                       
658                        $q = "select collstate_id, id_serial, state_collections, collstate_origine, collstate_cote, collstate_archive, collstate_lacune, collstate_note, ";
659                        $q.= "idlocation, location_libelle, ";
660                        $q.= "archempla_id, archempla_libelle, ";
661                        $q.= "archtype_id, archtype_libelle, ";
662                        $q.= "archstatut_id, archstatut_opac_libelle ";
663                        if($opac_sur_location_activate) {
664                                $q.= ", ifnull(surloc_id,0) as surloc_id, ifnull(surloc_libelle,'') as surloc_libelle ";
665                        }
666                        $q.= "from collections_state ";
667                        $q.= "join docs_location on location_id=idlocation ";
668                        if($opac_sur_location_activate) {
669                                $q.= "left join sur_location on surloc_num=surloc_id ";
670                        }
671                        $q.= "join arch_emplacement on collstate_emplacement=archempla_id ";
672                        $q.= "join arch_type on collstate_type=archtype_id ";
673                        $q.= "join arch_statut on collstate_statut=archstatut_id ";
674                        $q.= "where id_serial = '".$this->notice_id."' ";
675                        //pour l'opac
676                        //$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)":"").")";             
677                        $r = pmb_mysql_query($q, $dbh);
678                        if ($r) {
679                                while (($cs = pmb_mysql_fetch_object($r))) {
680                                        //Champs perso d'etats de collection           
681                                        $parametres_perso=array();
682                                        $pp=new parametres_perso("collstate");
683                                        if (!$pp->no_special_fields) {                 
684                                                $pp->get_values($cs->expl_id);
685                                                $values = $pp->values;
686                                                foreach ( $values as $field_id => $vals ) {
687                                                        foreach ( $vals as $value ) {                           
688                                                                $parametres_perso[$pp->t_fields[$field_id]["NAME"]]["TITRE"]=$pp->t_fields[$field_id]["TITRE"];
689                                                                $parametres_perso[$pp->t_fields[$field_id]["NAME"]]["VALUE"]=$pp->get_formatted_output(array($value),$field_id);       
690                                                        }
691                                                }                                                       
692                                        }
693                                        $cs->parametres_perso=$parametres_perso;
694                                        $this->memo_collstate[]=$cs;
695                                }
696                        }
697                }
698        }
699}
700?>
Note: See TracBrowser for help on using the repository browser.