source: pmb4.2/trunk/fuentes/pmb/admin/convert/imports/endnote2pmbxml/endnote2pmbxml.inc.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: 10.4 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: endnote2pmbxml.inc.php,v 1.5 2010-03-25 15:19:24 kantin Exp $
6
7require_once("$class_path/marc_table.class.php");
8require_once("$include_path/isbn.inc.php");
9
10function organize_line($tab_line){
11        $res = array();
12       
13        for($i=0;$i<count($tab_line);$i++){
14                if(preg_match("/(%[A-Z0-9@+]{1}) (.*)/",$tab_line[$i],$matches)){
15                        $champ = $matches[1];
16                        if($res[$champ]) {
17                                $res[$champ] = $res[$champ]."###".trim($matches[2]);           
18                        } else $res[$champ] = trim($matches[2]);
19                } else {
20                        $res[$champ] = $res[$champ]." ".trim($tab_line[$i]);
21                }
22        }       
23        return $res;
24}
25
26function convert_endnote($notice, $s, $islast, $isfirst, $param_path) {
27        global $cols;
28        global $ty;
29        global $intitules;
30        global $base_path,$origine;
31        global $tab_functions;
32        global $lot;
33        //global $charset;
34       
35        if (!$tab_functions) $tab_functions=new marc_list('function');
36        $fields=explode("\n",$notice);
37        $error="";
38        if($fields)
39                $data="<notice>\n";
40        $lignes = organize_line($fields);
41        foreach($lignes as $champ=>$value) {           
42                switch($champ){                                         
43                        case '%T':
44                                //Titre principal
45                                $titre = $value;                               
46                        break;
47                        case '%B':
48                                //Autre info sur titre
49                                $titre_other = $value;
50                        break;
51                        case '%Q':
52                                //Autre info sur titre
53                                $titre_parallel = $value;
54                        break;
55                        case '%C':
56                                //Editeur
57                                $editeur_ville = $value;
58                        break;
59                        case '%Y':
60                        case '%A':
61                                //Autres auteurs
62                                $autres_auteurs = $value;
63                        break;
64                        case '%E':
65                                //Auteur secondaire
66                                $auteur_secondaire = $value;
67                        break;                 
68                        case '%@':
69                                //ISBN/ISSN
70                                $code = $value;
71                                if(isISBN($code)){
72                                        $infos_isbn=$code;
73                                } elseif(isISSN($code)){
74                                        $infos_issn=$code;
75                                } else $error = "wrong ISBN/ISSN \n";
76                        break;
77                        case '%U':
78                                //URL
79                                $url = $value;
80                        break;
81                        case '%D':
82                                //Date de publication (YYYY/MM/DD)
83                                $dates = explode("/",$value);
84                                if($dates[0]) $year = $dates[0];
85                                if($dates[1]) $month = $dates[1];
86                                if($dates[2]) $day = $dates[2];
87                                $publication_date = $year;
88                                if($year && $month && $day){
89                                        $date_sql = str_replace("/","-",$value);
90                                        $mention_date = $value;
91                                } else if($year && $month && !$day){
92                                        $date_sql = $year."-".$month."-01";
93                                        $mention_date = $year."/".$month;
94                                } else if($year && !$month && !$day){
95                                        $date_sql = $year."-01-01";
96                                        $mention_date = $year;
97                                }                       
98                        break;
99                        case '%0':
100                               
101                                /*switch($value){
102                                        case 'Book':
103                                        case 'Edited Book':
104                                        case 'Electronic Book':
105                                                $subtype='Book';
106                                        break;
107                                        case 'Computer Program':
108                                                $subtype='Computing Program';
109                                        break;
110                                        case 'Conference Proceedings':
111                                        case 'Conference Paper':       
112                                                $subtype='Conference Proceedings';
113                                        break;
114                                        case 'Unpublished Work':
115                                                $subtype='Preprint';
116                                        break;
117                                        case 'Online Multimedia':
118                                                $subtype='Interactive Multimedia';
119                                        break;
120                                        case 'Journal Article':
121                                        case 'Magazine Article':       
122                                        case 'Electronic Article':
123                                        case 'Newspaper Article':
124                                                $subtype='Article';
125                                        break;
126                                        case 'Map':
127                                                $subtype='Map';
128                                        break;
129                                        case 'Report':
130                                                $subtype='Report';
131                                        break;
132                                        case 'Online Database':
133                                                $subtype='Database';
134                                        break;
135                                        case 'Thesis':
136                                                $subtype='Thesis';
137                                        break;
138                                        default :
139                                                $subtype='Article';
140                                        break;
141                                }       */     
142                               
143                                //Document type
144                                $subtype=$value;               
145                        break;
146                        case '%Z':
147                                //Notes
148                                $notes = $value;
149                        break; 
150                        case '%P':
151                                //End page
152                                $page = $value;
153                        break;
154                        case '%K':
155                                //Mots cles
156                                $keywords = $value;     
157                        break;
158                        case '%+':
159                                //Collectivite
160                                $collectivite = $value;
161                        break;
162                        case '%N':
163                                //Numéro de bulletin
164                                $bull_num = $value;
165                                break;
166                        case '%V':
167                                //Volume
168                                $bull_vol = $value;
169                                break;
170                        case '%X':
171                                //Résumé
172                                $resume = $value;
173                                break;
174                        case '%J':
175                                //Titre du pério
176                                $perio_title = $value;
177                                break;
178                        case '%G':
179                                $langue = $value;
180                                break;
181                        case '%M':
182                                $id_endnote = $value;
183                                break;
184                        case '%I':
185                                $publisher = $value;
186                                break; 
187                        default:
188                                $data .= '';
189                        break;
190                }               
191        }
192       
193        //Construction du fichier
194       
195        $data.= "<rs>n</rs>
196                  <dt>a</dt>
197                  <bl>a</bl>
198                  <hl>2</hl>
199                  <el>1</el>
200                  <ru>i</ru>\n";       
201       
202        $data.="<f c='001' ind='  '>\n";
203        $data.=htmlspecialchars($id_endnote,ENT_QUOTES,$charset);
204        $data.="</f>\n";
205       
206        if($infos_isbn){
207                $data.="<f c='010' ind='  '>\n";                               
208                $data.="        <s c='a'>".htmlspecialchars($infos_isbn,ENT_QUOTES,$charset)."</s>\n";                 
209                $data.="</f>\n";
210        }
211        if($infos_issn){
212                $data.="<f c='011' ind='  '>\n";                               
213                $data.="        <s c='a'>".htmlspecialchars($infos_issn,ENT_QUOTES,$charset)."</s>\n";                 
214                $data.="</f>\n";
215        }
216        if($langue){
217                $data.="<f c='101' ind='  '>\n";                               
218                $data.="        <s c='a'>".htmlspecialchars($langue,ENT_QUOTES,$charset)."</s>\n";                     
219                $data.="</f>\n";
220        }       
221        if($titre){
222                $data.="<f c='200' ind='  '>\n";                                                               
223                $data.="        <s c='a'>".htmlspecialchars($titre,ENT_QUOTES,$charset)."</s>";
224                if($titre_other) $data.="       <s c='e'>".htmlspecialchars($titre_other,ENT_QUOTES,$charset)."</s>";
225                if($titre_parallel) $data.="    <s c='d'>".htmlspecialchars($titre_parallel,ENT_QUOTES,$charset)."</s>";
226                $data.="</f>\n";
227        }
228        if($publisher){
229                $data.="<f c='210' ind='  '>\n";                               
230                $data.="        <s c='c'>".htmlspecialchars($publisher,ENT_QUOTES,$charset)."</s>\n";   
231                $data.="</f>\n";
232        }       
233        if($page){
234                $data.="<f c='215' ind='  '>\n";                               
235                if($page) $data.="      <s c='a'>".htmlspecialchars($page,ENT_QUOTES,$charset)."</s>\n";                       
236                $data.="</f>\n";
237        }       
238        if($notes){
239                $note = explode('###',$notes);
240                $doi ="";
241                $pubmedid = "";
242                for($i=0;$i<count($note);$i++){
243                        if(strpos($note[$i],"doi:")!== false) {
244                                $doi = $note[$i];
245                        } else if (strpos($note[$i],"PubMed ID:")!== false){
246                                $pubmedid =  $note[$i];
247                        } else {                               
248                                if(strlen($note[$i]) > 9000){
249                                        $word =wordwrap($note[$i],9000,"####");
250                                        $words = explode("####",$word);
251                                        for($j=0;$j<count($words);$j++){                                               
252                                                $data.="<f c='300' ind='  '>\n";
253                                                $data.="        <s c='a'>".htmlspecialchars($words[$j],ENT_QUOTES,$charset)."</s>\n";
254                                                $data.="</f>\n";                                               
255                                        }
256                                } else {
257                                        $data.="<f c='300' ind='  '>\n";
258                                        $data.="        <s c='a'>".htmlspecialchars($note[$i],ENT_QUOTES,$charset)."</s>\n";
259                                        $data.="</f>\n";
260                                }
261                        }
262                }       
263        }
264        if($resume){
265                $data.="<f c='330' ind='  '>\n";                               
266                $data.="        <s c='a'>".htmlspecialchars($resume,ENT_QUOTES,$charset)."</s>\n";                     
267                $data.="</f>\n";
268        }               
269        if($perio_title){
270                $data.="<f c='461' ind='  '>\n";                               
271                $data.="        <s c='t'>".htmlspecialchars($perio_title,ENT_QUOTES,$charset)."</s>\n"; 
272                if($infos_issn) $data.="        <s c='x'>".htmlspecialchars($infos_issn,ENT_QUOTES,$charset)."</s>\n"; 
273                $data.="        <s c='9'>lnk:perio</s>\n";             
274                $data.="</f>\n";
275        }       
276        if($bull_num || $bull_vol){
277                $data.="<f c='463' ind='  '>\n";                                                               
278                if($bull_num && $bull_vol) 
279                        $data.="        <s c='v'>"."vol. ".htmlspecialchars($bull_vol,ENT_QUOTES,$charset).", no. ".htmlspecialchars($bull_num,ENT_QUOTES,$charset)."</s>\n";
280                else if($bull_num && !$bull_vol)
281                        $data.="        <s c='v'>no. ".htmlspecialchars($bull_num,ENT_QUOTES,$charset)."</s>\n";
282                else if(!$bull_num && $bull_vol)
283                        $data.="        <s c='v'>vol. ".htmlspecialchars($bull_vol,ENT_QUOTES,$charset)."</s>\n";
284                if($date_sql)
285                        $data.="        <s c='d'>".htmlspecialchars($date_sql,ENT_QUOTES,$charset)."</s>\n";
286                if($mention_date)
287                        $data.="        <s c='e'>".htmlspecialchars($mention_date,ENT_QUOTES,$charset)."</s>\n";
288                $data.="        <s c='9'>lnk:bull</s>\n";               
289                $data.="</f>\n";
290        }
291        if($keywords){
292                $mots = explode('###',$keywords);
293                for($i=0;$i<count($mots);$i++){
294                        $data.="<f c='610' ind='0 '>\n";
295                        $data.="        <s c='a'>".htmlspecialchars($mots[$i],ENT_QUOTES,$charset)."</s>\n";
296                        $data.="</f>\n";
297                }
298        }
299       
300        if($collectivite){
301                $collectivites = explode("###",$collectivite);
302                if((count($collectivites) == 1)) {
303                        $coll_elt = explode(", ",$collectivites[0],3);
304                        $coll_infos = explode(", ",$coll_elt[2],2);
305                        $coll_nom = $coll_infos[0];
306                        $coll_pays = trim(substr($coll_infos[1],(strrpos($coll_infos[1],", ")+1)));
307                        $coll_lieu = trim(substr($coll_infos[1],0,-(strlen($coll_pays)+2)));
308                        $data.="<f c='710' ind='0 '>\n";                                                               
309                        $data.="        <s c='a'>".htmlspecialchars($coll_nom,ENT_QUOTES,$charset)."</s>\n";
310                        $data.="        <s c='e'>".htmlspecialchars($coll_lieu,ENT_QUOTES,$charset)."</s>\n";
311                        $data.="        <s c='m'>".htmlspecialchars($coll_pays,ENT_QUOTES,$charset)."</s>\n";
312                        $data.="</f>\n";
313                } else {
314                        for($i=0;$i<count($collectivites);$i++){
315                                $coll_elt = explode(", ",$collectivites[$i],3);
316                                $coll_infos = explode(", ",$coll_elt[2],2);
317                                $coll_nom = $coll_infos[0];
318                                $coll_pays = trim(substr($coll_infos[1],(strrpos($coll_infos[1],", ")+1)));
319                                $coll_lieu = trim(substr($coll_infos[1],0,-(strlen($coll_pays)+2)));
320                                $data.="<f c='710' ind='0 '>\n";                                                               
321                                $data.="        <s c='a'>".htmlspecialchars($coll_nom,ENT_QUOTES,$charset)."</s>\n";
322                                $data.="        <s c='e'>".htmlspecialchars($coll_lieu,ENT_QUOTES,$charset)."</s>\n";
323                                $data.="        <s c='m'>".htmlspecialchars($coll_pays,ENT_QUOTES,$charset)."</s>\n";
324                                $data.="</f>\n";
325                        }
326                } 
327        }
328        if($autres_auteurs){
329                $others = explode("###",$autres_auteurs);
330                for($i=0;$i<count($others);$i++){
331                        $aut = explode(", ",$others[$i]);
332                        $data.="<f c='701' ind='  '>\n";                                                               
333                        $data.="        <s c='a'>".htmlspecialchars($aut[0],ENT_QUOTES,$charset)."</s>\n";
334                        $data.="        <s c='b'>".htmlspecialchars($aut[1],ENT_QUOTES,$charset)."</s>\n";
335                        if($aut[2]) $data.="    <s c='c'>".htmlspecialchars($aut[2],ENT_QUOTES,$charset)."</s>\n";
336                        $data.="</f>\n";
337                }
338        }
339        if($auteur_secondaire){
340                $secs = explode("###",$auteur_secondaire);
341                for($i=0;$i<count($secs);$i++){
342                        $aut = explode(", ",$secs);
343                        $data.="<f c='702' ind='  '>\n";                                                               
344                        $data.="        <s c='a'>".htmlspecialchars($aut[0],ENT_QUOTES,$charset)."</s>\n";
345                        $data.="        <s c='b'>".htmlspecialchars($aut[1],ENT_QUOTES,$charset)."</s>\n";
346                        if($aut[2]) $data.="    <s c='c'>".htmlspecialchars($aut[2],ENT_QUOTES,$charset)."</s>\n";
347                        $data.="</f>\n";
348                }
349        }
350       
351        if($url){
352                $data.="<f c='856' ind='  '>\n";
353                $data.="        <s c='u'>".htmlspecialchars($url,ENT_QUOTES,$charset)."</s>";
354                $data.="</f>\n";
355        }       
356        if($subtype){
357                $data.="<f c='900' ind='  '>\n";
358                $data.="        <s c='a'>".htmlspecialchars($subtype,ENT_QUOTES,$charset)."</s>\n";
359                $data.="        <s c='l'>Sub-Type</s>\n";
360                $data.="        <s c='n'>subtype</s>\n";
361                $data.="</f>\n";
362        }
363        $data .= "</notice>\n";
364
365        if (!$error) $r['VALID'] = true; else $r['VALID']=false;
366        $r['ERROR'] = $error;
367        $r['DATA'] = $data;
368        return $r;
369}
370?>
Note: See TracBrowser for help on using the repository browser.