| | |
| | | <?php |
| | | class ibd_BN extends YAZ_ibd { |
| | | function __construct() { |
| | | parent::__construct('Biblioteka Narodowa', 'eu.alma.exlibrisgroup.com:1921/48OMNIS_NLOP'); |
| | | class ibd_BN implements ibd_module { |
| | | public $url = 'http://data.bn.org.pl/api/bibs.json'; |
| | | public $limit = 20; |
| | | |
| | | function szukaj_info($tytul=NULL, $autor=NULL, $wydawnictwo=NULL) { |
| | | $params = []; |
| | | if(!empty($tytul)) { |
| | | $params['title'] = $tytul; |
| | | } |
| | | if(!empty($autor)) { |
| | | $params['author'] = $author; |
| | | } |
| | | if(!empty($wydawnictwo)) { |
| | | $params['publisher'] = $wydawnictwo; |
| | | } |
| | | return $this->query($params); |
| | | } |
| | | |
| | | function szukaj_ISBN($ISBN) { |
| | | $result = $this->query(array( |
| | | 'isbnIssn' => $ISBN, |
| | | )); |
| | | if(substr($ISBN, 0, 3) == '978') { |
| | | $result = array_merge( |
| | | $result, |
| | | $this->query(array( |
| | | 'isbnIssn' => convert::ISBN13_to_ISBN10( $ISBN ), |
| | | )) |
| | | ); |
| | | } |
| | | return $result; |
| | | } |
| | | |
| | | function szukaj_ISSN($ISSN) { |
| | | $result = $this->query(array( |
| | | 'isbnIssn' => $ISSN, |
| | | )); |
| | | if(substr($ISSN, 0, 3) == '977') { |
| | | $result = array_merge( |
| | | $result, |
| | | $this->query(array( |
| | | 'isbnIssn' => convert::ISSN13_to_ISSN8( $ISSN ) |
| | | )) |
| | | ); |
| | | } |
| | | return $result; |
| | | } |
| | | |
| | | protected function query($params) { |
| | | $params['limit'] = $limit; |
| | | $result = file_get_contents($this->url . '?' . http_build_query($params)); |
| | | $result = json_decode($result, TRUE); |
| | | return $this->extractArrays($result); |
| | | |
| | | } |
| | | |
| | | protected function convertSubfields($values) { |
| | | $result = array(); |
| | | if(!isset($values['subfields'])) { |
| | | return array(); |
| | | } |
| | | if(isset($values['ind1'])) { |
| | | $result['f0'] = $values['ind1']; |
| | | } |
| | | if(isset($values['ind2'])) { |
| | | $result['f1'] = $values['ind2']; |
| | | } |
| | | foreach($values['subfields'] as $subfield) { |
| | | foreach($subfield as $name => $value) { |
| | | $result[$name] = $value; |
| | | } |
| | | } |
| | | ?> |
| | | return $result; |
| | | } |
| | | |
| | | protected function convert($entry) { |
| | | $marc = array(); |
| | | if(!isset($entry['marc'])) return NULL; |
| | | if(!isset($entry['marc']['fields'])) return NULL; |
| | | foreach($entry['marc']['fields'] as $fields) { |
| | | foreach($fields as $field => $values) { |
| | | if(!isset($marc[$field])) { |
| | | $marc[$field] = array(); |
| | | } |
| | | $marc[$field][] = $this->convertSubfields($values); |
| | | } |
| | | } |
| | | return $marc; |
| | | } |
| | | |
| | | protected function extractArrays($result) { |
| | | if(!$result) return array(); |
| | | if(!$result['bibs']) return array(); |
| | | |
| | | $return = array(); |
| | | foreach($result['bibs'] as $bib) { |
| | | $marc = $this->convert($bib); |
| | | $return[] = MARC21::to_array($marc); |
| | | } |
| | | return $return; |
| | | } |
| | | } |