|  |  | 
 |  |  | <?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; | 
 |  |  |     } | 
 |  |  | } | 
 |  |  | ?> |