Open Preprint Systems  3.3.0
SubmissionSubmitStep4Form.inc.php
1 <?php
2 
16 import('lib.pkp.classes.submission.form.PKPSubmissionSubmitStep4Form');
17 
25  parent::__construct(
26  $context,
28  );
29  }
30 
35  function execute(...$functionParams) {
36  parent::execute(...$functionParams);
37  $request = Application::get()->getRequest();
38  $context = $request->getContext();
40 
41  // Send author notification email
42  import('classes.mail.ArticleMailTemplate');
43 
44  $mail = new ArticleMailTemplate($submission, 'SUBMISSION_ACK', null, null, false);
45  $authorMail = new ArticleMailTemplate($submission, 'SUBMISSION_ACK_NOT_USER', null, null, false);
46 
47  $router = $request->getRouter();
48  if ($mail->isEnabled()) {
49  // submission ack emails should be from the contact.
50  $mail->setFrom($this->context->getData('contactEmail'), $this->context->getData('contactName'));
51  $authorMail->setFrom($this->context->getData('contactEmail'), $this->context->getData('contactName'));
52 
53  $user = $request->getUser();
54  $primaryAuthor = $submission->getPrimaryAuthor();
55  if (!isset($primaryAuthor)) {
56  $authors = $submission->getAuthors();
57  $primaryAuthor = $authors[0];
58  }
59  $mail->addRecipient($user->getEmail(), $user->getFullName());
60 
61  if ($user->getEmail() != $primaryAuthor->getEmail()) {
62  $authorMail->addRecipient($primaryAuthor->getEmail(), $primaryAuthor->getFullName());
63  }
64 
65  $assignedAuthors = $submission->getAuthors();
66 
67  foreach ($assignedAuthors as $author) {
68  $authorEmail = $author->getEmail();
69  // only add the author email if they have not already been added as the primary author
70  // or user creating the submission.
71  if ($authorEmail != $primaryAuthor->getEmail() && $authorEmail != $user->getEmail()) {
72  $authorMail->addRecipient($author->getEmail(), $author->getFullName());
73  }
74  }
75  $mail->bccAssignedSubEditors($submission->getId(), WORKFLOW_STAGE_ID_PRODUCTION);
76 
77  // OPS: Check if author can publish and let her know in the email
78  $canAuthorPublish = "";
79  import('classes.core.Services');
80  if (Services::get('publication')->canAuthorPublish($submission->getId())){
81  $primaryLocale = $context->getPrimaryLocale();
82  $allowedLocales = $context->getSupportedLocales();
83  $errors = Services::get('publication')->validatePublish($submission->getLatestPublication(), $submission, $allowedLocales, $primaryLocale);
84  if (!empty($errors)){
85  $listErrors .= '<ul class="plain">';
86  foreach ($errors as $error) {
87  $listErrors .= '<li>' . $error . '</li>';
88  }
89  $listErrors .= '</ul>';
90  $canAuthorPublish = __('author.submit.publishRequirements') . $listErrors;
91  }
92  } else {
93  $canAuthorPublish = __('author.submit.authorCanNotPublish');
94  }
95  if ($canAuthorPublish == ""){
96  $canAuthorPublish = __('author.submit.authorCanPublish');
97  }
98 
99  $mail->assignParams(array(
100  'authorName' => $user->getFullName(),
101  'authorUsername' => $user->getUsername(),
102  'editorialContactSignature' => $context->getData('contactName'),
103  'canAuthorPublish' => $canAuthorPublish,
104  'submissionUrl' => $router->url($request, null, 'authorDashboard', 'submission', $submission->getId()),
105  ));
106 
107  $authorMail->assignParams(array(
108  'submitterName' => $user->getFullName(),
109  'editorialContactSignature' => $context->getData('contactName'),
110  ));
111 
112  if (!$mail->send($request)) {
113  import('classes.notification.NotificationManager');
114  $notificationMgr = new NotificationManager();
115  $notificationMgr->createTrivialNotification($request->getUser()->getId(), NOTIFICATION_TYPE_ERROR, array('contents' => __('email.compose.error')));
116  }
117 
118  $recipients = $authorMail->getRecipients();
119  if (!empty($recipients)) {
120  if (!$authorMail->send($request)) {
121  import('classes.notification.NotificationManager');
122  $notificationMgr = new NotificationManager();
123  $notificationMgr->createTrivialNotification($request->getUser()->getId(), NOTIFICATION_TYPE_ERROR, array('contents' => __('email.compose.error')));
124  }
125  }
126  }
127 
128  // Log submission.
129  import('classes.log.SubmissionEventLogEntry'); // Constants
130  import('lib.pkp.classes.log.SubmissionLog');
131  SubmissionLog::logEvent($request, $submission, SUBMISSION_LOG_SUBMISSION_SUBMIT, 'submission.event.submissionSubmitted');
132 
133  return $this->submissionId;
134  }
135 }
136 
137 
SubmissionSubmitStep4Form
Form for Step 4 of author submission.
Definition: SubmissionSubmitStep4Form.inc.php:18
PKPSubmissionSubmitStep4Form
Form for Step 4 of author submission: confirm & complete.
Definition: PKPSubmissionSubmitStep4Form.inc.php:18
SubmissionLog\logEvent
static logEvent($request, $submission, $eventType, $messageKey, $params=array())
Definition: SubmissionLog.inc.php:34
SubmissionSubmitForm\$context
$context
Definition: SubmissionSubmitForm.inc.php:26
SubmissionSubmitStep4Form\execute
execute(... $functionParams)
Definition: SubmissionSubmitStep4Form.inc.php:35
SubmissionSubmitForm\$submissionId
$submissionId
Definition: SubmissionSubmitForm.inc.php:32
ArticleMailTemplate
Subclass of SubmissionMailTemplate for sending emails related to articles.
Definition: ArticleMailTemplate.inc.php:21
SubmissionSubmitStep4Form\__construct
__construct($context, $submission)
Definition: SubmissionSubmitStep4Form.inc.php:24
NotificationManager
Definition: NotificationManager.inc.php:19
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
SubmissionSubmitForm\$submission
$submission
Definition: SubmissionSubmitForm.inc.php:38
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49