Example #1
0
 /**
  * Perform normalization and analysis of PCI return value
  * (a single record)
  *
  * @param simplexml $item The xml record from PCI
  *
  * @return array The processed record array
  * @access protected
  */
 protected function process($item)
 {
     global $configArray;
     $primoRecord = $item->children('http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib');
     $links = array();
     $backlink = '';
     foreach ((array) $primoRecord->PrimoNMBib->record->links->linktorsrc as $val) {
         $linkString = (string) $val;
         $ini = strripos($linkString, '$$U');
         if ($ini === false) {
             continue;
         }
         $ini += 3;
         $linkArray = explode('$$', substr($linkString, $ini));
         if ($linkArray[0]) {
             $links[] = $linkArray[0];
         }
     }
     // Back links sometimes contain non-valid XML and thus cannot
     // be treated like source links
     $backlinkString = (string) $primoRecord->PrimoNMBib->record->links->backlink;
     $ini = strripos($backlinkString, '$$U');
     if ($ini !== false) {
         $ini += 3;
         $backlinkArray = explode('$$', substr($backlinkString, $ini));
         if ($backlinkArray[0]) {
             $backlink = $backlinkArray[0];
         }
     }
     $openurl = '';
     if (isset($configArray['OpenURL']['url']) && $configArray['OpenURL']['url']) {
         // Parse the OpenURL and extract parameters
         $link = $item->xpath('.//sear:LINKS/sear:openurl');
         if (!$link) {
             $link = $item->xpath('.//sear:GETIT/@GetIt2');
             if (!$link || $link[0] == "") {
                 $link = $item->xpath('.//sear:GETIT/@GetIt1');
             }
         }
         if ($link && strpos($link[0], 'url_ver=Z39.88-2004') !== false) {
             $params = explode('&', substr($link[0], strpos($link[0], '?') + 1));
             $openurl = 'rfr_id=' . urlencode($configArray['OpenURL']['rfr_id']);
             foreach ($params as $param) {
                 if (substr($param, 0, 7) != 'rfr_id=') {
                     $openurl .= '&' . $param;
                 }
             }
         }
     }
     $fulltext = (string) $primoRecord->PrimoNMBib->record->delivery->fulltext;
     $title = $this->hiLite((string) $primoRecord->PrimoNMBib->record->display->title);
     $authors = explode(' ; ', (string) $primoRecord->PrimoNMBib->record->display->creator);
     foreach ($authors as &$author) {
         $author = $this->hiLite($author);
     }
     return array('title' => $title, 'author' => $authors, 'AdditionalAuthors' => (array) $primoRecord->PrimoNMBib->record->search->creatorcontrib, 'source' => (string) $primoRecord->PrimoNMBib->record->display->source, 'publicationDate' => (string) $primoRecord->PrimoNMBib->record->search->creationdate, 'publicationTitle' => (string) $primoRecord->PrimoNMBib->record->display->ispartof, 'openUrl' => !empty($openurl) ? $openurl : null, 'url' => $links, 'backlink' => $backlink, 'fulltext' => $fulltext, 'fullrecord' => $item->asXML(), 'id' => 'pci.' . (string) $primoRecord->PrimoNMBib->record->search->recordid, 'format' => (string) $primoRecord->PrimoNMBib->record->display->type, 'ISSN' => (string) $primoRecord->PrimoNMBib->record->search->issn, 'language' => (string) $primoRecord->PrimoNMBib->record->facets->language, 'subjectTerms' => (array) $primoRecord->PrimoNMBib->record->search->subject, 'snippet' => (string) $primoRecord->PrimoNMBib->record->display->description, 'volume' => (string) $primoRecord->PrimoNMBib->record->addata->volume, 'issue' => (string) $primoRecord->PrimoNMBib->record->addata->issue, 'startPage' => '', 'endPage' => '');
 }
Example #2
0
 /**
  * Saves given xml object (formatted)
  * @param simplexml $oXml
  * @return string xml formatted string (ready to be saved to file)
  */
 public static function saveXml($oXml)
 {
     $dom = new DOMDocument('1.0');
     $dom->preserveWhiteSpace = false;
     $dom->formatOutput = true;
     $dom->loadXML($oXml->asXML());
     return $dom->saveXML();
 }