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 classes/services/SubmissionService.php * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2000-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class SubmissionService * @ingroup services * * @brief Extends the base submission helper service class with app-specific * requirements. */ namespace APP\Services; use \Application; use \DAORegistry; use \PKP\Services\PKPSubmissionService; use \Services; use \Submission; class SubmissionService extends PKPSubmissionService { /** * Initialize hooks for extending PKPSubmissionService */ public function __construct() { \HookRegistry::register('API::submissions::params', array($this, 'modifyAPISubmissionsParams')); \HookRegistry::register('Submission::getMany::queryBuilder', array($this, 'modifySubmissionQueryBuilder')); \HookRegistry::register('Submission::getMany::queryObject', array($this, 'modifySubmissionListQueryObject')); \HookRegistry::register('Submission::getProperties::values', array($this, 'modifyPropertyValues')); } /** * @copydoc PKPSubmissionService::updateStatus() */ public function updateStatus($submission) { $oldStatus = $submission->getData('status'); $submission = parent::updateStatus($submission); $newStatus = $submission->getData('status'); // Add or remove tombstones when submission is published or unpublished if ($newStatus === STATUS_PUBLISHED && $newStatus !== $oldStatus) { $tombstoneDao = DAORegistry::getDAO('DataObjectTombstoneDAO'); /* @var $tombstoneDao DataObjectTombstoneDAO */ $tombstoneDao->deleteByDataObjectId($submission->getId()); } elseif ($oldStatus === STATUS_PUBLISHED && $newStatus !== $oldStatus) { $requestContext = Application::get()->getRequest()->getContext(); if ($requestContext && $requestContext->getId() === $submission->getData('contextId')) { $context = $requestContext; } else { $context = Services::get('context')->get($submission->getData('contextId')); } import('classes.article.ArticleTombstoneManager'); $articleTombstoneManager = new \ArticleTombstoneManager(); $articleTombstoneManager->insertArticleTombstone($submission, $context); } return $submission; } /** * Collect and sanitize request params for submissions API endpoint * * @param $hookName string * @param $args array [ * @option array $returnParams * @option SlimRequest $slimRequest * ] * * @return array */ public function modifyAPISubmissionsParams($hookName, $args) { $returnParams =& $args[0]; $slimRequest = $args[1]; $requestParams = $slimRequest->getQueryParams(); foreach ($requestParams as $param => $value) { switch ($param) { case 'issueIds': case 'sectionIds': if (is_string($value) && strpos($value, ',') > -1) { $value = explode(',', $value); } elseif (!is_array($value)) { $value = array($value); } $returnParams[$param] = array_map('intval', $value); } } } /** * Run app-specific query builder methods for getMany * * @param $hookName string * @param $args array [ * @option \APP\Services\QueryBuilders\SubmissionQueryBuilder * @option int Context ID * @option array Request args * ] * * @return \APP\Services\QueryBuilders\SubmissionQueryBuilder */ public function modifySubmissionQueryBuilder($hookName, $args) { $submissionQB =& $args[0]; $requestArgs = $args[1]; if (!empty($requestArgs['sectionIds'])) { $submissionQB->filterBySections($requestArgs['sectionIds']); } if (!empty($requestArgs['issueIds'])) { $submissionQB->filterByIssues($requestArgs['issueIds']); } } /** * Add app-specific query statements to the list get query * * @param $hookName string * @param $args array [ * @option object $queryObject * @option \APP\Services\QueryBuilders\SubmissionQueryBuilder $queryBuilder * ] * * @return object */ public function modifySubmissionListQueryObject($hookName, $args) { $queryObject =& $args[0]; $queryBuilder = $args[1]; $queryObject = $queryBuilder->appGet($queryObject); } /** * Add app-specific property values to a submission * * @param $hookName string Submission::getProperties::values * @param $args array [ * @option $values array Key/value store of property values * @option $submission Submission The associated submission * @option $props array Requested properties * @option $args array Request args * ] * * @return array */ public function modifyPropertyValues($hookName, $args) { $values =& $args[0]; $submission = $args[1]; $props = $args[2]; $request = $args[3]['request']; $context = $request->getContext(); $dispatcher = $request->getDispatcher(); foreach ($props as $prop) { switch ($prop) { case 'urlPublished': $values[$prop] = $dispatcher->url( $request, ROUTE_PAGE, $context->getPath(), 'article', 'view', $submission->getBestId() ); break; } } } /** * Get submissions ordered by section id * * This method replaces PublishedSubmissionDAO::getPublishedSubmissionsInSections() * which was removed with v3.2. * * @param int $issueId * @param int $contextId * @return array submissions keyed to a section with some section details */ public function getInSections($issueId, $contextId) { import('lib.pkp.classes.submission.PKPSubmission'); // STATUS_... $submissions = $this->getMany([ 'contextId' => $contextId, 'issueIds' => $issueId, 'status' => [STATUS_PUBLISHED, STATUS_SCHEDULED], 'orderBy' => 'seq', 'orderDirection' => 'ASC', ]); $bySections = []; foreach ($submissions as $submission) { $sectionId = $submission->getCurrentPublication()->getData('sectionId'); if (empty($bySections[$sectionId])) { $section = \Application::get()->getSectionDao()->getById($sectionId); $bySections[$sectionId] = [ 'articles' => [], 'title' => $section->getData('hideTitle') ? '' : $section->getLocalizedData('title'), 'abstractsNotRequired' => $section->getData('abstractsNotRequired'), 'hideAuthor' => $section->getData('hideAuthor'), ]; } $bySections[$sectionId]['articles'][] = $submission; } return $bySections; } }
Simpan