18 import(
'classes.workflow.EditorDecisionActionsManager');
30 if ($editorDecision[
'editDecisionId'] ==
null) {
33 'INSERT INTO edit_decisions
34 (submission_id, review_round_id, stage_id, round, editor_id, decision, date_decided)
35 VALUES (?, ?, ?, ?, ?, ?, %s)',
40 is_a($reviewRound,
'ReviewRound') ? (
int) $reviewRound->getId() : 0,
41 is_a($reviewRound,
'ReviewRound') ? $reviewRound->getStageId() : (
int) $stageId,
42 is_a($reviewRound,
'ReviewRound') ? (
int) $reviewRound->getRound() : REVIEW_ROUND_NONE,
43 (
int) $editorDecision[
'editorId'],
44 $editorDecision[
'decision']
56 'DELETE FROM edit_decisions WHERE submission_id = ?',
71 $params = array((
int) $submissionId);
72 if ($stageId) $params[] = (int) $stageId;
73 if ($round) $params[] = (int) $round;
74 if ($editorId) $params[] = (int) $editorId;
77 'SELECT edit_decision_id, editor_id, decision,
78 date_decided, review_round_id, stage_id, round
80 WHERE submission_id = ?
81 ' . ($stageId?
' AND stage_id = ?':
'') .
'
82 ' . ($round?
' AND round = ?':
'') .
'
83 ' . ($editorId?
' AND editor_id = ?':
'') .
'
84 ORDER BY date_decided ASC',
89 while (!$result->EOF) {
91 'editDecisionId' => $result->fields[
'edit_decision_id'],
92 'reviewRoundId' => $result->fields[
'review_round_id'],
93 'stageId' => $result->fields[
'stage_id'],
94 'round' => $result->fields[
'round'],
95 'editorId' => $result->fields[
'editor_id'],
96 'decision' => $result->fields[
'decision'],
97 'dateDecided' => $this->datetimeFromDB($result->fields[
'date_decided'])
112 'UPDATE edit_decisions SET editor_id = ? WHERE editor_id = ?',
113 array((
int) $newUserId, (
int) $oldUserId)
127 $postReviewDecisions = array(SUBMISSION_EDITOR_DECISION_SEND_TO_PRODUCTION);
128 $revisionDecisions = array(SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS, SUBMISSION_EDITOR_DECISION_RESUBMIT);
129 if (!in_array($revisionDecision, $revisionDecisions))
return null;
132 $editorDecisions = $editDecisionDao->getEditorDecisions($submissionId);
133 $workingDecisions = array_reverse($editorDecisions);
134 $pendingRevisionDecision =
null;
136 foreach ($workingDecisions as $decision) {
137 if (in_array($decision[
'decision'], $postReviewDecisions)) {
140 } elseif ($decision[
'decision'] == $revisionDecision) {
141 if ($decision[
'stageId'] == $expectedStageId) {
142 $pendingRevisionDecision = $decision;
156 return $pendingRevisionDecision;
167 $stageId = $decision[
'stageId'];
168 $round = $decision[
'round'];
169 $sentRevisions =
false;
172 $reviewRound = $reviewRoundDao->getReviewRound($submissionId, $stageId, $round);
175 import(
'lib.pkp.classes.submission.SubmissionFile');
176 $submissionFiles = $submissionFileDao->getRevisionsByReviewRound($reviewRound, SUBMISSION_FILE_REVIEW_REVISION);
178 if (is_array($submissionFiles)) {
179 foreach ($submissionFiles as $file) {
180 if ($file->getDateUploaded() > $decision[
'dateDecided']) {
181 $sentRevisions =
true;
187 return $sentRevisions;