1: <?php
2:
3: namespace Scopus\Response;
4:
5: class AbstractCoredata
6: {
7: /** @var array */
8: protected $data;
9:
10: public function __construct(array $data)
11: {
12: $this->data = $data;
13: }
14:
15: public function getUrl()
16: {
17: return isset($this->data['prism:url']) ? $this->data['prism:url'] : null;
18: }
19:
20: public function getIdentifier()
21: {
22: return isset($this->data['dc:identifier']) ? $this->data['dc:identifier'] : null;
23: }
24:
25: public function getScopusId()
26: {
27: $identifier = $this->getIdentifier();
28: if (substr($identifier, 0, 10) === 'SCOPUS_ID:') {
29: return explode(':', $identifier, 2)[1];
30: }
31:
32: return null;
33: }
34:
35: public function getEid()
36: {
37: return isset($this->data['eid']) ? $this->data['eid'] : null;
38: }
39:
40: public function getTitle()
41: {
42: return isset($this->data['dc:title']) ? $this->data['dc:title'] : null;
43: }
44:
45: public function getPublicationName()
46: {
47: return isset($this->data['prism:publicationName']) ? $this->data['prism:publicationName'] : null;
48: }
49:
50: public function getEIssn()
51: {
52: return isset($this->data['prism:eIssn']) ? $this->data['prism:eIssn'] : null;
53: }
54:
55: public function getVolume()
56: {
57: return isset($this->data['prism:volume']) ? $this->data['prism:volume'] : null;
58: }
59:
60: public function getPageRange()
61: {
62: return isset($this->data['prism:pageRange']) ? $this->data['prism:pageRange'] : null;
63: }
64:
65: public function getCoverDate()
66: {
67: return isset($this->data['prism:coverDate']) ? $this->data['prism:coverDate'] : null;;
68: }
69:
70: public function getDoi()
71: {
72: return isset($this->data['prism:doi']) ? $this->data['prism:doi'] : null;
73: }
74:
75: public function getPubmedId()
76: {
77: return isset($this->data['pubmed-id']) ? $this->data['pubmed-id'] : null;
78: }
79:
80: public function getArticleNumber()
81: {
82: return isset($this->data['article-number']) ? $this->data['article-number'] : null;
83: }
84:
85: public function getDescription()
86: {
87: return isset($this->data['dc:description']) ? $this->data['dc:description'] : null;
88: }
89:
90: public function getCitedbyCount()
91: {
92: if (!isset($this->data['citedby-count'])) return 0;
93: return is_array($this->data['citedby-count']) ? $this->data['citedby-count'][1]['$'] : $this->data['citedby-count'];
94: }
95:
96: public function getAggregationType()
97: {
98: return isset($this->data['prism:aggregationType']) ? $this->data['prism:aggregationType'] : null;
99: }
100:
101: public function getFundSponsor()
102: {
103: return isset($this->data['fund-sponsor']) ? $this->data['fund-sponsor'] : null;
104: }
105:
106: public function getStartPage()
107: {
108: $pageRange = $this->getPageRange();
109: if ($pageRange) {
110: return explode('-', $pageRange)[0];
111: }
112:
113: return null;
114: }
115:
116: public function getEndPage()
117: {
118: $pageRange = $this->getPageRange();
119: if ($pageRange) {
120: $startEndPage = explode('-', $pageRange);
121: if (count($startEndPage) > 1) {
122: return $startEndPage[1];
123: }
124: }
125:
126: return null;
127: }
128:
129: public function getIssn()
130: {
131: return isset($this->data['prism:issn']) ? $this->data['prism:issn'] : null;
132: }
133:
134: public function hasError()
135: {
136: return isset($this->data['error']) ? $this->data['error'] : false;
137: }
138: }
139: