/**
  * 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');
 }
 /**
  * Check if passed string is an ISBN and convert to ISBN-13
  *
  * @param string $searchString The query string
  *
  * @return valid ISBN-13 or the original string
  */
 protected function normalizeISBN($searchString)
 {
     if (!ISBN::isValidISBN10($searchString)) {
         return $searchString;
     }
     $isbn = new ISBN($searchString);
     return $isbn->get13();
 }