/
SubmissionSubmitStep4Form.inc.php
113 lines (95 loc) · 3.85 KB
/
SubmissionSubmitStep4Form.inc.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
/**
* @file classes/submission/form/SubmissionSubmitStep4Form.inc.php
*
* Copyright (c) 2014-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 SubmissionSubmitStep4Form
* @ingroup submission_form
*
* @brief Form for Step 4 of author submission.
*/
import('lib.pkp.classes.submission.form.PKPSubmissionSubmitStep4Form');
class SubmissionSubmitStep4Form extends PKPSubmissionSubmitStep4Form {
/**
* Constructor.
* @param $context Context
* @param $submission Submission
*/
function __construct($context, $submission) {
parent::__construct(
$context,
$submission
);
}
/**
* Save changes to submission.
* @return int the submission ID
*/
function execute() {
parent::execute();
$submission = $this->submission;
// Send author notification email
import('classes.mail.ArticleMailTemplate');
$mail = new ArticleMailTemplate($submission, 'SUBMISSION_ACK', null, null, false);
$authorMail = new ArticleMailTemplate($submission, 'SUBMISSION_ACK_NOT_USER', null, null, false);
$request = Application::get()->getRequest();
$context = $request->getContext();
$router = $request->getRouter();
if ($mail->isEnabled()) {
// submission ack emails should be from the contact.
$mail->setFrom($this->context->getData('contactEmail'), $this->context->getData('contactName'));
$authorMail->setFrom($this->context->getData('contactEmail'), $this->context->getData('contactName'));
$user = $request->getUser();
$primaryAuthor = $submission->getPrimaryAuthor();
if (!isset($primaryAuthor)) {
$authors = $submission->getAuthors();
$primaryAuthor = $authors[0];
}
$mail->addRecipient($user->getEmail(), $user->getFullName());
if ($user->getEmail() != $primaryAuthor->getEmail()) {
$authorMail->addRecipient($primaryAuthor->getEmail(), $primaryAuthor->getFullName());
}
$assignedAuthors = $submission->getAuthors();
foreach ($assignedAuthors as $author) {
$authorEmail = $author->getEmail();
// only add the author email if they have not already been added as the primary author
// or user creating the submission.
if ($authorEmail != $primaryAuthor->getEmail() && $authorEmail != $user->getEmail()) {
$authorMail->addRecipient($author->getEmail(), $author->getFullName());
}
}
$mail->bccAssignedSubEditors($submission->getId(), WORKFLOW_STAGE_ID_SUBMISSION);
$mail->assignParams(array(
'authorName' => $user->getFullName(),
'authorUsername' => $user->getUsername(),
'editorialContactSignature' => $context->getData('contactName'),
'submissionUrl' => $router->url($request, null, 'authorDashboard', 'submission', $submission->getId()),
));
$authorMail->assignParams(array(
'submitterName' => $user->getFullName(),
'editorialContactSignature' => $context->getData('contactName'),
));
if (!$mail->send($request)) {
import('classes.notification.NotificationManager');
$notificationMgr = new NotificationManager();
$notificationMgr->createTrivialNotification($request->getUser()->getId(), NOTIFICATION_TYPE_ERROR, array('contents' => __('email.compose.error')));
}
$recipients = $authorMail->getRecipients();
if (!empty($recipients)) {
if (!$authorMail->send($request)) {
import('classes.notification.NotificationManager');
$notificationMgr = new NotificationManager();
$notificationMgr->createTrivialNotification($request->getUser()->getId(), NOTIFICATION_TYPE_ERROR, array('contents' => __('email.compose.error')));
}
}
}
// Log submission.
import('classes.log.SubmissionEventLogEntry'); // Constants
import('lib.pkp.classes.log.SubmissionLog');
SubmissionLog::logEvent($request, $submission, SUBMISSION_LOG_SUBMISSION_SUBMIT, 'submission.event.submissionSubmitted');
return $this->submissionId;
}
}