16 import(
'lib.pkp.classes.controllers.grid.CategoryGridHandler');
17 import(
'controllers.grid.toc.TocGridCategoryRow');
18 import(
'controllers.grid.toc.TocGridRow');
27 parent::__construct();
29 array(ROLE_ID_MANAGER),
30 array(
'fetchGrid',
'fetchCategory',
'fetchRow',
'saveSequence',
'removeArticle',
'setAccessStatus')
32 $this->submissionsBySectionId = array();
42 function authorize($request, &$args, $roleAssignments) {
43 import(
'lib.pkp.classes.security.authorization.ContextAccessPolicy');
46 import(
'classes.security.authorization.OjsIssueRequiredPolicy');
49 return parent::authorize($request, $args, $roleAssignments);
56 parent::initialize($request, $args);
63 import(
'controllers.grid.toc.TocGridCellProvider');
78 if ($request->getJournal()->getData(
'publishingMode') == PUBLISHING_MODE_SUBSCRIPTION && $issue->getAccessStatus() == ISSUE_ACCESS_SUBSCRIPTION) {
85 'controllers/grid/common/cell/selectStatusCell.tpl',
87 array(
'width' => 20,
'alignment' => COLUMN_ALIGNMENT_CENTER)
113 parent::getRequestArgs(),
114 array(
'issueId' => $issue->getId())
138 return $this->submissionsBySectionId[$section->getId()];
146 import(
'lib.pkp.classes.submission.PKPSubmission');
147 $submissionsInSections =
Services::get(
'submission')->getInSections($issue->getId(), $request->getContext()->getId());
148 foreach ($submissionsInSections as $sectionId => $articles) {
149 foreach($articles[
'articles'] as $article) {
150 $this->submissionsBySectionId[$sectionId][$article->getId()] = $article;
153 $sections =
Application::get()->getSectionDao()->getByIssueId($issue->getId());
154 $arrayKeySections = [];
155 foreach ($sections as $section) {
156 $arrayKeySections[$section->getId()] = $section;
158 return $arrayKeySections;
167 if (is_a($object,
'Submission')) {
168 return $object->getCurrentPublication()->getData(
'seq');
172 $customOrdering = $sectionDao->getCustomSectionOrder($issue->getId(), $object->getId());
173 if ($customOrdering ===
null) {
174 return $object->getSequence();
176 return $customOrdering;
187 if (!$sectionDao->customSectionOrderingExists($issue->getId())) {
188 $sectionDao->setDefaultCustomSectionOrders($issue->getId());
190 $sectionDao->updateCustomSectionOrder($issue->getId(), $sectionId, $newSequence);
197 return $submission->getCurrentPublication()->getData(
'seq');
204 $publication = $submission->getCurrentPublication();
205 $params = [
'seq' => $newSequence];
206 if ($sectionId != $publication->getData(
'sectionId')) {
207 $params[
'sectionId'] = $sectionId;
222 $journal = $request->getJournal();
223 $submission =
Services::get(
'submission')->get((
int) $request->getUserVar(
'articleId'));
225 import(
'classes.article.ArticleTombstoneManager');
227 if ($submission && $request->checkCSRF()) {
228 if ($issue->getPublished() && $submission->getCurrentPublication()->getData(
'issueId') == $issue->getId()) {
229 $articleTombstoneManager->insertArticleTombstone($submission, $journal);
231 foreach ((array) $submission->getData(
'publications') as $publication) {
232 if ($publication->getData(
'issueId') === (
int) $issue->getId()
233 && in_array($publication->getData(
'status'), [STATUS_SCHEDULED, STATUS_PUBLISHED])) {
234 $publication =
Services::get(
'publication')->unpublish($publication);
243 $sectionId = $submission->getCurrentPublication()->getData(
'sectionId');
244 $submissionsInSections =
Services::get(
'submission')->getInSections($issue->getId(), $issue->getJournalId());
245 if (!empty($submissionsInSections[$sectionId]) && count($submissionsInSections[$sectionId]) === 1) {
247 $sectionDao->deleteCustomSection($issue->getId(), $sectionId);
263 $articleId = (int) $request->getUserVar(
'articleId');
266 $publication = $submission ? $submission->getCurrentPublication() :
null;
267 if ($publication && $publication->getData(
'issueId') == $issue->getId() && $request->checkCSRF()) {
268 $publication =
Services::get(
'publication')->edit($publication, [
'accessStatus' => $request->getUserVar(
'status')], $request);