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/GalleyService.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 GalleyService * @ingroup services * * @brief Helper class that encapsulates galley business logic */ namespace APP\Services; use \DBResultRange; use \DAOResultFactory; use \DAORegistry; use \Services; use \PKP\Services\interfaces\EntityPropertyInterface; use \PKP\Services\interfaces\EntityReadInterface; use \PKP\Services\interfaces\EntityWriteInterface; use \APP\Services\QueryBuilders\GalleyQueryBuilder; class GalleyService implements EntityReadInterface, EntityWriteInterface, EntityPropertyInterface { /** * @copydoc \PKP\Services\interfaces\EntityReadInterface::get() */ public function get($galleyId) { $articleGalleyDao = DAORegistry::getDAO('ArticleGalleyDAO'); /* @var $articleGalleyDao ArticleGalleyDAO */ return $articleGalleyDao->getById($galleyId); } /** * @copydoc \PKP\Services\interfaces\EntityReadInterface::getCount() */ public function getCount($args = []) { return $this->getQueryBuilder($args)->getCount(); } /** * @copydoc \PKP\Services\interfaces\EntityReadInterface::getIds() */ public function getIds($args = []) { return $this->getQueryBuilder($args)->getIds(); } /** * Get a collection of Galley objects limited, filtered * and sorted by $args * * @param array $args { * @option int|array publicationIds * } * @return \Iterator */ public function getMany($args = []) { $galleyQO = $this->getQueryBuilder($args)->getQuery(); $galleyDao = DAORegistry::getDAO('ArticleGalleyDAO'); /* @var $galleyDao ArticleGalleyDAO */ $result = $galleyDao->retrieveRange($galleyQO->toSql(), $galleyQO->getBindings()); $queryResults = new DAOResultFactory($result, $galleyDao, '_fromRow'); return $queryResults->toIterator(); } /** * @copydoc \PKP\Services\interfaces\EntityReadInterface::getMax() */ public function getMax($args = []) { // Count/offset is not supported so getMax is always // the same as getCount return $this->getCount(); } /** * @copydoc \PKP\Services\interfaces\EntityReadInterface::getQueryBuilder() * @return GalleyQueryBuilder */ public function getQueryBuilder($args = []) { $galleyQB = new GalleyQueryBuilder(); if (!empty($args['publicationIds'])) { $galleyQB->filterByPublicationIds($args['publicationIds']); } \HookRegistry::call('Galley::getMany::queryBuilder', array(&$galleyQB, $args)); return $galleyQB; } /** * @copydoc \PKP\Services\interfaces\EntityPropertyInterface::getProperties() */ public function getProperties($galley, $props, $args = null) { $request = $args['request']; $context = $request->getContext(); $dispatcher = $request->getDispatcher(); if (is_a($galley, 'ArticleGalley')) { $publication = !empty($args['publication']) ? $args['publication'] : $args['publication'] = Services::get('publication')->get($galley->getData('publicationId')); $submission = !empty($args['submission']) ? $args['submission'] : $args['submission'] = Services::get('submission')->get($publication->getData('submissionId')); } $values = []; foreach ($props as $prop) { switch ($prop) { case 'urlPublished': if (is_a($galley, 'IssueGalley')) { $values[$prop] = $dispatcher->url( $request, ROUTE_PAGE, $context->getPath(), 'issue', 'view', [ $galley->getIssueId(), $galley->getId() ] ); } else { $values[$prop] = $dispatcher->url( $request, ROUTE_PAGE, $context->getPath(), 'article', 'view', [ $submission->getBestId(), 'version', $publication->getId(), $galley->getBestGalleyId(), ] ); } break; case 'file': $values[$prop] = null; if (is_a($galley, 'ArticleGalley')) { $submissionFile = Services::get('submissionFile')->get($galley->getData('submissionFileId')); if (empty($submissionFile)) { break; } $values[$prop] = Services::get('submissionFile')->getFullProperties($submissionFile, [ 'request' => $request, 'submission' => $submission, ]); } break; default: $values[$prop] = $galley->getData($prop); break; } } $values = Services::get('schema')->addMissingMultilingualValues(SCHEMA_GALLEY, $values, $context->getSupportedSubmissionLocales()); \HookRegistry::call('Galley::getProperties::values', array(&$values, $galley, $props, $args)); ksort($values); return $values; } /** * @copydoc \PKP\Services\interfaces\EntityPropertyInterface::getSummaryProperties() */ public function getSummaryProperties($galley, $args = null) { $props = Services::get('schema')->getSummaryProps(SCHEMA_GALLEY); return $this->getProperties($galley, $props, $args); } /** * @copydoc \PKP\Services\interfaces\EntityPropertyInterface::getFullProperties() */ public function getFullProperties($galley, $args = null) { $props = Services::get('schema')->getFullProps(SCHEMA_GALLEY); return $this->getProperties($galley, $props, $args); } /** * @copydoc \PKP\Services\EntityProperties\EntityWriteInterface::validate() */ public function validate($action, $props, $allowedLocales, $primaryLocale) { $schemaService = Services::get('schema'); import('lib.pkp.classes.validation.ValidatorFactory'); $validator = \ValidatorFactory::make( $props, $schemaService->getValidationRules(SCHEMA_GALLEY, $allowedLocales), [ 'locale.regex' => __('validator.localeKey'), 'urlPath.regex' => __('validator.alpha_dash_period'), ] ); // Check required fields \ValidatorFactory::required( $validator, $action, $schemaService->getRequiredProps(SCHEMA_GALLEY), $schemaService->getMultilingualProps(SCHEMA_GALLEY), $allowedLocales, $primaryLocale ); // Check for input from disallowed locales \ValidatorFactory::allowedLocales($validator, $schemaService->getMultilingualProps(SCHEMA_GALLEY), $allowedLocales); // The publicationId must match an existing publication that is not yet published $validator->after(function($validator) use ($props) { if (isset($props['publicationId']) && !$validator->errors()->get('publicationId')) { $publication = Services::get('publication')->get($props['publicationId']); if (!$publication) { $validator->errors()->add('publicationId', __('galley.publicationNotFound')); } else if (Services::get('publication')->isPublished($publication)) { $validator->errors()->add('publicationId', __('galley.editPublishedDisabled')); } } }); if ($validator->fails()) { $errors = $schemaService->formatValidationErrors($validator->errors(), $schemaService->get(SCHEMA_GALLEY), $allowedLocales); } \HookRegistry::call('Galley::validate', array(&$errors, $action, $props, $allowedLocales, $primaryLocale)); return $errors; } /** * @copydoc \PKP\Services\EntityProperties\EntityWriteInterface::add() */ public function add($galley, $request) { $articleGalleyDao = DAORegistry::getDAO('ArticleGalleyDAO'); /* @var $articleGalleyDao ArticleGalleyDAO */ $galleyId = $articleGalleyDao->insertObject($galley); $galley = $this->get($galleyId); \HookRegistry::call('Galley::add', array(&$galley, $request)); return $galley; } /** * @copydoc \PKP\Services\EntityProperties\EntityWriteInterface::edit() */ public function edit($galley, $params, $request) { $galleyDao = DAORegistry::getDAO('ArticleGalleyDAO'); /* @var $galleyDao ArticleGalleyDAO */ $newGalley = $galleyDao->newDataObject(); $newGalley->_data = array_merge($galley->_data, $params); \HookRegistry::call('Galley::edit', array(&$newGalley, $galley, $params, $request)); $galleyDao->updateObject($newGalley); $newGalley = $this->get($newGalley->getId()); return $newGalley; } /** * @copydoc \PKP\Services\EntityProperties\EntityWriteInterface::delete() */ public function delete($galley) { \HookRegistry::call('Galley::delete::before', [&$galley]); $articleGalleyDao = DAORegistry::getDAO('ArticleGalleyDAO'); /* @var $articleGalleyDao ArticleGalleyDAO */ $articleGalleyDao->deleteObject($galley); // Delete related submission files $submissionFilesIterator = Services::get('submissionFile')->getMany([ 'assocTypes' => [ASSOC_TYPE_GALLEY], 'assocIds' => [$galley->getId()], ]); foreach ($submissionFilesIterator as $submissionFile) { Services::get('submissionFile')->delete($submissionFile); } \HookRegistry::call('Galley::delete', [&$galley]); } }
Simpan