Subversion Repositories oidplus

Rev

Blame | Last modification | View Log | RSS feed

  1. <?php
  2.  
  3. # if (!interface_exists('OIDPlusFieldExtenders')) throw new Exception('Required interface "OIDPlusFieldExtenders" not found.');
  4. # if (!class_exists('OIDPlus')) throw new Exception('Required class "OIDPlus" not found.');
  5.  
  6. require_once __DIR__ . '/../../core/OIDPlusFieldExtenders.class.php';
  7. require_once __DIR__ . '/../../includes/uuid_utils.inc.php';
  8.  
  9. class DOILinkFieldExtender implements OIDPlusFieldExtenders {
  10.  
  11.         public static function findDOI($oid, &$oidplusobj) {
  12.                 $indexes = $oidplusobj->getDatasets($oid, 'index');
  13.  
  14.                 $found_doi = null;
  15.                 foreach ($indexes as $index) {
  16.                         $params = $index['attrib_params'];
  17.                         $is_doi = false;
  18.                         foreach ($params as $param) {
  19.                                 if (strtolower(trim($param)) == 'doi') {
  20.                                         $is_doi = true;
  21.                                         break;
  22.                                 }
  23.                         }
  24.  
  25.                         if ($is_doi) {
  26.                                 $found_doi = trim($index['value']);
  27.                                 break;
  28.                         }
  29.                 }
  30.  
  31.                 return $found_doi;
  32.         }
  33.  
  34.         public static function processOID($oid, &$out, &$oidplusobj) {
  35.                 $doi = self::findDOI($oid, $oidplusobj);
  36.                 if (!is_null($doi)) {
  37.                         $out[] = "doi-resolve:http://dx.doi.org/$doi";
  38.                 }
  39.         }
  40. }
  41.  
  42. require_once __DIR__ . '/../../core/2_OIDPlus.class.php';
  43. OIDPlus::registerFieldExtender(new DOILinkFieldExtender());
  44.