16 define(
'DRIVER_ACCESS_OPEN', 0);
17 define(
'DRIVER_ACCESS_CLOSED', 1);
18 define(
'DRIVER_ACCESS_EMBARGOED', 2);
19 define(
'DRIVER_ACCESS_DELAYED', 3);
20 define(
'DRIVER_ACCESS_RESTRICTED', 4);
22 import(
'lib.pkp.classes.plugins.GenericPlugin');
29 function register($category, $path, $mainContextId =
null) {
30 $success = parent::register($category, $path, $mainContextId);
31 if ($success && $this->
getEnabled($mainContextId)) {
32 $this->
import(
'DRIVERDAO');
44 HookRegistry::register(
'ArticleTombstoneManager::insertArticleTombstone', array($this,
'insertDRIVERArticleTombstone'));
50 return __(
'plugins.generic.driver.displayName');
54 return __(
'plugins.generic.driver.description');
64 function sets($hookName, $params) {
66 array_push($sets,
new OAISet(
'driver',
'Open Access DRIVERset',
''));
74 $journalOAI =& $params[0];
81 $records =& $params[7];
84 if (isset($set) && $set ==
'driver') {
86 $driverDao->setOAI($journalOAI);
87 if ($hookName ==
'JournalOAI::records') {
88 $funcName =
'_returnRecordFromRow';
89 }
else if ($hookName ==
'JournalOAI::identifiers') {
90 $funcName =
'_returnIdentifierFromRow';
92 $journalId = $journalOAI->journalId;
93 $records = $driverDao->getDRIVERRecordsOrIdentifiers(array($journalId,
null), $from, $until, $offset, $limit, $total, $funcName);
103 $record =& $params[0];
107 $record->sets[] =
'driver';
116 $articleTombstone =& $params[0];
118 if ($this->
isDRIVERArticle($articleTombstone->getOAISetObjectId(ASSOC_TYPE_JOURNAL), $articleTombstone->getDataObjectId())) {
120 $dataObjectTombstoneSettingsDao->updateSetting($articleTombstone->getId(),
'driver',
true,
'bool');
132 if (!isset($row[
'tombstone_id'])) {
136 $journal = $journalDao->getById($row[
'journal_id']);
137 $submission =
Services::get(
'submission')->get($row[
'submission_id']);
138 $publication = $submission->getCurrentPublication();
139 $issue = $issueDao->getById($publication->getData(
'issueId'));
143 if ($journal->getData(
'publishingMode') == PUBLISHING_MODE_OPEN) {
144 $status = DRIVER_ACCESS_OPEN;
145 }
else if ($journal->getData(
'publishingMode') == PUBLISHING_MODE_SUBSCRIPTION) {
146 if ($issue->getAccessStatus() == 0 || $issue->getAccessStatus() == ISSUE_ACCESS_OPEN) {
147 $status = DRIVER_ACCESS_OPEN;
148 }
else if ($issue->getAccessStatus() == ISSUE_ACCESS_SUBSCRIPTION) {
149 if ($publication->getData(
'accessStatus') == ARTICLE_ACCESS_OPEN) {
150 $status = DRIVER_ACCESS_OPEN;
151 }
else if ($issue->getAccessStatus() == ISSUE_ACCESS_SUBSCRIPTION && $issue->getOpenAccessDate() != NULL) {
152 $status = DRIVER_ACCESS_EMBARGOED;
153 }
else if ($issue->getAccessStatus() == ISSUE_ACCESS_SUBSCRIPTION && $issue->getOpenAccessDate() == NULL) {
154 $status = DRIVER_ACCESS_CLOSED;
158 if ($journal->getData(
'restrictSiteAccess') == 1 || $journal->getData(
'restrictArticleAccess') == 1) {
159 $status = DRIVER_ACCESS_RESTRICTED;
162 if ($status == DRIVER_ACCESS_EMBARGOED && date(
'Y-m-d') >= date(
'Y-m-d', strtotime($issue->getOpenAccessDate()))) {
163 $status = DRIVER_ACCESS_DELAYED;
167 $galleys = $submission->getGalleys();
168 if (!empty($galleys)) {
169 return $status == DRIVER_ACCESS_OPEN;
174 return $dataObjectTombstoneSettingsDao->getSetting($row[
'tombstone_id'],
'driver');
188 $journal = $journalDao->getById($journalId);
190 $publication = $submission->getCurrentPublication();
191 $issue = $issueDao->getById($publication->getData(
'issueId'));
195 if ($journal->getData(
'publishingMode') == PUBLISHING_MODE_OPEN) {
196 $status = DRIVER_ACCESS_OPEN;
197 }
else if ($journal->getData(
'publishingMode') == PUBLISHING_MODE_SUBSCRIPTION) {
198 if ($issue->getAccessStatus() == 0 || $issue->getAccessStatus() == ISSUE_ACCESS_OPEN) {
199 $status = DRIVER_ACCESS_OPEN;
200 }
else if ($issue->getAccessStatus() == ISSUE_ACCESS_SUBSCRIPTION) {
201 if ($publication->getData(
'accessStatus') == ARTICLE_ACCESS_OPEN) {
202 $status = DRIVER_ACCESS_OPEN;
203 }
else if ($issue->getAccessStatus() == ISSUE_ACCESS_SUBSCRIPTION && $issue->getOpenAccessDate() != NULL) {
204 $status = DRIVER_ACCESS_EMBARGOED;
205 }
else if ($issue->getAccessStatus() == ISSUE_ACCESS_SUBSCRIPTION && $issue->getOpenAccessDate() == NULL) {
206 $status = DRIVER_ACCESS_CLOSED;
210 if ($journal->getData(
'restrictSiteAccess') == 1 || $journal->getData(
'restrictArticleAccess') == 1) {
211 $status = DRIVER_ACCESS_RESTRICTED;
214 if ($status == DRIVER_ACCESS_EMBARGOED && date(
'Y-m-d') >= date(
'Y-m-d', strtotime($issue->getOpenAccessDate()))) {
215 $status = DRIVER_ACCESS_DELAYED;
219 $galleys = $submission->getGalleys();
220 if (!empty($galleys)) {
221 return $status == DRIVER_ACCESS_OPEN;