00001 <?php
00002
00015
00016
00017
00018 import('form.Form');
00019
00020 class EditCommentForm extends Form {
00021
00023 var $article;
00024
00026 var $comment;
00027
00029 var $roleId;
00030
00032 var $user;
00033
00039 function EditCommentForm(&$article, &$comment) {
00040 parent::Form('submission/comment/editComment.tpl');
00041 $this->addCheck(new FormValidatorPost($this));
00042
00043 $this->comment = $comment;
00044 $this->roleId = $comment->getRoleId();
00045
00046 $this->article = $article;
00047 $this->user = &Request::getUser();
00048 }
00049
00053 function initData() {
00054 $comment = &$this->comment;
00055 $this->_data = array(
00056 'commentId' => $comment->getCommentId(),
00057 'commentTitle' => $comment->getCommentTitle(),
00058 'comments' => $comment->getComments(),
00059 'viewable' => $comment->getViewable(),
00060 );
00061 }
00062
00066 function display($additionalHiddenParams = null) {
00067 $hiddenFormParams = array(
00068 'articleId' => $this->article->getArticleId(),
00069 'commentId' => $this->comment->getCommentId()
00070 );
00071 if (isset($additionalHiddenParams)) {
00072 $hiddenFormParams = array_merge ($hiddenFormParams, $additionalHiddenParams);
00073 }
00074
00075 $templateMgr = &TemplateManager::getManager();
00076
00077 $isPeerReviewComment = $this->comment->getCommentType() == COMMENT_TYPE_PEER_REVIEW;
00078 $templateMgr->assign('isPeerReviewComment', $isPeerReviewComment);
00079 $templateMgr->assign_by_ref('comment', $this->comment);
00080 $templateMgr->assign_by_ref('hiddenFormParams', $hiddenFormParams);
00081
00082 parent::display();
00083 }
00084
00088 function readInputData() {
00089 $this->readUserVars(
00090 array(
00091 'commentTitle',
00092 'comments',
00093 'viewable'
00094 )
00095 );
00096 }
00097
00101 function execute() {
00102 $commentDao = &DAORegistry::getDAO('ArticleCommentDAO');
00103
00104
00105 $comment = $this->comment;
00106 $comment->setCommentTitle($this->getData('commentTitle'));
00107 $comment->setComments($this->getData('comments'));
00108 $comment->setViewable($this->getData('viewable') ? 1 : 0);
00109 $comment->setDateModified(Core::getCurrentDate());
00110
00111 $commentDao->updateArticleComment($comment);
00112 }
00113
00118 function emailHelper() {
00119 $roleDao = &DAORegistry::getDAO('RoleDAO');
00120 $userDao = &DAORegistry::getDAO('UserDAO');
00121 $journal = &Request::getJournal();
00122
00123 $recipients = array();
00124
00125
00126 $editAssignmentDao = &DAORegistry::getDAO('EditAssignmentDAO');
00127 $editAssignments = &$editAssignmentDao->getEditAssignmentsByArticleId($this->article->getArticleId());
00128 $editAssignments =& $editAssignments->toArray();
00129 $editorAddresses = array();
00130 foreach ($editAssignments as $editAssignment) {
00131 $editorAddresses[$editAssignment->getEditorEmail()] = $editAssignment->getEditorFullName();
00132 }
00133
00134
00135
00136 if (empty($editorAddresses)) {
00137 $editors = &$roleDao->getUsersByRoleId(ROLE_ID_EDITOR, $journal->getJournalId());
00138 while (!$editors->eof()) {
00139 $editor = &$editors->next();
00140 $editorAddresses[$editor->getEmail()] = $editor->getFullName();
00141 }
00142 }
00143
00144
00145 $proofAssignmentDao = &DAORegistry::getDAO('ProofAssignmentDAO');
00146 $proofAssignment = &$proofAssignmentDao->getProofAssignmentByArticleId($this->article->getArticleId());
00147 if ($proofAssignment != null && $proofAssignment->getProofreaderId() > 0) {
00148 $proofreader = &$userDao->getUser($proofAssignment->getProofreaderId());
00149 } else {
00150 $proofreader = null;
00151 }
00152
00153
00154 $layoutAssignmentDao = &DAORegistry::getDAO('LayoutAssignmentDAO');
00155 $layoutAssignment = &$layoutAssignmentDao->getLayoutAssignmentByArticleId($this->article->getArticleId());
00156 if ($layoutAssignment != null && $layoutAssignment->getEditorId() > 0) {
00157 $layoutEditor = &$userDao->getUser($layoutAssignment->getEditorId());
00158 } else {
00159 $layoutEditor = null;
00160 }
00161
00162
00163 $copyAssignmentDao = &DAORegistry::getDAO('CopyAssignmentDAO');
00164 $copyAssignment = &$copyAssignmentDao->getCopyAssignmentByArticleId($this->article->getArticleId());
00165 if ($copyAssignment != null && $copyAssignment->getCopyeditorId() > 0) {
00166 $copyeditor = &$userDao->getUser($copyAssignment->getCopyeditorId());
00167 } else {
00168 $copyeditor = null;
00169 }
00170
00171
00172 $reviewAssignmentDao = &DAORegistry::getDAO('ReviewAssignmentDAO');
00173 $reviewAssignment = &$reviewAssignmentDao->getReviewAssignmentById($this->comment->getAssocId());
00174 if ($reviewAssignment != null && $reviewAssignment->getReviewerId() != null) {
00175 $reviewer = &$userDao->getUser($reviewAssignment->getReviewerId());
00176 } else {
00177 $reviewer = null;
00178 }
00179
00180
00181 $author = &$userDao->getUser($this->article->getUserId());
00182
00183 switch ($this->comment->getCommentType()) {
00184 case COMMENT_TYPE_PEER_REVIEW:
00185 if ($this->roleId == ROLE_ID_EDITOR || $this->roleId == ROLE_ID_SECTION_EDITOR) {
00186
00187 if ($reviewer != null) {
00188 $recipients = array_merge($recipients, array($reviewer->getEmail() => $reviewer->getFullName()));
00189 }
00190 }
00191 break;
00192
00193 case COMMENT_TYPE_EDITOR_DECISION:
00194 if ($this->roleId == ROLE_ID_EDITOR || $this->roleId == ROLE_ID_SECTION_EDITOR) {
00195
00196 if (isset($author)) $recipients = array_merge($recipients, array($author->getEmail() => $author->getFullName()));
00197 } else {
00198
00199 $recipients = array_merge($recipients, $editorAddresses);
00200 }
00201 break;
00202
00203 case COMMENT_TYPE_COPYEDIT:
00204 if ($this->roleId == ROLE_ID_EDITOR || $this->roleId == ROLE_ID_SECTION_EDITOR) {
00205
00206 if ($copyeditor != null) {
00207 $recipients = array_merge($recipients, array($copyeditor->getEmail() => $copyeditor->getFullName()));
00208 }
00209
00210 $recipients = array_merge($recipients, array($author->getEmail() => $author->getFullName()));
00211
00212 } else if ($this->roleId == ROLE_ID_COPYEDITOR) {
00213
00214 $recipients = array_merge($recipients, $editorAddresses);
00215
00216 if (isset($author)) $recipients = array_merge($recipients, array($author->getEmail() => $author->getFullName()));
00217
00218 } else {
00219
00220 $recipients = array_merge($recipients, $editorAddresses);
00221
00222 if ($copyeditor != null) {
00223 $recipients = array_merge($recipients, array($copyeditor->getEmail() => $copyeditor->getFullName()));
00224 }
00225 }
00226 break;
00227 case COMMENT_TYPE_LAYOUT:
00228 if ($this->roleId == ROLE_ID_EDITOR || $this->roleId == ROLE_ID_SECTION_EDITOR) {
00229
00230
00231
00232 if ($layoutEditor != null) {
00233 $recipients = array_merge($recipients, array($layoutEditor->getEmail() => $layoutEditor->getFullName()));
00234 }
00235 } else {
00236
00237 $recipients = array_merge($recipients, $editorAddresses);
00238 }
00239 break;
00240 case COMMENT_TYPE_PROOFREAD:
00241 if ($this->roleId == ROLE_ID_EDITOR || $this->roleId == ROLE_ID_SECTION_EDITOR) {
00242
00243 if ($layoutEditor != null) {
00244 $recipients = array_merge($recipients, array($layoutEditor->getEmail() => $layoutEditor->getFullName()));
00245 }
00246
00247 if ($proofreader != null) {
00248 $recipients = array_merge($recipients, array($proofreader->getEmail() => $proofreader->getFullName()));
00249 }
00250
00251 if (isset($author)) $recipients = array_merge($recipients, array($author->getEmail() => $author->getFullName()));
00252
00253 } else if ($this->roleId == ROLE_ID_LAYOUT_EDITOR) {
00254
00255 $recipients = array_merge($recipients, $editorAddresses);
00256
00257 if ($proofreader != null) {
00258 $recipients = array_merge($recipients, array($proofreader->getEmail() => $proofreader->getFullName()));
00259 }
00260
00261 if (isset($author)) $recipients = array_merge($recipients, array($author->getEmail() => $author->getFullName()));
00262
00263 } else if ($this->roleId == ROLE_ID_PROOFREADER) {
00264
00265 $recipients = array_merge($recipients, $editorAddresses);
00266
00267 if ($layoutEditor != null) {
00268 $recipients = array_merge($recipients, array($layoutEditor->getEmail() => $layoutEditor->getFullName()));
00269 }
00270
00271 if (isset($author)) $recipients = array_merge($recipients, array($author->getEmail() => $author->getFullName()));
00272
00273 } else {
00274
00275 $recipients = array_merge($recipients, $editorAddresses);
00276
00277 if ($layoutEditor != null) {
00278 $recipients = array_merge($recipients, array($layoutEditor->getEmail() => $layoutEditor->getFullName()));
00279 }
00280
00281 if ($proofreader != null) {
00282 $recipients = array_merge($recipients, array($proofreader->getEmail() => $proofreader->getFullName()));
00283 }
00284 }
00285 break;
00286 }
00287
00288 return $recipients;
00289 }
00290
00295 function email($recipients) {
00296 import('mail.ArticleMailTemplate');
00297 $email = &new ArticleMailTemplate($this->article, 'SUBMISSION_COMMENT');
00298 $journal =& Request::getJournal();
00299 if ($journal) $email->setFrom($journal->getSetting('contactEmail'), $journal->getSetting('contactName'));
00300
00301 foreach ($recipients as $emailAddress => $name) {
00302 $email->addRecipient($emailAddress, $name);
00303 $email->setSubject(strip_tags($this->article->getArticleTitle()));
00304
00305 $paramArray = array(
00306 'name' => $name,
00307 'commentName' => $this->user->getFullName(),
00308 'comments' => $this->getData('comments')
00309 );
00310 $email->assignParams($paramArray);
00311
00312 $email->send();
00313 $email->clearRecipients();
00314 }
00315 }
00316 }
00317
00318 ?>