source: pmb4.2/trunk/fuentes/pmb/admin/convert/imports/pmbxml2eadad72/export.inc.php @ 815

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

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 12.1 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: export.inc.php,v 1.8 2015-04-03 11:16:28 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9require_once("$class_path/marc_table.class.php");
10require_once("$class_path/category.class.php");
11require_once($class_path."/parametres_perso.class.php");
12
13function _export_($id,$keep_expl=0) {
14        global $charset;
15        $requete="select * from notices where notice_id=$id";
16        $resultat=pmb_mysql_query($requete);
17        $rn=pmb_mysql_fetch_object($resultat);
18       
19        $dt=$rn->typdoc;
20        $bl=$rn->niveau_biblio;
21        $hl=$rn->niveau_hierar;
22       
23       
24        $notice.="<notice>\n";
25        $notice.="  <rs>n</rs>\n";
26        $notice.="  <dt>".$dt."</dt>\n";
27        $notice.="  <bl>".$bl."</bl>\n";
28        $notice.="  <hl>".$hl."</hl>\n";
29        $notice.="  <el>1</el>\n";
30        $notice.="  <ru>i</ru>\n";
31               
32        //ISBN
33        if ($rn->code!='') {
34                $notice.="  <f c='010' ind=' '>\n";
35                $notice.="    <s c='a'>".htmlspecialchars($rn->code,ENT_QUOTES,$charset)."</s>\n";
36                $notice.="  </f>\n";
37        }
38       
39        //Langage
40        $rqttmp_lang = "select type_langue,code_langue from notices_langues where num_notice='$id' order by ordre_langue ";
41        $restmp_lang = pmb_mysql_query($rqttmp_lang);
42        if(pmb_mysql_num_rows($restmp_lang)) {
43                $ind="0 ";
44                $notice_langue_temp="";
45                while (($tmp_lang = pmb_mysql_fetch_object($restmp_lang))) {
46                        if($tmp_lang->type_langue) {
47                                $ind="1 ";
48                                $notice_langue_temp.="    <s c='c'>".htmlspecialchars($tmp_lang->code_langue,ENT_QUOTES,$charset)."</s>\n";
49                        } else {
50                                $notice_langue_temp.="    <s c='a'>".htmlspecialchars($tmp_lang->code_langue,ENT_QUOTES,$charset)."</s>\n";
51                        }
52                }
53                $notice.="  <f c='101' ind='".$ind."'>\n";
54                $notice.=$notice_langue_temp;
55                $notice.="  </f>\n";
56        } 
57       
58        //Titre
59        if ($rn->tit1!='') {
60                $notice.="  <f c='200' ind='1 '>\n";
61            $notice.="    <s c='a'>".htmlspecialchars($rn->tit1,ENT_QUOTES,$charset)."</s>\n";
62                if ($rn->tit2!='') {
63                    $notice.="    <s c='c'>".htmlspecialchars($rn->tit2,ENT_QUOTES,$charset)."</s>\n";
64                }
65                if ($rn->tit3!='') {
66                    $notice.="    <s c='d'>".htmlspecialchars($rn->tit3,ENT_QUOTES,$charset)."</s>\n";
67                }
68                if ($rn->tit4!='') {
69                    $notice.="    <s c='e'>".htmlspecialchars($rn->tit4,ENT_QUOTES,$charset)."</s>\n";
70                }
71                $notice.="  </f>\n";
72        }
73       
74        //Mention d'édition
75        if ($rn->mention_edition) {
76                $notice.="  <f c='205' ind='  '>\n";
77                $notice.="    <s c='a'>".htmlspecialchars($rn->mention_edition,ENT_QUOTES,$charset)."</s>\n";
78                $notice.="  </f>\n";
79        }
80
81        //Editeurs
82        if ($rn->ed1_id) {
83            $requete="select * from publishers where ed_id=".$rn->ed1_id;
84                $resultat=pmb_mysql_query($requete);
85                $red=pmb_mysql_fetch_object($resultat);
86                $notice.="  <f c='210' ind='  '>\n";
87                $notice.="    <s c='c'>".htmlspecialchars($red->ed_name,ENT_QUOTES,$charset)."</s>\n";
88                if ($red->ed_ville!='') $notice.="    <s c='a'>".htmlspecialchars($red->ed_ville,ENT_QUOTES,$charset)."</s>\n";
89                if ($rn->year!='') $notice.="    <s c='d'>".htmlspecialchars($rn->year,ENT_QUOTES,$charset)."</s>\n";
90                $notice.="  </f>\n";
91        }
92        if ($rn->ed2_id) {
93            $requete="select * from publishers where ed_id=".$rn->ed2_id;
94                $resultat=pmb_mysql_query($requete);
95                $red=pmb_mysql_fetch_object($resultat);
96                $notice.="  <f c='210' ind='  '>\n";
97                $notice.="    <s c='c'>".htmlspecialchars($red->ed_name,ENT_QUOTES,$charset)."</s>\n";
98                if ($red->ed_ville!='') $notice.="    <s c='a'>".htmlspecialchars($red->ed_ville,ENT_QUOTES,$charset)."</s>\n";
99                if ($rn->year!='') $notice.="    <s c='d'>".htmlspecialchars($rn->year,ENT_QUOTES,$charset)."</s>\n";
100                $notice.="  </f>\n";
101        }
102               
103        //Collation
104        if ($rn->npages || $rn->ill || $rn->size || $rn->accomp) {
105            $notice.="  <f c='215' ind='  '>\n";
106            if ($rn->npages) $notice.="    <s c='a'>".htmlspecialchars($rn->npages,ENT_QUOTES,$charset)."</s>\n";
107                if ($rn->ill)    $notice.="    <s c='c'>".htmlspecialchars($rn->ill,ENT_QUOTES,$charset)."</s>\n";
108                if ($rn->size)   $notice.="    <s c='d'>".htmlspecialchars($rn->size,ENT_QUOTES,$charset)."</s>\n";
109                if ($rn->accomp) $notice.="    <s c='e'>".htmlspecialchars($rn->accomp,ENT_QUOTES,$charset)."</s>\n";
110                $notice.="  </f>\n";
111        }
112       
113        //Collection
114        if ($rn->coll_id) {
115                $requete="select * from collections where collection_id=".$rn->coll_id;
116                $resultat=pmb_mysql_query($requete);
117                if (($col = pmb_mysql_fetch_object($resultat))) {
118                        $notice.="  <f c='225' ind='2 '>\n";
119                        $notice.="    <s c='a'>".htmlspecialchars($col->collection_name,ENT_QUOTES,$charset)."</s>\n";
120                        if ($rn->nocoll!='') $notice.="    <s c='v'>".htmlspecialchars($rn->nocoll,ENT_QUOTES,$charset)."</s>\n";
121                        if ($col->collection_issn!='') $notice.="    <s c='x'>".htmlspecialchars($col->collection_issn,ENT_QUOTES,$charset)."</s>\n";   
122                }
123
124                //sous-collection
125                if ($rn->subcoll_id){
126                        $requete="select * from sub_collections where sub_coll_id=".$rn->subcoll_id;
127                        $resultat=pmb_mysql_query($requete);               
128                        if (($subcol = pmb_mysql_fetch_object($resultat))) {
129                                $notice.="    <s c='i'>".htmlspecialchars($subcol->sub_coll_name,ENT_QUOTES,$charset)."</s>\n";
130                        }
131                }
132                $notice.="  </f>\n";   
133        }
134       
135        //Notes
136        //Générale
137        if ($rn->n_gen) {
138            $notice.="  <f c='300' ind='  '>\n";
139                $notice.="    <s c='a'>".htmlspecialchars($rn->n_gen,ENT_QUOTES,$charset)."</s>\n";
140                $notice.="  </f>\n";
141        }
142        //de contenu
143        if ($rn->n_contenu) {
144            $notice.="  <f c='327' ind='  '>\n";
145                $notice.="    <s c='a'>".htmlspecialchars($rn->n_contenu,ENT_QUOTES,$charset)."</s>\n";
146                $notice.="  </f>\n";
147        }
148        //Résumé
149        if ($rn->n_resume) {
150            $notice.="  <f c='330' ind='  '>\n";
151                $notice.="    <s c='a'>".htmlspecialchars($rn->n_resume,ENT_QUOTES,$charset)."</s>\n";
152                $notice.="  </f>\n";
153        }
154
155        //Titre de série
156        $serie="";
157        if ($rn->tparent_id!=0 || $rn->tnvol!='') {
158                $requete="select serie_name from series where serie_id=".$rn->tparent_id;
159                $resultat=pmb_mysql_query($requete);
160                if (pmb_mysql_num_rows($resultat)) $serie=pmb_mysql_result($resultat,0,0);
161                $notice.="  <f c='461' ind=' 0'>\n";
162                if ($serie!='') $notice.="    <s c='t'>".htmlspecialchars($serie,ENT_QUOTES,$charset)."</s>\n";
163                if ($rn->tnvol) $notice.="    <s c='v'>".htmlspecialchars($rn->tnvol,ENT_QUOTES,$charset)."</s>\n";
164                $notice.="  </f>\n";
165        }
166       
167        if($bl=='a') {
168                //liens vers les périodiques et bulletins pour les notices d'article
169                $req_link = "SELECT notice_id, tit1, code ";
170                $req_link.= "bulletin_id, bulletin_numero, date_date, mention_date, bulletin_titre, bulletin_numero ";
171                $req_link.= "from analysis,bulletins,notices WHERE analysis_notice=".$id." and bulletin_id=analysis_bulletin and bulletin_notice=notice_id ";
172                $result_link=pmb_mysql_query($req_link);
173                if (pmb_mysql_num_rows($result_link)) { 
174                        $row=pmb_mysql_fetch_object($result_link);
175                        $notice.="  <f c='461' ind='  '>\n";
176                        $notice.="    <s c='t'>".htmlspecialchars($row->tit1,ENT_QUOTES,$charset)."</s>\n";
177                        $notice.="    <s c='9'>lnk:perio</s>\n";
178                        $notice.="  </f>\n";
179                        $notice.="  <f c='463' ind='  '>\n";
180                        $notice.="    <s c='d'>".htmlspecialchars(formatdate($row->date_date),ENT_QUOTES,$charset)."</s>\n";
181                        if($row->mention_date) $notice.="    <s c='e'>".htmlspecialchars($row->mention_date,ENT_QUOTES,$charset)."</s>\n";
182                        $notice.="    <s c='v'>".htmlspecialchars($row->bulletin_numero,ENT_QUOTES,$charset)."</s>\n";
183                        if($row->bulletin_titre!='') $notice.="    <s c='t'>".htmlspecialchars($row->bulletin_titre,ENT_QUOTES,$charset)."</s>\n";
184                        $notice.="    <s c='9'>lnk:bull</s>\n";
185                        $notice.="  </f>\n";
186                }                                       
187         }
188
189        //Descripteurs
190        $requete="SELECT libelle_categorie FROM categories, notices_categories WHERE notcateg_notice=".$id." and categories.num_noeud = notices_categories.num_noeud ORDER BY ordre_categorie";
191        $resultat=pmb_mysql_query($requete);
192        if (pmb_mysql_num_rows($resultat)) {
193                while (($row=pmb_mysql_fetch_object($resultat))) {
194                        $notice.="  <f c='606' ind=' 1'>\n";
195                        $notice.="    <s c='a'>".htmlspecialchars($row->libelle_categorie,ENT_QUOTES,$charset)."</s>\n";
196                        $notice.="  </f>\n";
197                }
198        }
199
200        //Auteurs                       
201        //Recherche des auteurs;
202        $requete = "select author_type, author_name, author_rejete, author_date, responsability_fonction, responsability_type
203        ,author_subdivision, author_lieu,author_ville, author_pays,author_numero,author_web
204        from authors, responsability where responsability_notice=".$id." and responsability_author=author_id";
205        $resultat = pmb_mysql_query($requete);
206
207        while (($auth=pmb_mysql_fetch_object($resultat))) {                             
208                //Si c'est un 70 (individuel) alors on l'exporte
209                if ($auth->author_type == "70") {
210                        // Personne physique
211                        $notice.="  <f c='".$auth->author_type.$auth->responsability_type."' ind=' 1'>\n";
212                        $notice.="    <s c='a'>".htmlspecialchars($auth->author_name,ENT_QUOTES,$charset)."</s>\n";
213                        if ($auth->author_rejete!='') $notice.="    <s c='b'>".htmlspecialchars($auth->author_rejete,ENT_QUOTES,$charset)."</s>\n";
214                        if ($auth->responsability_fonction!='') $notice.="    <s c='4'>".$auth->responsability_fonction."</s>\n";
215                        if ($auth->author_date!="") $notice.="    <s c='f'>".htmlspecialchars($auth->author_date,ENT_QUOTES,$charset)."</s>\n";
216                        if ($auth->author_web!='') $notice.="    <s c='N'>".htmlspecialchars($auth->author_web,ENT_QUOTES,$charset)."</s>\n";
217                        $notice.="  </f>\n";
218                } elseif (($auth->author_type == "71") || ($auth->author_type == "72")) {
219                        //Collectivité
220                        $notice.="  <f c='".$auth->author_type.$auth->responsability_type;
221                        if ($auth->author_type == "71") {
222                                $notice.="' ind='02'>\n";
223                        } elseif ($auth->author_type == "72") {
224                                $notice.="' ind='12'>\n";
225                        }
226                        $notice.="    <s c='a'>".htmlspecialchars($auth->author_name,ENT_QUOTES,$charset)."</s>\n";
227                        if ($auth->author_subdivision!='') $notice.="    <s c='b'>".htmlspecialchars($auth->author_subdivision,ENT_QUOTES,$charset)."</s>\n";
228                        if ($auth->author_rejete!='') $notice.="    <s c='g'>".htmlspecialchars($auth->author_rejete,ENT_QUOTES,$charset)."</s>\n";
229                        if ($auth->author_numero!='') $notice.="    <s c=d'>".htmlspecialchars($auth->author_numero,ENT_QUOTES,$charset)."</s>\n";
230                        if ($auth->responsability_fonction!='') $notice.="    <s c='4'>".$auth->responsability_fonction."</s>\n";
231                        if ($auth->author_date!="") $notice.="    <s c='f'>".htmlspecialchars($auth->author_date,ENT_QUOTES,$charset)."</s>\n";
232                        $lieu=$auth->author_lieu;
233                        if($auth->author_ville) {
234                                if($lieu) $lieu.="; ";
235                                $lieu.=$auth->author_ville;
236                        }
237                        if($auth->author_pays) {
238                                if($lieu) $lieu.="; ";
239                                $lieu.=$auth->author_pays;
240                        }                                       
241                        if ($lieu!='') $notice.="    <s c='e'>".htmlspecialchars($lieu,ENT_QUOTES,$charset)."</s>\n";
242                        if ($auth->author_lieu!='') $notice.="    <s c='K'>".htmlspecialchars($auth->author_lieu,ENT_QUOTES,$charset)."</s>\n";
243                        if ($auth->author_ville!='') $notice.="    <s c='L'>".htmlspecialchars($auth->author_ville,ENT_QUOTES,$charset)."</s>\n";
244                        if ($auth->author_pays!='') $notice.="    <s c='M'>".htmlspecialchars($auth->author_pays,ENT_QUOTES,$charset)."</s>\n";
245                        if ($auth->author_web!='') $notice.="    <s c='N'>".htmlspecialchars($auth->author_web,ENT_QUOTES,$charset)."</s>\n";
246                        $notice.="  </f>\n";
247                }                                       
248        }
249               
250        //URL
251        if ($rn->lien!='') {
252            $notice.="  <f c='856'>\n";
253                $notice.="    <s c='u'>".htmlspecialchars($rn->lien,ENT_QUOTES,$charset)."</s>\n";
254                if ($rn->eformat!='') $notice.="    <s c='q'>".htmlspecialchars($rn->eformat,ENT_QUOTES,$charset)."</s>\n";
255                $notice.="  </f>\n";
256        }
257       
258        //Champs perso de notice traite par la table notice_custom
259        $mes_pp= new parametres_perso("notices");
260        $mes_pp->get_values($id);
261        $values = $mes_pp->values;
262        foreach ( $values as $field_id => $vals ) {
263                if($mes_pp->t_fields[$field_id]["EXPORT"]) { //champ exportable
264                        foreach ( $vals as $value ) {
265                                if ($value) {
266                                        $notice.="  <f c='900' ind='  '>\n";
267                                        $notice.="    <s c='a'>".htmlspecialchars($mes_pp->get_formatted_output(array($value),$field_id),ENT_QUOTES,$charset)."</s>\n";
268                                        $notice.="    <s c='l'>".htmlspecialchars($mes_pp->t_fields[$field_id]["TITRE"],ENT_QUOTES,$charset)."</s>\n";
269                                        $notice.="    <s c='n'>".htmlspecialchars($mes_pp->t_fields[$field_id]["NAME"],ENT_QUOTES,$charset)."</s>\n";
270                                        $notice.="  </f>\n";;
271                                }
272                        } 
273                } 
274        }
275       
276        $notice.="</notice>\n";
277        return $notice;
278}
279
280?>
Note: See TracBrowser for help on using the repository browser.