%PDF-1.7 GIF89;
| Server IP : 172.66.157.178 / Your IP : 172.16.20.3 Web Server : Apache/2.4.25 (Debian) System : Linux f64a392e70de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : application ( 1000) PHP Version : 5.6.40 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /app/classes/submission/author/ |
Upload File : |
<?php
/**
* @file classes/submission/author/AuthorSubmission.inc.php
*
* Copyright (c) 2013-2019 Simon Fraser University
* Copyright (c) 2003-2019 John Willinsky
* Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
*
* @class AuthorSubmission
* @ingroup submission
* @see AuthorSubmissionDAO
*
* @brief AuthorSubmission class.
*/
import('classes.article.Article');
class AuthorSubmission extends Article {
/** @var array ReviewAssignments of this article */
var $reviewAssignments;
/** @var array the editor decisions of this article */
var $editorDecisions;
/** @var array the revisions of the author file */
var $authorFileRevisions;
/** @var array the revisions of the editor file */
var $editorFileRevisions;
/** @var array the revisions of the author copyedit file */
var $copyeditFileRevisions;
/**
* Constructor.
*/
function AuthorSubmission() {
parent::Article();
$this->reviewAssignments = array();
}
/**
* Get/Set Methods.
*/
/**
* Get edit assignments for this article.
* @return array
*/
function &getEditAssignments() {
$editAssignments =& $this->getData('editAssignments');
return $editAssignments;
}
/**
* Set edit assignments for this article.
* @param $editAssignments array
*/
function setEditAssignments($editAssignments) {
return $this->setData('editAssignments', $editAssignments);
}
/**
* Add a review assignment for this article.
* @param $reviewAssignment ReviewAssignment
*/
function addReviewAssignment($reviewAssignment) {
if ($reviewAssignment->getSubmissionId() == null) {
$reviewAssignment->setSubmissionId($this->getArticleId());
}
array_push($this->reviewAssignments, $reviewAssignment);
}
/**
* Remove a review assignment.
* @param $reviewId ID of the review assignment to remove
* @return boolean review assignment was removed
*/
function removeReviewAssignment($reviewId) {
$reviewAssignments = array();
$found = false;
for ($i=0, $count=count($this->reviewAssignments); $i < $count; $i++) {
if ($this->reviewAssignments[$i]->getReviewId() == $reviewId) {
$found = true;
} else {
array_push($reviewAssignments, $this->reviewAssignments[$i]);
}
}
$this->reviewAssignments = $reviewAssignments;
return $found;
}
//
// Review Assignments
//
/**
* Get review assignments for this article.
* @return array ReviewAssignments
*/
function &getReviewAssignments($round = null) {
if ($round == null) {
// Return an array of arrays of review assignments
return $this->reviewAssignments;
} else {
// Return an array of review assignments for the specified round
return $this->reviewAssignments[$round];
}
}
/**
* Set review assignments for this article.
* @param $reviewAssignments array ReviewAssignments
*/
function setReviewAssignments($reviewAssignments, $round) {
return $this->reviewAssignments[$round] = $reviewAssignments;
}
//
// Editor Decisions
//
/**
* Get editor decisions.
* @return array
*/
function getDecisions($round = null) {
if ($round == null) {
return $this->editorDecisions;
} else {
return $this->editorDecisions[$round];
}
}
/**
* Set editor decisions.
* @param $editorDecisions array
* @param $round int
*/
function setDecisions($editorDecisions, $round) {
return $this->editorDecisions[$round] = $editorDecisions;
}
/**
* Get the submission status. Returns one of the defined constants
* (STATUS_INCOMPLETE, STATUS_ARCHIVED, STATUS_PUBLISHED,
* STATUS_DECLINED, STATUS_QUEUED_UNASSIGNED, STATUS_QUEUED_REVIEW,
* or STATUS_QUEUED_EDITING). Note that this function never returns
* a value of STATUS_QUEUED -- the three STATUS_QUEUED_... constants
* indicate a queued submission. NOTE that this code is similar to
* getSubmissionStatus in the SectionEditorSubmission class and
* changes here should be propagated.
*/
function getSubmissionStatus() {
$status = $this->getStatus();
if ($status == STATUS_ARCHIVED || $status == STATUS_PUBLISHED ||
$status == STATUS_DECLINED) return $status;
// The submission is STATUS_QUEUED or the author's submission was STATUS_INCOMPLETE.
if ($this->getSubmissionProgress()) return (STATUS_INCOMPLETE);
// The submission is STATUS_QUEUED. Find out where it's queued.
$editAssignments = $this->getEditAssignments();
if (empty($editAssignments))
return (STATUS_QUEUED_UNASSIGNED);
$latestDecision = $this->getMostRecentDecision();
if ($latestDecision) {
if ($latestDecision == SUBMISSION_EDITOR_DECISION_ACCEPT) {
return STATUS_QUEUED_EDITING;
}
}
return STATUS_QUEUED_REVIEW;
}
/**
* Get the most recent decision.
* @return int SUBMISSION_EDITOR_DECISION_...
*/
function getMostRecentDecision() {
$decisions = $this->getDecisions();
$decision = array_pop($decisions);
if (!empty($decision)) {
$latestDecision = array_pop($decision);
if (isset($latestDecision['decision'])) return $latestDecision['decision'];
}
return null;
}
//
// Files
//
/**
* Get submission file for this article.
* @return ArticleFile
*/
function &getSubmissionFile() {
$returner =& $this->getData('submissionFile');
return $returner;
}
/**
* Set submission file for this article.
* @param $submissionFile ArticleFile
*/
function setSubmissionFile($submissionFile) {
return $this->setData('submissionFile', $submissionFile);
}
/**
* Get revised file for this article.
* @return ArticleFile
*/
function &getRevisedFile() {
$returner =& $this->getData('revisedFile');
return $returner;
}
/**
* Set revised file for this article.
* @param $submissionFile ArticleFile
*/
function setRevisedFile($revisedFile) {
return $this->setData('revisedFile', $revisedFile);
}
/**
* Get supplementary files for this article.
* @return array SuppFiles
*/
function &getSuppFiles() {
$returner =& $this->getData('suppFiles');
return $returner;
}
/**
* Set supplementary file for this article.
* @param $suppFiles array SuppFiles
*/
function setSuppFiles($suppFiles) {
return $this->setData('suppFiles', $suppFiles);
}
/**
* Get all author file revisions.
* @return array ArticleFiles
*/
function getAuthorFileRevisions($round = null) {
if ($round == null) {
return $this->authorFileRevisions;
} else {
return $this->authorFileRevisions[$round];
}
}
/**
* Set all author file revisions.
* @param $authorFileRevisions array ArticleFiles
*/
function setAuthorFileRevisions($authorFileRevisions, $round) {
return $this->authorFileRevisions[$round] = $authorFileRevisions;
}
/**
* Get all editor file revisions.
* @return array ArticleFiles
*/
function getEditorFileRevisions($round = null) {
if ($round == null) {
return $this->editorFileRevisions;
} else {
return $this->editorFileRevisions[$round];
}
}
/**
* Set all editor file revisions.
* @param $editorFileRevisions array ArticleFiles
*/
function setEditorFileRevisions($editorFileRevisions, $round) {
return $this->editorFileRevisions[$round] = $editorFileRevisions;
}
/**
* Get the galleys for an article.
* @return array ArticleGalley
*/
function &getGalleys() {
$galleys =& $this->getData('galleys');
return $galleys;
}
/**
* Set the galleys for an article.
* @param $galleys array ArticleGalley
*/
function setGalleys(&$galleys) {
return $this->setData('galleys', $galleys);
}
//
// Comments
//
/**
* Get most recent editor decision comment.
* @return ArticleComment
*/
function getMostRecentEditorDecisionComment() {
return $this->getData('mostRecentEditorDecisionComment');
}
/**
* Set most recent editor decision comment.
* @param $mostRecentEditorDecisionComment ArticleComment
*/
function setMostRecentEditorDecisionComment($mostRecentEditorDecisionComment) {
return $this->setData('mostRecentEditorDecisionComment', $mostRecentEditorDecisionComment);
}
/**
* Get most recent copyedit comment.
* @return ArticleComment
*/
function getMostRecentCopyeditComment() {
return $this->getData('mostRecentCopyeditComment');
}
/**
* Set most recent copyedit comment.
* @param $mostRecentCopyeditComment ArticleComment
*/
function setMostRecentCopyeditComment($mostRecentCopyeditComment) {
return $this->setData('mostRecentCopyeditComment', $mostRecentCopyeditComment);
}
/**
* Get most recent layout comment.
* @return ArticleComment
*/
function getMostRecentLayoutComment() {
return $this->getData('mostRecentLayoutComment');
}
/**
* Set most recent layout comment.
* @param $mostRecentLayoutComment ArticleComment
*/
function setMostRecentLayoutComment($mostRecentLayoutComment) {
return $this->setData('mostRecentLayoutComment', $mostRecentLayoutComment);
}
/**
* Get most recent proofread comment.
* @return ArticleComment
*/
function getMostRecentProofreadComment() {
return $this->getData('mostRecentProofreadComment');
}
/**
* Set most recent proofread comment.
* @param $mostRecentProofreadComment ArticleComment
*/
function setMostRecentProofreadComment($mostRecentProofreadComment) {
return $this->setData('mostRecentProofreadComment', $mostRecentProofreadComment);
}
}
?>