/** * Parse OpenURL and return a keyed array * * @return array */ protected function parseOpenURL() { $title = ''; $atitle = ''; $author = ''; $isbn = ''; $issn = ''; $eissn = ''; $date = ''; $volume = ''; $issue = ''; $spage = ''; $journal = false; $request = $this->getRequest()->getQuery()->toArray() + $this->getRequest()->getPost()->toArray(); if (isset($request['url_ver']) && $request['url_ver'] == 'Z39.88-2004') { // Parse OpenURL 1.0 if (isset($request['rft_val_fmt']) && $request['rft_val_fmt'] == 'info:ofi/fmt:kev:mtx:book') { // Book format $isbn = isset($request['rft_isbn']) ? $request['rft_isbn'] : ''; if (isset($request['rft_btitle'])) { $title = $request['rft_btitle']; } else { if (isset($request['rft_title'])) { $title = $request['rft_title']; } } } else { // Journal / Article / something $journal = true; $eissn = isset($request['rft_eissn']) ? $request['rft_eissn'] : ''; $atitle = isset($request['rft_atitle']) ? $request['rft_atitle'] : ''; if (isset($request['rft_jtitle'])) { $title = $request['rft_jtitle']; } else { if (isset($request['rft_title'])) { $title = $request['rft_title']; } } } if (isset($request['rft_aulast'])) { $author = $request['rft_aulast']; } if (isset($request['rft_aufirst'])) { $author .= ' ' . $request['rft_aufirst']; } else { if (isset($request['rft_auinit'])) { $author .= ' ' . $request['rft_auinit']; } } $issn = isset($request['rft_issn']) ? $request['rft_issn'] : ''; $date = isset($request['rft_date']) ? $request['rft_date'] : ''; $volume = isset($request['rft_volume']) ? $request['rft_volume'] : ''; $issue = isset($request['rft_issue']) ? $request['rft_issue'] : ''; $spage = isset($request['rft_spage']) ? $request['rft_spage'] : ''; } else { // OpenURL 0.1 $issn = isset($request['issn']) ? $request['issn'] : ''; $date = isset($request['date']) ? $request['date'] : ''; $volume = isset($request['volume']) ? $request['volume'] : ''; $issue = isset($request['issue']) ? $request['issue'] : ''; $spage = isset($request['spage']) ? $request['spage'] : ''; $isbn = isset($request['isbn']) ? $request['isbn'] : ''; $atitle = isset($request['atitle']) ? $request['atitle'] : ''; if (isset($request['jtitle'])) { $title = $request['jtitle']; } else { if (isset($request['btitle'])) { $title = $request['btitle']; } else { if (isset($request['title'])) { $title = $request['title']; } } } if (isset($request['aulast'])) { $author = $request['aulast']; } if (isset($request['aufirst'])) { $author .= ' ' . $request['aufirst']; } else { if (isset($request['auinit'])) { $author .= ' ' . $request['auinit']; } } } if (ISBN::isValidISBN10($isbn) || ISBN::isValidISBN13($isbn)) { $isbnObj = new ISBN($isbn); $isbn = $isbnObj->get13(); } return compact('journal', 'atitle', 'title', 'author', 'isbn', 'issn', 'eissn', 'date', 'volume', 'issue', 'spage'); }