/classes/mail/ArticleMailTemplate.inc.php

https://github.com/ojsde/ojs · PHP · 211 lines · 137 code · 28 blank · 46 comment · 13 complexity · e2d1722cab13d447bc690d41c7f65c02 MD5 · raw file

  1. <?php
  2. /**
  3. * @file classes/mail/ArticleMailTemplate.inc.php
  4. *
  5. * Copyright (c) 2003-2012 John Willinsky
  6. * Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
  7. *
  8. * @class ArticleMailTemplate
  9. * @ingroup mail
  10. *
  11. * @brief Subclass of MailTemplate for sending emails related to articles.
  12. *
  13. * This allows for article-specific functionality like logging, etc.
  14. */
  15. import('classes.mail.MailTemplate');
  16. import('classes.article.log.ArticleEmailLogEntry'); // Bring in log constants
  17. class ArticleMailTemplate extends MailTemplate {
  18. /** @var object the associated article */
  19. var $article;
  20. /** @var object the associated journal */
  21. var $journal;
  22. /** @var int Event type of this email */
  23. var $eventType;
  24. /**
  25. * Constructor.
  26. * @param $article object
  27. * @param $emailType string optional
  28. * @param $locale string optional
  29. * @param $enableAttachments boolean optional
  30. * @param $journal object optional
  31. * @param $includeSignature boolean optional
  32. * @param $ignorePostedData boolean optional
  33. * @see MailTemplate::MailTemplate()
  34. */
  35. function ArticleMailTemplate($article, $emailKey = null, $locale = null, $enableAttachments = null, $journal = null, $includeSignature = true, $ignorePostedData = false) {
  36. parent::MailTemplate($emailKey, $locale, $enableAttachments, $journal, $includeSignature, $ignorePostedData);
  37. $this->article = $article;
  38. }
  39. function assignParams($paramArray = array()) {
  40. $article =& $this->article;
  41. $journal = isset($this->journal)?$this->journal:Request::getJournal();
  42. $paramArray['articleTitle'] = strip_tags($article->getLocalizedTitle());
  43. $paramArray['articleId'] = $article->getId();
  44. $paramArray['journalName'] = strip_tags($journal->getLocalizedName());
  45. $paramArray['sectionName'] = strip_tags($article->getSectionTitle());
  46. $paramArray['articleAbstract'] = String::html2text($article->getLocalizedAbstract());
  47. $paramArray['authorString'] = strip_tags($article->getAuthorString());
  48. parent::assignParams($paramArray);
  49. }
  50. /**
  51. * @see parent::send()
  52. */
  53. function send($request = null) {
  54. if (parent::send(false)) {
  55. if (!isset($this->skip) || !$this->skip) $this->log($request);
  56. if ($request) {
  57. $user =& $request->getUser();
  58. if ($user && $this->attachmentsEnabled) $this->_clearAttachments($user->getId());
  59. }
  60. return true;
  61. } else {
  62. return false;
  63. }
  64. }
  65. /**
  66. * @see parent::sendWithParams()
  67. * @param $paramArray array
  68. * @param $request object
  69. */
  70. function sendWithParams($paramArray, $request) {
  71. $savedSubject = $this->getSubject();
  72. $savedBody = $this->getBody();
  73. $this->assignParams($paramArray);
  74. $ret = $this->send($request);
  75. $this->setSubject($savedSubject);
  76. $this->setBody($savedBody);
  77. return $ret;
  78. }
  79. /**
  80. * Set the journal this message is associated with.
  81. * @param $journal object
  82. */
  83. function setJournal($journal) {
  84. $this->journal = $journal;
  85. }
  86. /**
  87. * Save the email in the article email log.
  88. * @param $request object
  89. */
  90. function log($request = null) {
  91. $articleEmailLogDao =& DAORegistry::getDAO('ArticleEmailLogDAO');
  92. $entry = $articleEmailLogDao->newDataObject();
  93. $article =& $this->article;
  94. // Log data
  95. $entry->setEventType($this->eventType);
  96. $entry->setSubject($this->getSubject());
  97. $entry->setBody($this->getBody());
  98. $entry->setFrom($this->getFromString(false));
  99. $entry->setRecipients($this->getRecipientString());
  100. $entry->setCcs($this->getCcString());
  101. $entry->setBccs($this->getBccString());
  102. // Add log entry
  103. import('classes.article.log.ArticleLog');
  104. $logEntryId = ArticleLog::logEmail($article->getId(), $entry, $request);
  105. // Add attachments
  106. import('classes.file.ArticleFileManager');
  107. $articleFileManager = new ArticleFileManager($article->getId());
  108. foreach ($this->getAttachmentFiles() as $attachment) {
  109. $articleFileManager->temporaryFileToArticleFile(
  110. $attachment,
  111. ARTICLE_FILE_ATTACHMENT,
  112. $logEntryId
  113. );
  114. }
  115. }
  116. function toAssignedEditors($articleId) {
  117. $returner = array();
  118. $editAssignmentDao =& DAORegistry::getDAO('EditAssignmentDAO');
  119. $editAssignments =& $editAssignmentDao->getEditorAssignmentsByArticleId($articleId);
  120. while ($editAssignment =& $editAssignments->next()) {
  121. $this->addRecipient($editAssignment->getEditorEmail(), $editAssignment->getEditorFullName());
  122. $returner[] =& $editAssignment;
  123. unset($editAssignment);
  124. }
  125. return $returner;
  126. }
  127. function toAssignedReviewingSectionEditors($articleId) {
  128. $returner = array();
  129. $editAssignmentDao =& DAORegistry::getDAO('EditAssignmentDAO');
  130. $editAssignments =& $editAssignmentDao->getReviewingSectionEditorAssignmentsByArticleId($articleId);
  131. while ($editAssignment =& $editAssignments->next()) {
  132. $this->addRecipient($editAssignment->getEditorEmail(), $editAssignment->getEditorFullName());
  133. $returner[] =& $editAssignment;
  134. unset($editAssignment);
  135. }
  136. return $returner;
  137. }
  138. function toAssignedEditingSectionEditors($articleId) {
  139. $returner = array();
  140. $editAssignmentDao =& DAORegistry::getDAO('EditAssignmentDAO');
  141. $editAssignments =& $editAssignmentDao->getEditingSectionEditorAssignmentsByArticleId($articleId);
  142. while ($editAssignment =& $editAssignments->next()) {
  143. $this->addRecipient($editAssignment->getEditorEmail(), $editAssignment->getEditorFullName());
  144. $returner[] =& $editAssignment;
  145. unset($editAssignment);
  146. }
  147. return $returner;
  148. }
  149. function ccAssignedEditors($articleId) {
  150. $returner = array();
  151. $editAssignmentDao =& DAORegistry::getDAO('EditAssignmentDAO');
  152. $editAssignments =& $editAssignmentDao->getEditorAssignmentsByArticleId($articleId);
  153. while ($editAssignment =& $editAssignments->next()) {
  154. $this->addCc($editAssignment->getEditorEmail(), $editAssignment->getEditorFullName());
  155. $returner[] =& $editAssignment;
  156. unset($editAssignment);
  157. }
  158. return $returner;
  159. }
  160. function ccAssignedReviewingSectionEditors($articleId) {
  161. $returner = array();
  162. $editAssignmentDao =& DAORegistry::getDAO('EditAssignmentDAO');
  163. $editAssignments =& $editAssignmentDao->getReviewingSectionEditorAssignmentsByArticleId($articleId);
  164. while ($editAssignment =& $editAssignments->next()) {
  165. $this->addCc($editAssignment->getEditorEmail(), $editAssignment->getEditorFullName());
  166. $returner[] =& $editAssignment;
  167. unset($editAssignment);
  168. }
  169. return $returner;
  170. }
  171. function ccAssignedEditingSectionEditors($articleId) {
  172. $returner = array();
  173. $editAssignmentDao =& DAORegistry::getDAO('EditAssignmentDAO');
  174. $editAssignments =& $editAssignmentDao->getEditingSectionEditorAssignmentsByArticleId($articleId);
  175. while ($editAssignment =& $editAssignments->next()) {
  176. $this->addCc($editAssignment->getEditorEmail(), $editAssignment->getEditorFullName());
  177. $returner[] =& $editAssignment;
  178. unset($editAssignment);
  179. }
  180. return $returner;
  181. }
  182. }
  183. ?>