function convert_endnote($notice, $s, $islast, $isfirst, $param_path) { global $cols; global $ty; global $intitules; global $base_path, $origine; global $tab_functions; global $lot; //global $charset; if (!$tab_functions) { $tab_functions = new marc_list('function'); } $fields = explode("\n", $notice); $error = ""; if ($fields) { $data = "<notice>\n"; } $lignes = organize_line($fields); foreach ($lignes as $champ => $value) { switch ($champ) { case '%T': //Titre principal $titre = $value; break; case '%B': //Autre info sur titre $titre_other = $value; break; case '%Q': //Autre info sur titre $titre_parallel = $value; break; case '%C': //Editeur $editeur_ville = $value; break; case '%Y': case '%A': //Autres auteurs $autres_auteurs = $value; break; case '%E': //Auteur secondaire $auteur_secondaire = $value; break; case '%@': //ISBN/ISSN $code = $value; if (isISBN($code)) { $infos_isbn = $code; } elseif (isISSN($code)) { $infos_issn = $code; } else { $error = "wrong ISBN/ISSN \n"; } break; case '%U': //URL $url = $value; break; case '%D': //Date de publication (YYYY/MM/DD) $dates = explode("/", $value); if ($dates[0]) { $year = $dates[0]; } if ($dates[1]) { $month = $dates[1]; } if ($dates[2]) { $day = $dates[2]; } $publication_date = $year; if ($year && $month && $day) { $date_sql = str_replace("/", "-", $value); $mention_date = $value; } else { if ($year && $month && !$day) { $date_sql = $year . "-" . $month . "-01"; $mention_date = $year . "/" . $month; } else { if ($year && !$month && !$day) { $date_sql = $year . "-01-01"; $mention_date = $year; } } } break; case '%0': /*switch($value){ case 'Book': case 'Edited Book': case 'Electronic Book': $subtype='Book'; break; case 'Computer Program': $subtype='Computing Program'; break; case 'Conference Proceedings': case 'Conference Paper': $subtype='Conference Proceedings'; break; case 'Unpublished Work': $subtype='Preprint'; break; case 'Online Multimedia': $subtype='Interactive Multimedia'; break; case 'Journal Article': case 'Magazine Article': case 'Electronic Article': case 'Newspaper Article': $subtype='Article'; break; case 'Map': $subtype='Map'; break; case 'Report': $subtype='Report'; break; case 'Online Database': $subtype='Database'; break; case 'Thesis': $subtype='Thesis'; break; default : $subtype='Article'; break; } */ //Document type $subtype = $value; break; case '%Z': //Notes $notes = $value; break; case '%P': //End page $page = $value; break; case '%K': //Mots cles $keywords = $value; break; case '%+': //Collectivite $collectivite = $value; break; case '%N': //Numéro de bulletin $bull_num = $value; break; case '%V': //Volume $bull_vol = $value; break; case '%X': //Résumé $resume = $value; break; case '%J': //Titre du pério $perio_title = $value; break; case '%G': $langue = $value; break; case '%M': $id_endnote = $value; break; case '%I': $publisher = $value; break; default: $data .= ''; break; } } //Construction du fichier $data .= "<rs>n</rs>\n\t\t <dt>a</dt>\n\t\t <bl>a</bl>\n\t\t <hl>2</hl>\n\t\t <el>1</el>\n\t\t <ru>i</ru>\n"; $data .= "<f c='001' ind=' '>\n"; $data .= htmlspecialchars($id_endnote, ENT_QUOTES, $charset); $data .= "</f>\n"; if ($infos_isbn) { $data .= "<f c='010' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($infos_isbn, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } if ($infos_issn) { $data .= "<f c='011' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($infos_issn, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } if ($langue) { $data .= "<f c='101' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($langue, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } if ($titre) { $data .= "<f c='200' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($titre, ENT_QUOTES, $charset) . "</s>"; if ($titre_other) { $data .= "\t<s c='e'>" . htmlspecialchars($titre_other, ENT_QUOTES, $charset) . "</s>"; } if ($titre_parallel) { $data .= "\t<s c='d'>" . htmlspecialchars($titre_parallel, ENT_QUOTES, $charset) . "</s>"; } $data .= "</f>\n"; } if ($publisher) { $data .= "<f c='210' ind=' '>\n"; $data .= "\t<s c='c'>" . htmlspecialchars($publisher, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } if ($page) { $data .= "<f c='215' ind=' '>\n"; if ($page) { $data .= "\t<s c='a'>" . htmlspecialchars($page, ENT_QUOTES, $charset) . "</s>\n"; } $data .= "</f>\n"; } if ($notes) { $note = explode('###', $notes); $doi = ""; $pubmedid = ""; for ($i = 0; $i < count($note); $i++) { if (strpos($note[$i], "doi:") !== false) { $doi = $note[$i]; } else { if (strpos($note[$i], "PubMed ID:") !== false) { $pubmedid = $note[$i]; } else { if (strlen($note[$i]) > 9000) { $word = wordwrap($note[$i], 9000, "####"); $words = explode("####", $word); for ($j = 0; $j < count($words); $j++) { $data .= "<f c='300' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($words[$j], ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } } else { $data .= "<f c='300' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($note[$i], ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } } } } } if ($resume) { $data .= "<f c='330' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($resume, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } if ($perio_title) { $data .= "<f c='461' ind=' '>\n"; $data .= "\t<s c='t'>" . htmlspecialchars($perio_title, ENT_QUOTES, $charset) . "</s>\n"; if ($infos_issn) { $data .= "\t<s c='x'>" . htmlspecialchars($infos_issn, ENT_QUOTES, $charset) . "</s>\n"; } $data .= "\t<s c='9'>lnk:perio</s>\n"; $data .= "</f>\n"; } if ($bull_num || $bull_vol) { $data .= "<f c='463' ind=' '>\n"; if ($bull_num && $bull_vol) { $data .= "\t<s c='v'>" . "vol. " . htmlspecialchars($bull_vol, ENT_QUOTES, $charset) . ", no. " . htmlspecialchars($bull_num, ENT_QUOTES, $charset) . "</s>\n"; } else { if ($bull_num && !$bull_vol) { $data .= "\t<s c='v'>no. " . htmlspecialchars($bull_num, ENT_QUOTES, $charset) . "</s>\n"; } else { if (!$bull_num && $bull_vol) { $data .= "\t<s c='v'>vol. " . htmlspecialchars($bull_vol, ENT_QUOTES, $charset) . "</s>\n"; } } } if ($date_sql) { $data .= "\t<s c='d'>" . htmlspecialchars($date_sql, ENT_QUOTES, $charset) . "</s>\n"; } if ($mention_date) { $data .= "\t<s c='e'>" . htmlspecialchars($mention_date, ENT_QUOTES, $charset) . "</s>\n"; } $data .= "\t<s c='9'>lnk:bull</s>\n"; $data .= "</f>\n"; } if ($keywords) { $mots = explode('###', $keywords); for ($i = 0; $i < count($mots); $i++) { $data .= "<f c='610' ind='0 '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($mots[$i], ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } } if ($collectivite) { $collectivites = explode("###", $collectivite); if (count($collectivites) == 1) { $coll_elt = explode(", ", $collectivites[0], 3); $coll_infos = explode(", ", $coll_elt[2], 2); $coll_nom = $coll_infos[0]; $coll_pays = trim(substr($coll_infos[1], strrpos($coll_infos[1], ", ") + 1)); $coll_lieu = trim(substr($coll_infos[1], 0, -(strlen($coll_pays) + 2))); $data .= "<f c='710' ind='0 '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($coll_nom, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='e'>" . htmlspecialchars($coll_lieu, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='m'>" . htmlspecialchars($coll_pays, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } else { for ($i = 0; $i < count($collectivites); $i++) { $coll_elt = explode(", ", $collectivites[$i], 3); $coll_infos = explode(", ", $coll_elt[2], 2); $coll_nom = $coll_infos[0]; $coll_pays = trim(substr($coll_infos[1], strrpos($coll_infos[1], ", ") + 1)); $coll_lieu = trim(substr($coll_infos[1], 0, -(strlen($coll_pays) + 2))); $data .= "<f c='710' ind='0 '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($coll_nom, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='e'>" . htmlspecialchars($coll_lieu, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='m'>" . htmlspecialchars($coll_pays, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } } } if ($autres_auteurs) { $others = explode("###", $autres_auteurs); for ($i = 0; $i < count($others); $i++) { $aut = explode(", ", $others[$i]); $data .= "<f c='701' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($aut[0], ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='b'>" . htmlspecialchars($aut[1], ENT_QUOTES, $charset) . "</s>\n"; if ($aut[2]) { $data .= "\t<s c='c'>" . htmlspecialchars($aut[2], ENT_QUOTES, $charset) . "</s>\n"; } $data .= "</f>\n"; } } if ($auteur_secondaire) { $secs = explode("###", $auteur_secondaire); for ($i = 0; $i < count($secs); $i++) { $aut = explode(", ", $secs); $data .= "<f c='702' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($aut[0], ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='b'>" . htmlspecialchars($aut[1], ENT_QUOTES, $charset) . "</s>\n"; if ($aut[2]) { $data .= "\t<s c='c'>" . htmlspecialchars($aut[2], ENT_QUOTES, $charset) . "</s>\n"; } $data .= "</f>\n"; } } if ($url) { $data .= "<f c='856' ind=' '>\n"; $data .= "\t<s c='u'>" . htmlspecialchars($url, ENT_QUOTES, $charset) . "</s>"; $data .= "</f>\n"; } if ($subtype) { $data .= "<f c='900' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($subtype, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='l'>Sub-Type</s>\n"; $data .= "\t<s c='n'>subtype</s>\n"; $data .= "</f>\n"; } $data .= "</notice>\n"; if (!$error) { $r['VALID'] = true; } else { $r['VALID'] = false; } $r['ERROR'] = $error; $r['DATA'] = $data; return $r; }
function convert_ris($notice, $s, $islast, $isfirst, $param_path) { global $cols; global $ty; global $intitules; global $base_path, $origine; global $tab_functions; global $lot; global $charset; if (mb_detect_encoding($notice) == 'UTF-8' && $charset == "iso-8859-1") { $notice = utf8_decode($notice); } if (!$tab_functions) { $tab_functions = new marc_list('function'); } $fields = explode("\n", $notice); $error = ""; if ($fields) { $data = "<notice>\n"; } $lignes = organize_line($fields); foreach ($lignes as $champ => $value) { switch ($champ) { case 'CT': case 'TI': case 'T1': //Titre principal $titre = $value; break; case 'T2': //Autre info sur titre $titre_other = $value; break; case 'PB': //Editeur $editeur_nom = $value; break; case 'CY': //Editeur $editeur_ville = $value; break; case 'AU': //Autres auteurs $autres_auteurs = $value; break; case 'A1': //Auteur principal $auteur_principal = $value; break; case 'A2': //Auteur secondaire $auteur_secondaire = $value; break; case 'SN': //ISBN/ISSN $code = trim($value); $pos = strpos($code, "("); if ($pos !== false) { $code = substr($code, 0, $pos); } if (isISBN($code)) { $infos_isbn = $code; } elseif (isISSN($code)) { $infos_issn = $code; } else { $error = "wrong ISBN/ISSN \n"; } break; case 'UR': //URL $url = $value; break; case 'PY': //Date de publication (YYYY/MM/DD) $dates = explode("/", $value); if ($dates[0]) { $year = $dates[0]; } if ($dates[1]) { $month = $dates[1]; } if ($dates[2]) { $day = $dates[2]; } $publication_date = $year; if ($year && $month && $day) { $date_sql = str_replace("/", "-", $value); $mention_date = $value; } else { if ($year && $month && !$day) { $date_sql = $year . "-" . $month . "-01"; $mention_date = $year . "/" . $month; } else { if ($year && !$month && !$day) { $date_sql = $year . "-01-01"; $mention_date = $year; } } } break; case 'TY': //Document type switch ($value) { case 'ABST': $subtype = 'Abstract'; break; case 'BOOK': $subtype = 'Book'; break; case 'CHAP': $subtype = 'Chapter'; break; case 'COMP': $subtype = 'Computing Program'; break; case 'CONF': $subtype = 'Conference Proceedings'; break; case 'INPR': $subtype = 'Preprint'; break; case 'NEWS': case 'JFULL': $subtype = 'Journal'; break; case 'MGZN': case 'JOUR': $subtype = 'Article'; break; case 'MAP': $subtype = 'Map'; break; case 'UNPB': case 'RPRT': $subtype = 'Report'; break; case 'SLIDE': $subtype = 'Presentation'; break; case 'THES': $subtype = 'Thesis'; break; default: $subtype = 'Article'; break; } break; case 'N1': //Notes $notes = $value; break; case 'SP': //Start page $start_page = $value; break; case 'EP': //End page $end_page = $value; break; case 'KW': //Mots cles $keywords = $value; break; case 'AD': //Collectivite $collectivite = $value; break; case 'IS': //Numéro de bulletin $bull_num = $value; break; case 'VL': //Volume $bull_vol = $value; break; case 'AB': //Résumé $resume = $value; break; case 'JF': //Titre du pério $perio_title = $value; break; default: $data .= ''; break; } } //Construction du fichier $data .= "<rs>n</rs>\n\t\t <dt>a</dt>\n\t\t <bl>a</bl>\n\t\t <hl>2</hl>\n\t\t <el>1</el>\n\t\t <ru>i</ru>\n"; //Soyons sûr que le microtime ne sera plus le même.. usleep(1); $data .= "<f c='001' ind=' '>\n"; $data .= htmlspecialchars(microtime(), ENT_QUOTES, $charset); $data .= "</f>\n"; if ($titre) { $data .= "<f c='200' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($titre, ENT_QUOTES, $charset) . "</s>"; if ($titre_other) { $data .= "\t<s c='e'>" . htmlspecialchars($titre_other, ENT_QUOTES, $charset) . "</s>"; } $data .= "</f>\n"; } if ($editeur_nom || $publication_date || $editeur_ville) { $data .= "<f c='210' ind=' '>\n"; if ($editeur_ville) { $data .= "\t<s c='a'>" . htmlspecialchars($editeur_ville, ENT_QUOTES, $charset) . "</s>\n"; } if ($editeur_nom) { $data .= "\t<s c='c'>" . htmlspecialchars($editeur_nom, ENT_QUOTES, $charset) . "</s>\n"; } if ($publication_date) { $data .= "\t<s c='d'>" . htmlspecialchars($publication_date, ENT_QUOTES, $charset) . "</s>"; } $data .= "</f>\n"; } if ($start_page || $end_page) { $data .= "<f c='215' ind=' '>\n"; if ($start_page && $end_page) { $data .= "\t<s c='a'>" . htmlspecialchars($start_page . "-" . $end_page, ENT_QUOTES, $charset) . "</s>\n"; } if (!$start_page && $end_page) { $data .= "\t<s c='a'>" . htmlspecialchars($end_page, ENT_QUOTES, $charset) . "</s>\n"; } if ($start_page && !$end_page) { $data .= "\t<s c='a'>" . htmlspecialchars($start_page, ENT_QUOTES, $charset) . "</s>\n"; } $data .= "</f>\n"; } if ($notes) { $note = explode('###', $notes); $doi = ""; $pubmedid = ""; for ($i = 0; $i < count($note); $i++) { if (strpos($note[$i], "doi:") !== false) { $doi = $note[$i]; } else { if (strpos($note[$i], "PubMed ID:") !== false) { $pubmedid = $note[$i]; } else { if (strlen($note[$i]) > 9000) { $word = wordwrap($note[$i], 9000, "####"); $words = explode("####", $word); for ($j = 0; $j < count($words); $j++) { $data .= "<f c='300' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($words[$j], ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } } else { $data .= "<f c='300' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($note[$i], ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } } } } } if ($resume) { $data .= "<f c='330' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($resume, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } if ($perio_title) { $data .= "<f c='461' ind=' '>\n"; $data .= "\t<s c='t'>" . htmlspecialchars($perio_title, ENT_QUOTES, $charset) . "</s>\n"; if ($infos_issn) { $data .= "\t<s c='x'>" . htmlspecialchars($infos_issn, ENT_QUOTES, $charset) . "</s>\n"; } $data .= "\t<s c='9'>lnk:perio</s>\n"; $data .= "</f>\n"; } if ($bull_num || $bull_vol) { $data .= "<f c='463' ind=' '>\n"; if ($bull_num && $bull_vol) { $data .= "\t<s c='v'>" . "vol. " . htmlspecialchars($bull_vol, ENT_QUOTES, $charset) . ", no. " . htmlspecialchars($bull_num, ENT_QUOTES, $charset) . "</s>\n"; } else { if ($bull_num && !$bull_vol) { $data .= "\t<s c='v'>no. " . htmlspecialchars($bull_num, ENT_QUOTES, $charset) . "</s>\n"; } else { if (!$bull_num && $bull_vol) { $data .= "\t<s c='v'>vol. " . htmlspecialchars($bull_vol, ENT_QUOTES, $charset) . "</s>\n"; } } } if ($date_sql) { $data .= "\t<s c='d'>" . htmlspecialchars($date_sql, ENT_QUOTES, $charset) . "</s>\n"; } if ($mention_date) { $data .= "\t<s c='e'>" . htmlspecialchars($mention_date, ENT_QUOTES, $charset) . "</s>\n"; } $data .= "\t<s c='9'>lnk:bull</s>\n"; $data .= "</f>\n"; } if ($keywords) { $mots = explode('###', $keywords); for ($i = 0; $i < count($mots); $i++) { $data .= "<f c='610' ind='0 '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($mots[$i], ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } } if ($auteur_principal) { $aut = explode(", ", $auteur_principal); $data .= "<f c='700' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($aut[0], ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='b'>" . htmlspecialchars($aut[1], ENT_QUOTES, $charset) . "</s>\n"; if ($aut[2]) { $data .= "\t<s c='c'>" . htmlspecialchars($aut[2], ENT_QUOTES, $charset) . "</s>\n"; } $data .= "</f>\n"; } if ($collectivite) { $collectivites = explode("###", $collectivite); if (count($collectivites) == 1 && !$auteur_principal) { $coll_elt = explode(", ", $collectivites[0], 2); $coll_nom = $coll_elt[0]; $coll_pays = trim(substr($coll_elt[1], strrpos($coll_elt[1], ", ") + 1)); $coll_lieu = trim(substr($coll_elt[1], 0, -(strlen($coll_pays) + 2))); $data .= "<f c='710' ind='0 '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($coll_nom, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='e'>" . htmlspecialchars($coll_lieu, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='m'>" . htmlspecialchars($coll_pays, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } else { for ($i = 0; $i < count($collectivites); $i++) { $coll_elt = explode(", ", $collectivites[$i], 2); $coll_nom = $coll_elt[0]; $coll_pays = trim(substr($coll_elt[1], strrpos($coll_elt[1], ", ") + 1)); $coll_lieu = trim(substr($coll_elt[1], 0, -(strlen($coll_pays) + 2))); $data .= "<f c='711' ind='0 '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($coll_nom, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='e'>" . htmlspecialchars($coll_lieu, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='m'>" . htmlspecialchars($coll_pays, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } } } if ($autres_auteurs) { $others = explode("###", $autres_auteurs); for ($i = 0; $i < count($others); $i++) { $aut = explode(", ", $others[$i]); $data .= "<f c='701' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($aut[0], ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='b'>" . htmlspecialchars($aut[1], ENT_QUOTES, $charset) . "</s>\n"; if ($aut[2]) { $data .= "\t<s c='c'>" . htmlspecialchars($aut[2], ENT_QUOTES, $charset) . "</s>\n"; } $data .= "</f>\n"; } } if ($auteur_secondaire) { $secs = explode("###", $auteur_secondaire); for ($i = 0; $i < count($secs); $i++) { $aut = explode(", ", $secs); $data .= "<f c='702' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($aut[0], ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='b'>" . htmlspecialchars($aut[1], ENT_QUOTES, $charset) . "</s>\n"; if ($aut[2]) { $data .= "\t<s c='c'>" . htmlspecialchars($aut[2], ENT_QUOTES, $charset) . "</s>\n"; } $data .= "</f>\n"; } } if ($url) { $data .= "<f c='856' ind=' '>\n"; $data .= "\t<s c='u'>" . htmlspecialchars($url, ENT_QUOTES, $charset) . "</s>"; $data .= "</f>\n"; } if ($subtype) { $data .= "<f c='900' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($subtype, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='l'>Sub-Type</s>\n"; $data .= "\t<s c='n'>subtype</s>\n"; $data .= "</f>\n"; } if ($doi) { $doi = trim(str_replace("doi:", "", $doi)); if ($doi) { $data .= "<f c='900' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($doi, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='l'>DOI id</s>\n"; $data .= "\t<s c='n'>pmi_doi_identifier</s>\n"; $data .= "</f>\n"; } } if ($pubmedid) { $pubmedid = trim(str_replace("PubMed ID:", "", $pubmedid)); if ($pubmedid) { $data .= "<f c='900' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($pubmedid, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='l'>Numéro PUBMED</s>\n"; $data .= "\t<s c='n'>pmi_xref_dbase_id</s>\n"; $data .= "</f>\n"; } } $data .= "</notice>\n"; if (!$error) { $r['VALID'] = true; } else { $r['VALID'] = false; } $r['ERROR'] = $error; $r['DATA'] = $data; return $r; }
function convert_medline($notice, $s, $islast, $isfirst, $param_path) { global $cols; global $ty; global $intitules; global $base_path, $origine; global $tab_functions; global $lot; global $charset; if (!$tab_functions) { $tab_functions = new marc_list('function'); } $fields = explode("\n", $notice); $error = ""; if ($fields) { $data = "<notice>\n"; } $lignes = organize_line($fields); foreach ($lignes as $champ => $value) { switch ($champ) { case 'TI': //Titre principal $titre = $value; break; case 'PL': //Editeur $editeur = $value; break; case 'AU': //Auteur principal $auteur = explode(", ", $value); break; case 'IS': //ISBN/ISSN $code = $value; $pos = strpos($code, "("); $endcode = substr($code, $pos); $code = trim(substr($code, 0, $pos)); if (isISBN($code)) { $infos_isbn = $code . " " . $endcode; } elseif (isISSN($code)) { $infos_issn = $code . " " . $endcode; } else { $error = "wrong ISBN/ISSN \n"; } break; case 'DP': //Date de publication $date = $value; if ($date) { $date_elt = explode(' ', $date); if ($date_elt[0]) { $year = $date_elt[0]; } if ($date_elt[2]) { $day = $date_elt[2]; } if ($date_elt[1]) { $mois = $date_elt[1]; switch ($mois) { case 'Jan': $month = "01"; break; case 'Feb': $month = "02"; break; case 'Mar': $month = "03"; break; case 'Apr': $month = "04"; break; case 'May': $month = "05"; break; case 'Jun': $month = "06"; break; case 'Jul': $month = "07"; break; case 'Aug': $month = "08"; break; case 'Sep': $month = "09"; break; case 'Oct': $month = "10"; break; case 'Nov': $month = "11"; break; case 'Dec': $month = "12"; break; } } if ($year && $month && $day) { $date_sql = $year . "-" . $month . "-" . $day; } else { if ($year && $month) { $date_sql = $year . "-" . $month . "-01"; } else { if ($year) { $date_sql = $year . "-01-01"; } } } } break; case 'IP': //Numéro de bulletin $bull_num = $value; break; case 'VI': //Volume $bull_vol = $value; break; case 'AB': //Résumé $resume = $value; break; case 'JT': //Titre du pério $perio_title = $value; break; case 'LA': //Langue $langue = $value; break; case 'TT': //Titre parallele $titre_parallele = $value; break; case 'PG': //Pagination $pagination = $value; break; case 'PMID': //Pubmed ID $pubmed_id = $value; break; case 'PT': //Document Type $doc_type = $value; break; case 'AID': //DOI $ids = explode(",", $value); if (is_array($ids)) { for ($i = 0; $i < count($ids); $i++) { if (strpos($ids[$i], "[doi]") !== false) { $doi = trim(substr($ids[$i], 0, strpos($ids[$i], "[doi]"))); } } } break; case 'AD': $collectivite = $value; break; default: $data .= ''; break; } } //Construction du fichier $data .= "<rs>n</rs>\n\t\t <dt>a</dt>\n\t\t <bl>a</bl>\n\t\t <hl>2</hl>\n\t\t <el>1</el>\n\t\t <ru>i</ru>\n"; if ($pubmed_id) { $data .= "<f c='001' ind=' '>\n"; $data .= htmlspecialchars($pubmed_id, ENT_QUOTES, $charset); $data .= "</f>\n"; } if ($infos_isbn || $pubmed_id) { $data .= " <f c='010' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($pubmed_id ? $pubmed_id : $infos_isbn, ENT_QUOTES, $charset) . "</s>"; $data .= "</f>\n"; } if ($langue) { $data .= "<f c='101' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($langue, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } if ($titre) { $data .= "<f c='200' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($titre, ENT_QUOTES, $charset) . "</s>\n"; if ($titre_parallele) { $data .= "\t<s c='d'>" . htmlspecialchars($titre_parallele, ENT_QUOTES, $charset) . "</s>\n"; } $data .= "</f>\n"; } if ($editeur) { $data .= "<f c='210' ind=' '>\n"; if ($editeur) { $data .= "\t<s c='c'>" . htmlspecialchars($editeur, ENT_QUOTES, $charset) . "</s>\n"; } $data .= "</f>\n"; } if ($pagination) { $data .= "<f c='215' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($pagination, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } if ($resume) { $data .= "<f c='330' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($resume, ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } if ($perio_title) { $data .= "<f c='461' ind=' '>\n"; $data .= "\t<s c='t'>" . htmlspecialchars($perio_title, ENT_QUOTES, $charset) . "</s>\n"; if ($infos_issn) { $data .= "\t<s c='x'>" . htmlspecialchars($infos_issn, ENT_QUOTES, $charset) . "</s>\n"; } $data .= "\t<s c='9'>lnk:perio</s>\n"; $data .= "</f>\n"; } if ($bull_num || $bull_vol || $date || $date_sql) { $data .= "<f c='463' ind=' '>\n"; if ($bull_num && $bull_vol) { $data .= "\t<s c='v'>" . "vol. " . htmlspecialchars($bull_vol, ENT_QUOTES, $charset) . ", no. " . htmlspecialchars($bull_num, ENT_QUOTES, $charset) . "</s>\n"; } else { if ($bull_num && !$bull_vol) { $data .= "\t<s c='v'>no. " . htmlspecialchars($bull_num, ENT_QUOTES, $charset) . "</s>\n"; } else { if (!$bull_num && $bull_vol) { $data .= "\t<s c='v'>vol. " . htmlspecialchars($bull_vol, ENT_QUOTES, $charset) . "</s>\n"; } } } if ($date) { $data .= "\t<s c='e'>" . htmlspecialchars($date, ENT_QUOTES, $charset) . "</s>\n"; } if ($date_sql) { $data .= "\t<s c='d'>" . htmlspecialchars($date_sql, ENT_QUOTES, $charset) . "</s>\n"; } $data .= "\t<s c='9'>lnk:bull</s>\n"; $data .= "</f>\n"; } if ($collectivite) { if ($auteur) { for ($i = 0; $i < count($auteur); $i++) { $data .= "<f c='701' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($auteur[$i], ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } } $coll = explode(",", $collectivite, 2); $data .= "<f c='710' ind='0 '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($coll[0], ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='e'>" . htmlspecialchars($coll[1], ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } else { if ($auteur) { $data .= "<f c='700' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($auteur[0], ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; if ($auteur) { for ($i = 1; $i < count($auteur); $i++) { $data .= "<f c='701' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($auteur[$i], ENT_QUOTES, $charset) . "</s>\n"; $data .= "</f>\n"; } } } } if ($doc_type) { switch ($doc_type) { case 'Abstracts': case 'Meeting Abstracts': $doctype = "Abstract"; break; case 'Academic Dissertations': $doctype = "Thesis"; break; case 'Annual Reports': case 'Technical Report': $doctype = "Report"; break; case 'Book Reviews': case 'Review': $doctype = "Review"; break; case 'Classical Article': case 'Corrected and Republished Article': case 'Journal Article': case 'Newspaper Article': $doctype = "Article"; break; case 'Comment': case 'Published Erratum': $doctype = "Erratum"; break; case 'Congresses': $doctype = "Conference Proceedings"; break; case 'Database': $doctype = "Database"; break; case 'Dictionary': $doctype = "Dictionary"; break; case 'Directory': $doctype = "Directory"; break; case 'Editorial': $doctype = "Editorial"; break; case 'Encyclopedias': $doctype = "Encyclopedia"; break; case 'Letter': $doctype = "Letter"; break; case 'Unpublished Works': $doctype = "Preprint"; break; default: $doctype = "Article"; break; } if ($doctype) { $data .= "<f c='900' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($doctype, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='l'>Sub-Type</s>\n"; $data .= "\t<s c='n'>subtype</s>\n"; $data .= "</f>\n"; } } if ($doi) { $data .= "<f c='900' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($doi, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='l'>DOI id</s>\n"; $data .= "\t<s c='n'>pmi_doi_identifier</s>\n"; $data .= "</f>\n"; } if ($pubmed_id) { $data .= "<f c='856' ind=' '>\n"; $data .= "\t<s c='u'>http://www.ncbi.nlm.nih.gov/pubmed/{$pubmed_id}</s>\n"; $data .= "</f>\n"; $data .= "<f c='900' ind=' '>\n"; $data .= "\t<s c='a'>" . htmlspecialchars($pubmed_id, ENT_QUOTES, $charset) . "</s>\n"; $data .= "\t<s c='l'>Numéro PUBMED</s>\n"; $data .= "\t<s c='n'>pmi_xref_dbase_id</s>\n"; $data .= "</f>\n"; } $data .= "</notice>\n"; if (!$error) { $r['VALID'] = true; } else { $r['VALID'] = false; } $r['ERROR'] = $error; $r['DATA'] = $data; return $r; }
if (isEAN($code)) { $EAN = $code; $isbn = EANtoISBN($code); if ($isbn) { //formatISBN10 $tab[] = formatISBN($code, 10); //formatISBN13 $tab[] = formatISBN($code, 13); } } if (isISBN($code)) { $isbn = formatISBN($code); if ($isbn) { //formatISBN10 $tab[] = formatISBN($code, 10); //formatISBN13 $tab[] = formatISBN($code, 13); //format EAN $tab[] = str_replace('-', '', formatISBN($code, 13)); } } if (isISSN($code)) { $tab[] = substr($code, 0, 4) . '-' . substr($code, 4, 4); } $tab = array_unique($tab); ajax_http_send_response(json_encode($tab), 'text/html'); break; default: break; } }
function make_first_search() { global $msg, $dbh; global $elt_query; global $location_query, $date_ech_query; global $nb_per_page, $nb_per_page_select; global $results_show_all; if (!$nb_per_page) { $nb_per_page = $nb_per_page_select; } $restrict = "1 "; if ($location_query != '-1') { $restrict .= "and location_id='" . $location_query . "' "; } $restrict .= "and notice_id=num_notice "; if ($date_ech_query != '-1') { $restrict .= "and date_fin < '" . $date_ech_query . "' "; } $suite_rqt = "or code='" . $elt_query . "' "; $issn_verif = traite_code_ISSN(stripslashes($elt_query)); if (isISSN(stripslashes($elt_query))) { $suite_rqt .= " or code='" . $issn_verif . "' "; $q_count = "select count(abt_id) from notices, abts_abts where " . $restrict . " and (0 " . $suite_rqt . ")"; $r_count = pmb_mysql_query($q_count); $n_count = pmb_mysql_result($r_count, 0, 0); $this->nbresults = $n_count; $q_list = "select tit1, abt_id, abt_name from notices, abts_abts where " . $restrict . " and (0 " . $suite_rqt . ") ORDER BY 1,3"; if (!$results_show_all) { $q_list .= " limit " . $this->page * $nb_per_page . ", " . $nb_per_page . " "; } $r_list = pmb_mysql_query($q_list, $dbh); $this->t_query = $r_list; if (!$results_show_all) { $this->nbepage = ceil($this->nbresults / $nb_per_page); } else { $this->nbepage = 1; } } else { $aq = new analyse_query(stripslashes($elt_query)); if ($aq->error) { $this->show_form(); error_message($msg["searcher_syntax_error"], sprintf($msg["searcher_syntax_error_desc"], $aq->current_car, $aq->input_html, $aq->error_message)); return; } else { $q_members = $aq->get_query_members("notices", "index_wew", "index_sew", "abt_id"); $q_count = "select count(abt_id) from notices, abts_abts where " . $restrict . " and (" . $q_members["where"] . " " . $suite_rqt . ")"; $r_count = pmb_mysql_query($q_count); $n_count = pmb_mysql_result($r_count, 0, 0); $this->nbresults = $n_count; $q_list = "select abt_id, " . $q_members['select'] . " as pert from notices, abts_abts where " . $restrict . " and (" . $q_members["where"] . " " . $suite_rqt . ") " . $q_members['post']; if (!$results_show_all) { $q_list .= " limit " . $this->page * $nb_per_page . ", " . $nb_per_page . " "; } //on surcharge la requête d'origine pour ajouter trier sur titre de périodique $new_q_list = "\n\t\t\t\t\t\tSELECT tit1, a.abt_id, a.abt_name, pert \n\t\t\t\t\t\tFROM notices n, abts_abts a, (" . $q_list . ") as q \n\t\t\t\t\t\tWHERE q.abt_id=a.abt_id AND a.num_notice=n.notice_id \n\t\t\t\t\t\tORDER BY 1 ASC,3 DESC"; $r_list = pmb_mysql_query($new_q_list, $dbh); $this->t_query = $r_list; if (!$results_show_all) { $this->nbepage = ceil($this->nbresults / $nb_per_page); } else { $this->nbepage = 1; } } } return ELT_LIST; }
function traite_code_ISSN($issn) { if ($issn) { if (isISSN($issn)) { $issn = preg_replace("/[^0-9|X]/i", '', $issn); $issn = str_replace('x', 'X', $issn); $issn = substr($issn, 0, 4) . '-' . substr($issn, 4, 4); return $issn; } else { return $issn; } } return ''; }
static function getNbActes($id_bibli, $type_acte, $statut = '-1', $aq = 0, $user_input = '') { global $dbh; if ($statut == '-1') { $filtre = ''; } elseif ($statut == 32) { $filtre = "and ((actes.statut & 32) = 32) "; } else { $filtre = "and ((actes.statut & 32) = 0) and ((actes.statut & " . $statut . ") = '" . $statut . "') "; } if (!$aq) { $q = "select count(1) from actes where num_entite = '" . $id_bibli . "' "; $q .= "and type_acte = '" . $type_acte . "' " . $filtre . " "; } else { $isbn = ''; $t_codes = array(); if ($user_input !== '') { if (isEAN($user_input)) { // la saisie est un EAN -> on tente de le formater en ISBN $isbn = EANtoISBN($user_input); if ($isbn) { $t_codes[] = $isbn; $t_codes[] = formatISBN($isbn, 10); } } elseif (isISBN($user_input)) { // si la saisie est un ISBN $isbn = formatISBN($user_input); if ($isbn) { $t_codes[] = $isbn; $t_codes[] = formatISBN($isbn, 13); } } elseif (isISSN($user_input)) { $t_codes[] = $user_input; } } if (count($t_codes)) { $q = "select count(distinct(id_acte)) from actes left join lignes_actes on num_acte=id_acte "; $q .= "where ( num_entite='" . $id_bibli . "' and type_acte='" . $type_acte . "' " . $filtre . " ) "; $q .= "and ('0' "; foreach ($t_codes as $v) { $q .= "or code like '%" . $v . "%' "; } $q .= ") "; } else { $members_actes = $aq->get_query_members("actes", "numero", "index_acte", "id_acte"); $members_lignes = $aq->get_query_members("lignes_actes", "code", "index_ligne", "id_ligne"); $q = "select count(distinct(id_acte)) from actes left join lignes_actes on num_acte=id_acte "; $q .= "where ( num_entite='" . $id_bibli . "' and type_acte='" . $type_acte . "' " . $filtre . " ) "; $q .= "and (" . $members_actes["where"] . " or " . $members_lignes["where"] . ") "; } } $r = pmb_mysql_query($q, $dbh); return pmb_mysql_result($r, 0, 0); }