[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
controllers
/
grid
/
settings
/
sections
/
form
/
[
Home
]
File: SectionForm.php
<?php /** * @file controllers/grid/settings/sections/form/SectionForm.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 SectionForm * * @ingroup controllers_grid_settings_section_form * * @brief Form for adding/editing a section */ namespace APP\controllers\grid\settings\sections\form; use APP\core\Application; use APP\core\Request; use APP\facades\Repo; use APP\template\TemplateManager; use PKP\controllers\grid\settings\sections\form\PKPSectionForm; use PKP\db\DAORegistry; use PKP\reviewForm\ReviewFormDAO; class SectionForm extends PKPSectionForm { /** * Constructor. * * @param Request $request * @param int $sectionId optional */ public function __construct($request, $sectionId = null) { parent::__construct( $request, 'controllers/grid/settings/sections/form/sectionForm.tpl', $sectionId ); // Validation checks for this form $this->addCheck(new \PKP\form\validation\FormValidatorLocale($this, 'title', 'required', 'manager.setup.form.section.nameRequired')); $this->addCheck(new \PKP\form\validation\FormValidatorLocale($this, 'abbrev', 'required', 'manager.sections.form.abbrevRequired')); $journal = $request->getJournal(); $this->addCheck(new \PKP\form\validation\FormValidatorCustom($this, 'reviewFormId', 'optional', 'manager.sections.form.reviewFormId', [DAORegistry::getDAO('ReviewFormDAO'), 'reviewFormExists'], [Application::ASSOC_TYPE_JOURNAL, $journal->getId()])); } /** * Initialize form data from current settings. */ public function initData() { $request = Application::get()->getRequest(); $journal = $request->getJournal(); $sectionId = $this->getSectionId(); if ($sectionId) { $this->section = Repo::section()->get($sectionId, $journal->getId()); } if (isset($this->section)) { $this->setData([ 'title' => $this->section->getTitle(null), // Localized 'abbrev' => $this->section->getAbbrev(null), // Localized 'reviewFormId' => $this->section->getReviewFormId(), 'isInactive' => $this->section->getIsInactive(), 'metaIndexed' => !$this->section->getMetaIndexed(), // #2066: Inverted 'metaReviewed' => !$this->section->getMetaReviewed(), // #2066: Inverted 'abstractsNotRequired' => $this->section->getAbstractsNotRequired(), 'identifyType' => $this->section->getIdentifyType(null), // Localized 'editorRestricted' => $this->section->getEditorRestricted(), 'hideTitle' => $this->section->getHideTitle(), 'hideAuthor' => $this->section->getHideAuthor(), 'policy' => $this->section->getPolicy(null), // Localized 'wordCount' => $this->section->getAbstractWordCount(), ]); } parent::initData(); } /** * @see Form::validate() */ public function validate($callHooks = true) { // Validate if it can be inactive if ($this->getData('isInactive')) { $request = Application::get()->getRequest(); $context = $request->getContext(); $sectionId = $this->getSectionId(); $activeSections = Repo::section()->getCollector()->filterByContextIds([$context->getId()])->excludeInactive()->getMany(); $otherActiveSections = $activeSections->filter(function ($activeSection) use ($sectionId) { return $activeSection->getId() != $sectionId; }); if ($otherActiveSections->count() < 1) { $this->addError('isInactive', __('manager.sections.confirmDeactivateSection.error')); } } return parent::validate($callHooks); } /** * @copydoc Form::fetch() * * @param null|mixed $template */ public function fetch($request, $template = null, $display = false) { $templateMgr = TemplateManager::getManager($request); $templateMgr->assign('sectionId', $this->getSectionId()); $journal = $request->getContext(); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /** @var ReviewFormDAO $reviewFormDao */ $reviewForms = $reviewFormDao->getActiveByAssocId(Application::ASSOC_TYPE_JOURNAL, $journal->getId()); $reviewFormOptions = []; while ($reviewForm = $reviewForms->next()) { $reviewFormOptions[$reviewForm->getId()] = $reviewForm->getLocalizedTitle(); } $templateMgr->assign('reviewFormOptions', $reviewFormOptions); return parent::fetch($request, $template, $display); } /** * @copydoc Form::readInputData() */ public function readInputData() { parent::readInputData(); $this->readUserVars(['abbrev', 'policy', 'reviewFormId', 'identifyType', 'isInactive', 'metaIndexed', 'metaReviewed', 'abstractsNotRequired', 'editorRestricted', 'hideTitle', 'hideAuthor', 'wordCount']); } /** * Get the names of fields for which localized data is allowed. * * @return array */ public function getLocaleFieldNames() { return ['title', 'policy', 'abbrev', 'identifyType']; } /** * Save section. */ public function execute(...$functionArgs) { $request = Application::get()->getRequest(); $journal = $request->getJournal(); // Get or create the section object if ($this->getSectionId()) { $section = Repo::section()->get($this->getSectionId(), $journal->getId()); } else { $section = Repo::section()->newDataObject(); $section->setContextId($journal->getId()); } // Populate/update the section object from the form $section->setTitle($this->getData('title'), null); // Localized $section->setAbbrev($this->getData('abbrev'), null); // Localized $reviewFormId = $this->getData('reviewFormId'); if (!$reviewFormId) { $reviewFormId = null; } $section->setReviewFormId($reviewFormId); $section->setIsInactive($this->getData('isInactive') ? 1 : 0); $section->setMetaIndexed($this->getData('metaIndexed') ? 0 : 1); // #2066: Inverted $section->setMetaReviewed($this->getData('metaReviewed') ? 0 : 1); // #2066: Inverted $section->setAbstractsNotRequired($this->getData('abstractsNotRequired') ? 1 : 0); $section->setIdentifyType($this->getData('identifyType'), null); // Localized $section->setEditorRestricted($this->getData('editorRestricted') ? 1 : 0); $section->setHideTitle($this->getData('hideTitle') ? 1 : 0); $section->setHideAuthor($this->getData('hideAuthor') ? 1 : 0); $section->setPolicy($this->getData('policy'), null); // Localized $section->setAbstractWordCount((int) $this->getData('wordCount')); // Insert or update the section in the DB if ($this->getSectionId()) { Repo::section()->edit($section, []); } else { $section->setSequence(REALLY_BIG_NUMBER); $sectionId = Repo::section()->add($section); $this->setSectionId($sectionId); Repo::section()->resequence($journal->getId()); } return parent::execute(...$functionArgs); } }