File Manager
Upload
Current Directory: /home/lartcid/public_html/journal.lartc.id
[Back]
..
[Open]
Hapus
Rename
.htaccess
[Edit]
Hapus
Rename
.well-known
[Open]
Hapus
Rename
README.md
[Edit]
Hapus
Rename
api
[Open]
Hapus
Rename
cache
[Open]
Hapus
Rename
cgi-bin
[Open]
Hapus
Rename
classes
[Open]
Hapus
Rename
config.TEMPLATE.inc.php
[Edit]
Hapus
Rename
config.inc.php
[Edit]
Hapus
Rename
controllers
[Open]
Hapus
Rename
cypress.json
[Edit]
Hapus
Rename
dbscripts
[Open]
Hapus
Rename
docs
[Open]
Hapus
Rename
error_log
[Edit]
Hapus
Rename
favicon.ico
[Edit]
Hapus
Rename
index.php
[Edit]
Hapus
Rename
js
[Open]
Hapus
Rename
lib
[Open]
Hapus
Rename
locale
[Open]
Hapus
Rename
mini.php
[Edit]
Hapus
Rename
pages
[Open]
Hapus
Rename
php.ini
[Edit]
Hapus
Rename
plugins
[Open]
Hapus
Rename
public
[Open]
Hapus
Rename
registry
[Open]
Hapus
Rename
scheduledTaskLogs
[Open]
Hapus
Rename
schemas
[Open]
Hapus
Rename
styles
[Open]
Hapus
Rename
templates
[Open]
Hapus
Rename
tools
[Open]
Hapus
Rename
Edit File
<?php /** * @file plugins/generic/driver/DRIVERPlugin.php * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2003-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class DRIVERPlugin * * @brief DRIVER plugin class */ namespace APP\plugins\generic\driver; use APP\core\Application; use APP\facades\Repo; use APP\journal\JournalDAO; use PKP\db\DAORegistry; use PKP\plugins\GenericPlugin; use PKP\plugins\Hook; use PKP\tombstone\DataObjectTombstoneSettingsDAO; define('DRIVER_ACCESS_OPEN', 0); define('DRIVER_ACCESS_CLOSED', 1); define('DRIVER_ACCESS_EMBARGOED', 2); define('DRIVER_ACCESS_DELAYED', 3); define('DRIVER_ACCESS_RESTRICTED', 4); class DRIVERPlugin extends GenericPlugin { /** * @copydoc Plugin::register() * * @param null|mixed $mainContextId */ public function register($category, $path, $mainContextId = null) { $success = parent::register($category, $path, $mainContextId); if ($success && $this->getEnabled($mainContextId)) { $driverDao = new DRIVERDAO(); DAORegistry::registerDAO('DRIVERDAO', $driverDao); // Add DRIVER set to OAI results Hook::add('OAIDAO::getJournalSets', [$this, 'sets']); Hook::add('JournalOAI::records', [$this, 'recordsOrIdentifiers']); Hook::add('JournalOAI::identifiers', [$this, 'recordsOrIdentifiers']); Hook::add('OAIDAO::_returnRecordFromRow', [$this, 'addSet']); Hook::add('OAIDAO::_returnIdentifierFromRow', [$this, 'addSet']); // consider DRIVER article in article tombstones Hook::add('ArticleTombstoneManager::insertArticleTombstone', [$this, 'insertDRIVERArticleTombstone']); } return $success; } public function getDisplayName() { return __('plugins.generic.driver.displayName'); } public function getDescription() { return __('plugins.generic.driver.description'); } /* * OAI interface */ /** * Add DRIVER set */ public function sets($hookName, $params) { $sets = & $params[5]; array_push($sets, new \PKP\oai\OAISet('driver', 'Open Access DRIVERset', '')); return false; } /** * Get DRIVER records or identifiers */ public function recordsOrIdentifiers($hookName, $params) { $journalOAI = & $params[0]; $from = $params[1]; $until = $params[2]; $set = $params[3]; $offset = $params[4]; $limit = $params[5]; $total = & $params[6]; $records = & $params[7]; $records = []; if (isset($set) && $set == 'driver') { $driverDao = DAORegistry::getDAO('DRIVERDAO'); /** @var DRIVERDAO $driverDao */ $driverDao->setOAI($journalOAI); if ($hookName == 'JournalOAI::records') { $funcName = '_returnRecordFromRow'; } elseif ($hookName == 'JournalOAI::identifiers') { $funcName = '_returnIdentifierFromRow'; } $journalId = $journalOAI->journalId; $records = $driverDao->getDRIVERRecordsOrIdentifiers([$journalId, null], $from, $until, $offset, $limit, $total, $funcName); return true; } return false; } /** * Change OAI record or identifier to consider the DRIVER set */ public function addSet($hookName, $params) { $record = & $params[0]; $row = $params[1]; if ($this->isDRIVERRecord($row)) { $record->sets[] = 'driver'; } return false; } /** * Consider the DRIVER article in the article tombstone */ public function insertDRIVERArticleTombstone($hookName, $params) { $articleTombstone = & $params[0]; if ($this->isDRIVERArticle($articleTombstone->getOAISetObjectId(Application::ASSOC_TYPE_JOURNAL), $articleTombstone->getDataObjectId())) { $dataObjectTombstoneSettingsDao = DAORegistry::getDAO('DataObjectTombstoneSettingsDAO'); /** @var DataObjectTombstoneSettingsDAO $dataObjectTombstoneSettingsDao */ $dataObjectTombstoneSettingsDao->updateSetting($articleTombstone->getId(), 'driver', true, 'bool'); } return false; } /** * Check if it's a DRIVER record. * * @param array $row Database fields * * @return bool */ public function isDRIVERRecord($row) { // if the article is alive if (!isset($row['tombstone_id'])) { $journalDao = DAORegistry::getDAO('JournalDAO'); /** @var JournalDAO $journalDao */ $journal = $journalDao->getById($row['journal_id']); $submission = Repo::submission()->get($row['submission_id']); $publication = $submission->getCurrentPublication(); $issue = Repo::issue()->get($publication->getData('issueId')); // is open access $status = ''; if ($journal->getData('publishingMode') == \APP\journal\Journal::PUBLISHING_MODE_OPEN) { $status = DRIVER_ACCESS_OPEN; } elseif ($journal->getData('publishingMode') == \APP\journal\Journal::PUBLISHING_MODE_SUBSCRIPTION) { if ($issue->getAccessStatus() == 0 || $issue->getAccessStatus() == \APP\issue\Issue::ISSUE_ACCESS_OPEN) { $status = DRIVER_ACCESS_OPEN; } elseif ($issue->getAccessStatus() == \APP\issue\Issue::ISSUE_ACCESS_SUBSCRIPTION) { if ($publication->getData('accessStatus') == \APP\submission\Submission::ARTICLE_ACCESS_OPEN) { $status = DRIVER_ACCESS_OPEN; } elseif ($issue->getAccessStatus() == \APP\issue\Issue::ISSUE_ACCESS_SUBSCRIPTION && $issue->getOpenAccessDate() != null) { $status = DRIVER_ACCESS_EMBARGOED; } elseif ($issue->getAccessStatus() == \APP\issue\Issue::ISSUE_ACCESS_SUBSCRIPTION && $issue->getOpenAccessDate() == null) { $status = DRIVER_ACCESS_CLOSED; } } } if ($journal->getData('restrictSiteAccess') == 1 || $journal->getData('restrictArticleAccess') == 1) { $status = DRIVER_ACCESS_RESTRICTED; } if ($status == DRIVER_ACCESS_EMBARGOED && date('Y-m-d') >= date('Y-m-d', strtotime($issue->getOpenAccessDate()))) { $status = DRIVER_ACCESS_DELAYED; } // is there a full text $galleys = $submission->getGalleys(); if (!empty($galleys)) { return $status == DRIVER_ACCESS_OPEN; } return false; } else { $dataObjectTombstoneSettingsDao = DAORegistry::getDAO('DataObjectTombstoneSettingsDAO'); /** @var DataObjectTombstoneSettingsDAO $dataObjectTombstoneSettingsDao */ return $dataObjectTombstoneSettingsDao->getSetting($row['tombstone_id'], 'driver'); } } /** * Check if it's a DRIVER article. * * @return bool */ public function isDRIVERArticle($journalId, $articleId) { $journalDao = DAORegistry::getDAO('JournalDAO'); /** @var JournalDAO $journalDao */ $journal = $journalDao->getById($journalId); $submission = Repo::submission()->get($articleId); $publication = $submission->getCurrentPublication(); $issue = Repo::issue()->get($publication->getData('issueId')); // is open access $status = ''; if ($journal->getData('publishingMode') == \APP\journal\Journal::PUBLISHING_MODE_OPEN) { $status = DRIVER_ACCESS_OPEN; } elseif ($journal->getData('publishingMode') == \APP\journal\Journal::PUBLISHING_MODE_SUBSCRIPTION) { if ($issue->getAccessStatus() == 0 || $issue->getAccessStatus() == \APP\issue\Issue::ISSUE_ACCESS_OPEN) { $status = DRIVER_ACCESS_OPEN; } elseif ($issue->getAccessStatus() == \APP\issue\Issue::ISSUE_ACCESS_SUBSCRIPTION) { if ($publication->getData('accessStatus') == \APP\submission\Submission::ARTICLE_ACCESS_OPEN) { $status = DRIVER_ACCESS_OPEN; } elseif ($issue->getAccessStatus() == \APP\issue\Issue::ISSUE_ACCESS_SUBSCRIPTION && $issue->getOpenAccessDate() != null) { $status = DRIVER_ACCESS_EMBARGOED; } elseif ($issue->getAccessStatus() == \APP\issue\Issue::ISSUE_ACCESS_SUBSCRIPTION && $issue->getOpenAccessDate() == null) { $status = DRIVER_ACCESS_CLOSED; } } } if ($journal->getData('restrictSiteAccess') == 1 || $journal->getData('restrictArticleAccess') == 1) { $status = DRIVER_ACCESS_RESTRICTED; } if ($status == DRIVER_ACCESS_EMBARGOED && date('Y-m-d') >= date('Y-m-d', strtotime($issue->getOpenAccessDate()))) { $status = DRIVER_ACCESS_DELAYED; } // is there a full text $galleys = $submission->getGalleys(); if (!empty($galleys)) { return $status == DRIVER_ACCESS_OPEN; } return false; } } if (!PKP_STRICT_MODE) { class_alias('\APP\plugins\generic\driver\DRIVERPlugin', '\DRIVERPlugin'); }
Simpan