16 import(
'lib.pkp.classes.plugins.GatewayPlugin');
22 function register($category, $path, $mainContextId =
null) {
23 $success = parent::register($category, $path, $mainContextId);
43 return 'ResolverPlugin';
47 return __(
'plugins.gateways.resolver.displayName');
51 return __(
'plugins.gateways.resolver.description');
62 $scheme = array_shift($args);
65 $doi = implode(
'/', $args);
67 $article = $submissionDao->getByPubId(
'doi', $doi,
$request->getJournal());
69 $request->redirect(
null,
'article',
'view', $article->getBestId());
78 if ($scheme ==
'vnp') {
79 $volume = (int) array_shift($args);
81 } elseif ($scheme ==
'ynp') {
82 $year = (int) array_shift($args);
87 $number = array_shift($args);
88 $page = (int) array_shift($args);
91 $issues = $issueDao->getPublishedIssuesByNumber($journal->getId(), $volume, $number, $year);
94 $issue = $issues->next();
95 if (!$issue || $issues->next())
break;
99 'issueIds' => $issue->getId(),
101 foreach ($submissionsIterator as $submission) {
105 $matchedPage = $matches[1];
106 if ($page == $matchedPage)
$request->redirect(
null,
'article',
'view', $submission->getBestId());
108 if (
PKPString::regexp_match_get(
'/^[Pp][Pp]?[.]?[ ]?(\d+)[ ]?-[ ]?([Pp][Pp]?[.]?[ ]?)?(\d+)$/', $submission->getPages(), $matches)) {
109 $matchedPageFrom = $matches[1];
110 $matchedPageTo = $matches[3];
111 if ($page >= $matchedPageFrom && ($page < $matchedPageTo || ($page == $matchedPageTo && $matchedPageFrom = $matchedPageTo)))
$request->redirect(
null,
'article',
'view', $submission->getBestId());
119 header(
'HTTP/1.0 404 Not Found');
122 $templateMgr->assign(
'message',
'plugins.gateways.resolver.errors.errorMessage');
123 $templateMgr->display(
'frontend/pages/message.tpl');
128 return str_replace(
"\t",
" ", strip_tags($string));
134 $journals = $journalDao->getAll(
true);
136 header(
'content-type: text/plain');
137 header(
'content-disposition: attachment; filename=holdings.txt');
138 echo
"title\tissn\te_issn\tstart_date\tend_date\tembargo_months\tembargo_days\tjournal_url\tvol_start\tvol_end\tiss_start\tiss_end\n";
139 while ($journal = $journals->next()) {
140 $issues = $issueDao->getPublishedIssues($journal->getId());
141 $startDate = $endDate =
null;
142 $startNumber = $endNumber =
null;
143 $startVolume = $endVolume =
null;
144 while ($issue = $issues->next()) {
145 $datePublished = $issue->getDatePublished();
146 if ($datePublished !==
null) $datePublished = strtotime($datePublished);
147 if ($startDate ===
null || $startDate > $datePublished) $startDate = $datePublished;
148 if ($endDate ===
null || $endDate < $datePublished) $endDate = $datePublished;
149 $volume = $issue->getVolume();
150 if ($startVolume ===
null || $startVolume > $volume) $startVolume = $volume;
151 if ($endVolume ===
null || $endVolume < $volume) $endVolume = $volume;
152 $number = $issue->getNumber();
153 if ($startNumber ===
null || $startNumber > $number) $startNumber = $number;
154 if ($endNumber ===
null || $endNumber < $number) $endNumber = $number;
157 echo $this->
sanitize($journal->getLocalizedName()) .
"\t";
158 echo $this->
sanitize($journal->getData(
'printIssn')) .
"\t";
159 echo $this->
sanitize($journal->getData(
'onlineIssn')) .
"\t";
160 echo $this->
sanitize($startDate===
null?
'':strftime(
'%Y-%m-%d', $startDate)) .
"\t";
161 echo $this->
sanitize($endDate===
null?
'':strftime(
'%Y-%m-%d', $endDate)) .
"\t";
164 echo
$request->url($journal->getPath()) .
"\t";
165 echo $this->
sanitize($startVolume) .
"\t";
166 echo $this->
sanitize($endVolume) .
"\t";
167 echo $this->
sanitize($startNumber) .
"\t";
168 echo $this->
sanitize($endNumber) .
"\n";