Open Journal Systems  3.3.0
SubmissionMailTemplate.inc.php
1 <?php
2 
18 import('lib.pkp.classes.mail.MailTemplate');
19 
21 
23  var $submission;
24 
26  var $context;
27 
29  var $logEventType;
30 
40  function __construct($submission, $emailKey = null, $locale = null, $context = null, $includeSignature = true) {
41  parent::__construct($emailKey, $locale, $context, $includeSignature);
42  $this->submission = $submission;
43  }
44 
49  function assignParams($paramArray = array()) {
51  $request = Application::get()->getRequest();
52  parent::assignParams(array_merge(
53  array(
54  'submissionTitle' => strip_tags($submission->getLocalizedFullTitle()),
55  'submissionId' => $submission->getId(),
56  'submissionAbstract' => PKPString::stripUnsafeHtml($submission->getLocalizedAbstract()),
57  'authorString' => strip_tags($submission->getAuthorString()),
58  ),
59  $paramArray
60  ));
61  }
62 
67  function send($request = null) {
68  if (parent::send()) {
69  $this->log($request);
70  return true;
71  } else {
72  return false;
73  }
74  }
75 
79  function sendWithParams($paramArray) {
80  $savedSubject = $this->getSubject();
81  $savedBody = $this->getBody();
82 
83  $this->assignParams($paramArray);
84 
85  $ret = $this->send();
86 
87  $this->setSubject($savedSubject);
88  $this->setBody($savedBody);
89 
90  return $ret;
91  }
92 
97  function setEventType($eventType) {
98  $this->logEventType = $eventType;
99  }
100 
105  function setContext($context) {
106  $this->context = $context;
107  }
108 
112  function log($request = null) {
113  $logDao = DAORegistry::getDAO('SubmissionEmailLogDAO'); /* @var $logDao SubmissionEmailLogDAO */
114  $entry = $logDao->newDataObject();
116 
117  // Event data
118  $entry->setEventType($this->logEventType);
119  $entry->setAssocId($submission->getId());
120  $entry->setDateSent(Core::getCurrentDate());
121 
122  // User data
123  if ($request) {
124  $user = $request->getUser();
125  $entry->setSenderId($user == null ? 0 : $user->getId());
126  } else {
127  // No user supplied -- this is e.g. a cron-automated email
128  $entry->setSenderId(0);
129  }
130 
131  // Email data
132  $entry->setSubject($this->getSubject());
133  $entry->setBody($this->getBody());
134  $entry->setFrom($this->getFromString(false));
135  $entry->setRecipients($this->getRecipientString());
136  $entry->setCcs($this->getCcString());
137  $entry->setBccs($this->getBccString());
138 
139  // Add log entry
140  $logEntryId = $logDao->insertObject($entry);
141  }
142 
148  function toAssignedSubEditors($submissionId, $stageId) {
149  return $this->_addUsers($submissionId, ROLE_ID_SUB_EDITOR, $stageId, 'addRecipient');
150  }
151 
158  function ccAssignedSubEditors($submissionId, $stageId) {
159  return $this->_addUsers($submissionId, ROLE_ID_SUB_EDITOR, $stageId, 'addCc');
160  }
161 
167  function bccAssignedSubEditors($submissionId, $stageId) {
168  return $this->_addUsers($submissionId, ROLE_ID_SUB_EDITOR, $stageId, 'addBcc');
169  }
170 
179  protected function _addUsers($submissionId, $roleId, $stageId, $method) {
180  assert(in_array($method, array('addRecipient', 'addCc', 'addBcc')));
181 
182  $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
183  $userGroups = $userGroupDao->getByRoleId($this->context->getId(), $roleId);
184 
185  $returner = array();
186  // Cycle through all the userGroups for this role
187  while ($userGroup = $userGroups->next()) {
188  $userStageAssignmentDao = DAORegistry::getDAO('UserStageAssignmentDAO'); /* @var $userStageAssignmentDao UserStageAssignmentDAO */
189  // FIXME: #6692# Should this be getting users just for a specific user group?
190  $users = $userStageAssignmentDao->getUsersBySubmissionAndStageId($submissionId, $stageId, $userGroup->getId());
191  while ($user = $users->next()) {
192  $this->$method($user->getEmail(), $user->getFullName());
193  $returner[] = $user;
194  }
195  }
196  return $returner;
197  }
198 }
199 
200 
SubmissionMailTemplate\bccAssignedSubEditors
bccAssignedSubEditors($submissionId, $stageId)
Definition: SubmissionMailTemplate.inc.php:176
SubmissionMailTemplate\sendWithParams
sendWithParams($paramArray)
Definition: SubmissionMailTemplate.inc.php:88
SubmissionMailTemplate\ccAssignedSubEditors
ccAssignedSubEditors($submissionId, $stageId)
Definition: SubmissionMailTemplate.inc.php:167
Mail\__construct
__construct()
Definition: Mail.inc.php:33
PKPString\stripUnsafeHtml
static stripUnsafeHtml($input)
Definition: PKPString.inc.php:377
SubmissionMailTemplate\setContext
setContext($context)
Definition: SubmissionMailTemplate.inc.php:114
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
Mail\setSubject
setSubject($subject)
Definition: Mail.inc.php:366
SubmissionMailTemplate
Subclass of MailTemplate for sending emails related to submissions.
Definition: SubmissionMailTemplate.inc.php:20
SubmissionMailTemplate\$context
$context
Definition: SubmissionMailTemplate.inc.php:32
SubmissionMailTemplate\log
log($request=null)
Definition: SubmissionMailTemplate.inc.php:121
Mail\getSubject
getSubject()
Definition: Mail.inc.php:374
SubmissionMailTemplate\$submission
$submission
Definition: SubmissionMailTemplate.inc.php:26
SubmissionMailTemplate\setEventType
setEventType($eventType)
Definition: SubmissionMailTemplate.inc.php:106
SubmissionMailTemplate\assignParams
assignParams($paramArray=array())
Definition: SubmissionMailTemplate.inc.php:58
Mail\setBody
setBody($body)
Definition: Mail.inc.php:382
MailTemplate
Subclass of Mail for mailing a template email.
Definition: MailTemplate.inc.php:21
Mail\getBccString
getBccString()
Definition: Mail.inc.php:456
SubmissionMailTemplate\$logEventType
$logEventType
Definition: SubmissionMailTemplate.inc.php:38
Mail\getRecipientString
getRecipientString()
Definition: Mail.inc.php:440
MailTemplate\send
send()
Definition: MailTemplate.inc.php:216
Core\getCurrentDate
static getCurrentDate($ts=null)
Definition: Core.inc.php:63
SubmissionMailTemplate\send
send($request=null)
Definition: SubmissionMailTemplate.inc.php:76
Mail\getFromString
getFromString($send=false)
Definition: Mail.inc.php:399
MailTemplate\$locale
$locale
Definition: MailTemplate.inc.php:44
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
MailTemplate\$includeSignature
$includeSignature
Definition: MailTemplate.inc.php:32
SubmissionMailTemplate\__construct
__construct($submission, $emailKey=null, $locale=null, $context=null, $includeSignature=true)
Definition: SubmissionMailTemplate.inc.php:49
Mail\getBody
getBody()
Definition: Mail.inc.php:390
Mail\getCcString
getCcString()
Definition: Mail.inc.php:448
SubmissionMailTemplate\toAssignedSubEditors
toAssignedSubEditors($submissionId, $stageId)
Definition: SubmissionMailTemplate.inc.php:157
MailTemplate\$emailKey
$emailKey
Definition: MailTemplate.inc.php:38
SubmissionMailTemplate\_addUsers
_addUsers($submissionId, $roleId, $stageId, $method)
Definition: SubmissionMailTemplate.inc.php:188