/**
  * @covers NlmCitationSchemaOpenUrlCrosswalkFilter
  * @covers OpenUrlCrosswalkFilter
  */
 public function testExecute()
 {
     $nlmDescription = $this->getTestNlmDescription();
     $openUrlDescription = $this->getTestOpenUrlDescription();
     $filter = new NlmCitationSchemaOpenUrlCrosswalkFilter();
     self::assertEquals($openUrlDescription, $filter->execute($nlmDescription));
 }
コード例 #2
0
 /**
  * Prepare a search with the CrossRef OpenURL resolver
  * @param $citationDescription MetadataDescription
  * @return array an array of search parameters
  */
 function &_prepareOpenUrlSearch(&$citationDescription)
 {
     $nullVar = null;
     // Crosswalk to OpenURL
     import('lib.pkp.classes.metadata.nlm.NlmCitationSchemaOpenUrlCrosswalkFilter');
     $nlmOpenUrlFilter = new NlmCitationSchemaOpenUrlCrosswalkFilter();
     if (is_null($openUrlCitation =& $nlmOpenUrlFilter->execute($citationDescription))) {
         return $nullVar;
     }
     // Prepare the search
     $searchParams = array('url_ver' => 'Z39.88-2004');
     // Configure the meta-data schema
     $openUrlCitationSchema =& $openUrlCitation->getMetadataSchema();
     switch (true) {
         case is_a($openUrlCitationSchema, 'OpenUrlJournalSchema'):
             $searchParams['rft_val_fmt'] = 'info:ofi/fmt:kev:mtx:journal';
             break;
         case is_a($openUrlCitationSchema, 'OpenUrlBookSchema'):
             $searchParams['rft_val_fmt'] = 'info:ofi/fmt:kev:mtx:book';
             break;
         case is_a($openUrlCitationSchema, 'OpenUrlDissertationSchema'):
             $searchParams['rft_val_fmt'] = 'info:ofi/fmt:kev:mtx:dissertation';
             break;
         default:
             assert(false);
     }
     // Add all OpenURL meta-data to the search parameters
     // FIXME: Implement a looping search like for other lookup services.
     $searchProperties = array('aufirst', 'aulast', 'btitle', 'jtitle', 'atitle', 'issn', 'artnum', 'date', 'volume', 'issue', 'spage', 'epage');
     foreach ($searchProperties as $property) {
         if ($openUrlCitation->hasStatement($property)) {
             $searchParams['rft.' . $property] = $openUrlCitation->getStatement($property);
         }
     }
     return $searchParams;
 }