Пример #1
0
 function handle()
 {
     $result = array();
     if ($this->xml) {
         foreach ($this->xml->{$this->ro->class}->relatedInfo as $relatedInfo) {
             $type = (string) $relatedInfo['type'];
             $identifier_resolved = identifierResolution((string) $relatedInfo->identifier, (string) $relatedInfo->identifier['type']);
             $result[] = array('type' => $type, 'title' => (string) $relatedInfo->title, 'identifier' => array('identifier_type' => (string) $relatedInfo->identifier['type'], 'identifier_value' => (string) $relatedInfo->identifier, 'identifier_href' => $identifier_resolved), 'relation' => array('relation_type' => (string) $relatedInfo->relation['type'], 'description' => (string) $relatedInfo->relation->description, 'url' => (string) $relatedInfo->relation->url), 'notes' => (string) $relatedInfo->notes);
         }
     }
     return $result;
 }
Пример #2
0
 function handle()
 {
     $result = array();
     if ($this->ro->status == 'PUBLISHED') {
         if ($this->index && isset($this->index['identifier_type'])) {
             //identifier_type, identifier_value
             foreach ($this->index['identifier_type'] as $key => $type) {
                 $result[] = array('type' => $type, 'value' => $this->index['identifier_value'][$key], 'identifier' => identifierResolution($this->index['identifier_value'][$key], $type));
             }
         }
     } else {
         $identifiers = $this->ro->getIdentifiers();
         foreach ($identifiers as $identifier) {
             $result[] = array('type' => $identifier['identifier_type'], 'value' => $identifier['identifier'], 'identifier' => identifierResolution($identifier['identifier'], $identifier['identifier_type']));
         }
     }
     return $result;
 }
Пример #3
0
 function getSourceUrl($output = null)
 {
     $sourceUrl = '';
     $query = '';
     if ($this->gXPath->evaluate("count(//ro:collection/ro:citationInfo/ro:citationMetadata/ro:identifier[@type='doi'])") > 0) {
         $query = "//ro:collection/ro:citationInfo/ro:citationMetadata/ro:identifier[@type='doi']";
         $type = 'doi';
     } elseif ($this->gXPath->evaluate("count(//ro:collection/ro:citationInfo/ro:citationMetadata/ro:identifier[@type='handle'])") > 0) {
         $query = "//ro:collection/ro:citationInfo/ro:citationMetadata/ro:identifier[@type='handle']";
         $type = 'handle';
     } elseif ($this->gXPath->evaluate("count(//ro:collection/ro:citationInfo/ro:citationMetadata/ro:identifier[@type='uri'])") > 0) {
         $query = "//ro:collection/ro:citationInfo/ro:citationMetadata/ro:identifier[@type='uri']";
         $type = 'uri';
     } elseif ($this->gXPath->evaluate("count(//ro:collection/ro:citationInfo/ro:citationMetadata/ro:identifier[@type='purl'])") > 0) {
         $query = "//ro:collection/ro:citationInfo/ro:citationMetadata/ro:identifier[@type='purl']";
         $type = 'purl';
     } elseif ($this->gXPath->evaluate("count(//ro:collection/ro:identifier[@type='doi'])") > 0) {
         $query = "//ro:collection/ro:identifier[@type='doi']";
         $type = 'doi';
     } elseif ($this->gXPath->evaluate("count(//ro:collection/ro:identifier[@type='handle'])") > 0) {
         $query = "//ro:collection/ro:identifier[@type='handle']";
         $type = 'handle';
     } elseif ($this->gXPath->evaluate("count(//ro:collection/ro:identifier[@type='uri'])") > 0) {
         $query = "//ro:collection/ro:identifier[@type='uri']";
         $type = 'uri';
     } elseif ($this->gXPath->evaluate("count(//ro:collection/ro:identifier[@type='purl'])") > 0) {
         $query = "//ro:collection/ro:identifier[@type='purl']";
         $type = 'purl';
     } elseif ($this->gXPath->evaluate("count(//ro:collection/ro:citationInfo/ro:citationMetadata/ro:url)") > 0) {
         $query = "//ro:collection/ro:citationInfo/ro:citationMetadata/ro:url";
         $type = 'url';
     } elseif ($this->gXPath->evaluate("count(//ro:collection/ro:location/ro:address/ro:electronic[@type='url'])") > 0) {
         $query = "//ro:collection/ro:location/ro:address/ro:electronic[@type='url']";
         $type = 'url';
     }
     if ($query != '') {
         $urls = $this->gXPath->query($query);
         foreach ($urls as $url) {
             $sourceUrl = $url->nodeValue;
             if ($output == 'endNote') {
                 $resolved = identifierResolution($sourceUrl, $type);
                 $sourceUrl = $resolved['href'];
             } elseif ($output == 'coins') {
                 if (strpos($sourceUrl, "doi.org/")) {
                     $sourceUrl = "info:doi" . substr($sourceUrl, strpos($sourceUrl, "doi.org/") + 8);
                 } elseif ($type == 'doi') {
                     $sourceUrl = "info:doi" . $sourceUrl;
                 }
             }
         }
     } else {
         if ($output == 'endNote') {
             $sourceUrl = portal_url();
         }
     }
     return $sourceUrl;
 }