示例#1
0
 public function getIsbn()
 {
     require_once ROOT_DIR . '/sys/ISBN.php';
     $isbns = $this->getPropertyArray('isbn');
     if (count($isbns) == 0) {
         return null;
     } else {
         $isbn = ISBN::normalizeISBN($isbns[0]);
         return $isbn;
     }
 }
示例#2
0
 function getGoDeeperData()
 {
     require_once ROOT_DIR . '/services/Record/Enrichment.php';
     $record = $this->loadSolrRecord($_GET['id']);
     $type = $_GET['type'];
     $isbn = isset($record['isbn']) ? ISBN::normalizeISBN($record['isbn'][0]) : null;
     $upc = isset($record['upc']) ? $record['upc'][0] : null;
     //Load go deeper data
     require_once ROOT_DIR . '/Drivers/marmot_inc/GoDeeperData.php';
     $goDeeperOptions = GoDeeperData::getHtmlData($type, 'vufind', $isbn, $upc);
     return $goDeeperOptions;
 }
 /**
  * @param string $sourceSolrId
  * @param string $isbn
  * @param integer $numResourcesToLoad
  * @param Solr $db
  * @return null
  */
 private static function getXISBN($sourceSolrId, $isbn, $numResourcesToLoad, $db)
 {
     global $configArray;
     // Build URL
     $url = 'http://xisbn.worldcat.org/webservices/xid/isbn/' . urlencode(is_array($isbn) ? $isbn[0] : $isbn) . '?method=getEditions&format=csv';
     if (isset($configArray['WorldCat']['id'])) {
         $url .= '&ai=' . $configArray['WorldCat']['id'];
     }
     // Print Debug code
     if ($configArray['System']['debug']) {
         global $logger;
         $logger->log("<pre>XISBN: {$url}</pre>", PEAR_LOG_INFO);
     }
     // Fetch results
     $query = '';
     if ($fp = @fopen($url, "r")) {
         while (($data = fgetcsv($fp, 1000, ",")) !== FALSE) {
             // If we got an error message, don't treat it as an ISBN!
             if ($data[0] == 'overlimit') {
                 continue;
             }
             if ($query != '') {
                 $query .= ' OR isbn:' . $data[0];
             } else {
                 $query = 'isbn:' . $data[0];
             }
         }
     }
     if (strlen($query) == 0) {
         //Get ISBNs from the record itself
         $record = $db->getRecord($sourceSolrId);
         if ($record) {
             if (isset($record['isbn'])) {
                 $isbns = is_array($record['isbn']) ? $record['isbn'] : array($record['isbn']);
                 foreach ($isbns as $tmpIsbn) {
                     $tmpIsbn = ISBN::normalizeISBN($tmpIsbn);
                     if ($query != '') {
                         $query .= ' OR isbn:' . $tmpIsbn;
                     } else {
                         $query = 'isbn:' . $tmpIsbn;
                     }
                 }
             }
             if (isset($record['grouping_term'])) {
                 $query .= ' OR grouping_term:"' . $record['grouping_term'] . '"';
             }
         }
     }
     if ($query != '') {
         // Filter out current record
         $query .= ' NOT id:' . $sourceSolrId;
         $result = $db->search($query, null, null, 0, $numResourcesToLoad);
         if (!PEAR_Singleton::isError($result)) {
             if (isset($result['response']['docs']) && !empty($result['response']['docs'])) {
                 return $result['response']['docs'];
             } else {
                 return null;
             }
         } else {
             return $result;
         }
     } else {
         return null;
     }
 }
示例#4
0
 /**
  * Get records similar to one record
  * Uses MoreLikeThis Request Handler
  *
  * Uses SOLR MLT Query Handler
  *
  * @access	public
  * @var     string  $id             The id to retrieve similar titles for
  * @var     array   $originalResult The original record we are getting similar titles for.
  * @throws	object						PEAR Error
  * @return	array							An array of query results
  *
  */
 function getMoreLikeThis2($id, $originalResult = null)
 {
     if ($originalResult == null) {
         $originalResult = $this->getRecord($id);
     }
     // Query String Parameters
     $options = array('q' => "id:{$id}", 'qt' => 'morelikethis2', 'mlt.interestingTerms' => 'details', 'rows' => 25);
     if ($originalResult) {
         $options['fq'] = array();
         if (isset($originalResult['target_audience_full'])) {
             $options['fq'][] = 'target_audience_full:"' . $originalResult['target_audience_full'] . '"';
         }
         if (isset($originalResult['literary_form'])) {
             $options['fq'][] = 'literary_form:"' . $originalResult['literary_form'] . '"';
         }
         if (isset($originalResult['language'])) {
             $options['fq'][] = 'language:"' . $originalResult['language'][0] . '"';
         }
         //Don't want to get other editions of the same work (that's a different query)
         if (isset($originalResult['isbn'])) {
             if (is_array($originalResult['isbn'])) {
                 foreach ($originalResult['isbn'] as $isbn) {
                     $options['fq'][] = '-isbn:' . ISBN::normalizeISBN($isbn);
                 }
             } else {
                 $options['fq'][] = '-isbn:' . ISBN::normalizeISBN($originalResult['isbn']);
             }
         }
         if (isset($originalResult['upc'])) {
             if (is_array($originalResult['upc'])) {
                 foreach ($originalResult['upc'] as $upc) {
                     $options['fq'][] = '-upc:' . ISBN::normalizeISBN($upc);
                 }
             } else {
                 $options['fq'][] = '-upc:' . ISBN::normalizeISBN($originalResult['upc']);
             }
         }
     }
     $searchLibrary = Library::getSearchLibrary();
     $searchLocation = Location::getSearchLocation();
     $scopingFilters = $this->getScopingFilters($searchLibrary, $searchLocation);
     foreach ($scopingFilters as $filter) {
         $options['fq'][] = $filter;
     }
     $boostFactors = $this->getBoostFactors($searchLibrary, $searchLocation);
     $options['bf'] = $boostFactors;
     if (!empty($this->_solrShards) && is_array($this->_solrShards)) {
         $options['shards'] = implode(',', $this->_solrShards);
     }
     $result = $this->_select('GET', $options);
     if (PEAR_Singleton::isError($result)) {
         PEAR_Singleton::raiseError($result);
     }
     return $result;
 }