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/issue/maps/Schema.php * * Copyright (c) 2014-2023 Simon Fraser University * Copyright (c) 2003-2023 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class Schema * * @brief Map sections to the properties defined in the issue schema */ namespace APP\issue\maps; use APP\core\Application; use APP\facades\Repo; use APP\issue\Issue; use APP\issue\IssueGalleyDAO; use APP\journal\Journal; use Illuminate\Support\Enumerable; use Illuminate\Support\LazyCollection; use PKP\db\DAORegistry; use PKP\services\PKPSchemaService; use PKP\submission\Genre; use PKP\userGroup\UserGroup; class Schema extends \PKP\core\maps\Schema { /** @copydoc \PKP\core\maps\Schema::$collection */ public Enumerable $collection; /** @copydoc \PKP\core\maps\Schema::$schema */ public string $schema = PKPSchemaService::SCHEMA_ISSUE; /** @var LazyCollection<int,UserGroup> The user groups for this context. */ public LazyCollection $userGroups; /** @var Genre[] The genres for this context. */ public array $genres; /** * Map an Issue * * Includes all properties in the Issue schema * * @param LazyCollection<int,UserGroup> $userGroups The user groups of this content * @param Genre[] $genres The genres of this context */ public function map(Issue $item, Journal $context, LazyCollection $userGroups, array $genres): array { $this->userGroups = $userGroups; $this->genres = $genres; return $this->mapByProperties($this->getProps(), $item); } /** * Summarize an Issue * * Includes properties with the apiSummary flag in the Issue schema. * */ public function summarize(Issue $item, Journal $context): array { $this->context = $context; return $this->mapByProperties($this->getSummaryProps(), $item); } /** * Map a collection of Issues * * @see self::map * * @param LazyCollection<int,UserGroup> $userGroups The user groups of this content * @param Genre[] $genres The genres of this context */ public function mapMany(Enumerable $collection, Journal $context, LazyCollection $userGroups, array $genres): Enumerable { $this->collection = $collection; return $collection->map(function ($item) use ($context, $userGroups, $genres) { return $this->map($item, $context, $userGroups, $genres); }); } /** * Summarize a collection of Issues * * @see self::summarize */ public function summarizeMany(Enumerable $collection, Journal $context): Enumerable { $this->collection = $collection; return $collection->map(function ($item) use ($context) { return $this->summarize($item, $context); }); } /** * Map schema properties of an Issue to an assoc array * */ private function mapByProperties(array $props, Issue $issue): array { $output = []; foreach ($props as $prop) { switch ($prop) { case '_href': $output[$prop] = $this->getApiUrl('issues/' . $issue->getId(), $this->context->getData('urlPath')); break; case 'articles': $data = []; $submissions = Repo::submission() ->getCollector() ->filterByContextIds([$issue->getJournalId()]) ->filterByIssueIds([$issue->getId()]) ->getMany(); foreach ($submissions as $submission) { $data[] = Repo::submission()->getSchemaMap()->summarize($submission, $this->userGroups, $this->genres); } $output[$prop] = $data; break; case 'coverImageUrl': $output[$prop] = $issue->getCoverImageUrls(); break; case 'doiObject': if ($issue->getData('doiObject')) { $retVal = Repo::doi()->getSchemaMap()->summarize($issue->getData('doiObject')); } else { $retVal = null; } $output[$prop] = $retVal; break; case 'galleys': $data = []; /** @var IssueGalleyDAO $issueGalleyDao */ $issueGalleyDao = DAORegistry::getDAO('IssueGalleyDAO'); $galleys = $issueGalleyDao->getByIssueId($issue->getId()); if (!empty($galleys)) { $request = Application::get()->getRequest(); foreach ($galleys as $galley) { $data[] = [ 'fileId' => $galley->getData('fileId'), 'label' => $galley->getData('label'), 'locale' => $galley->getData('locale'), 'pub-id::publisher-id' => $galley->getData('pub-id::publisher-id'), 'sequence' => $galley->getData('sequence'), 'urlPublished' => $request->getDispatcher()->url( $request, Application::ROUTE_PAGE, $this->context->getPath(), 'issue', 'view', [ $galley->getIssueId(), $galley->getId() ] ), 'urlRemote' => $galley->getData('urlRemote'), ]; } } $output[$prop] = $data; break; case 'publishedUrl': $output['publishedUrl'] = $this->request->getDispatcher()->url( $this->request, Application::ROUTE_PAGE, $this->context->getPath(), 'issue', 'view', $issue->getId() ); break; case 'sections': $data = []; $sections = Repo::section()->getByIssueId($issue->getId()); if (!empty($sections)) { $seq = 1; foreach ($sections as $section) { $sectionProperties = Repo::section()->getSchemaMap()->summarize($section); $sectionProperties['seq'] = $seq; $seq++; $data[] = $sectionProperties; } } $output[$prop] = $data; break; case 'identification': $output[$prop] = $issue->getIssueIdentification(); break; default: $output[$prop] = $issue->getData($prop); } } return $output; } /** * Map an issue with only the issue identification for the stats list */ public function mapToStats(Issue $issue): array { $props = $this->mapByProperties([ '_href', 'id', 'identification', 'publishedUrl' ], $issue); return $props; } }
Simpan