/**
  * Allows editors to write emails to users associated with the journal.
  */
 function notifyUsers($args)
 {
     $issue = IssueManagementHandler::validate(Request::getUserVar('issue'));
     IssueManagementHandler::setupTemplate(EDITOR_SECTION_ISSUES);
     $userDao =& DAORegistry::getDAO('UserDAO');
     $issueDao =& DAORegistry::getDAO('IssueDAO');
     $notificationStatusDao =& DAORegistry::getDAO('NotificationStatusDAO');
     $roleDao =& DAORegistry::getDAO('RoleDAO');
     $journal =& Request::getJournal();
     $user =& Request::getUser();
     $templateMgr =& TemplateManager::getManager();
     import('mail.MassMail');
     $email =& new MassMail('PUBLISH_NOTIFY');
     if (Request::getUserVar('send') && !$email->hasErrors()) {
         $email->addRecipient($user->getEmail(), $user->getFullName());
         if (Request::getUserVar('whichUsers') == 'allUsers') {
             $recipients = $roleDao->getUsersByJournalId($journal->getJournalId());
         } else {
             $recipients = $notificationStatusDao->getNotifiableUsersByJournalId($journal->getJournalId());
         }
         while (!$recipients->eof()) {
             $recipient =& $recipients->next();
             $email->addRecipient($recipient->getEmail(), $recipient->getFullName());
             unset($recipient);
         }
         if (Request::getUserVar('includeToc') == '1' && isset($issue)) {
             $issue = $issueDao->getIssueById(Request::getUserVar('issue'));
             $publishedArticleDao =& DAORegistry::getDAO('PublishedArticleDAO');
             $publishedArticles =& $publishedArticleDao->getPublishedArticlesInSections($issue->getIssueId());
             $templateMgr->assign_by_ref('journal', $journal);
             $templateMgr->assign_by_ref('issue', $issue);
             $templateMgr->assign('body', $email->getBody());
             $templateMgr->assign_by_ref('publishedArticles', $publishedArticles);
             $email->setBody($templateMgr->fetch('editor/notifyUsersEmail.tpl'));
             // Stamp the "users notified" date.
             $issue->setDateNotified(Core::getCurrentDate());
             $issueDao->updateIssue($issue);
         }
         $callback = array(&$email, 'send');
         $templateMgr->setProgressFunction($callback);
         unset($callback);
         $email->setFrequency(10);
         // 10 emails per callback
         $callback = array(&$templateMgr, 'updateProgressBar');
         $email->setCallback($callback);
         unset($callback);
         $templateMgr->assign('message', 'editor.notifyUsers.inProgress');
         $templateMgr->display('common/progress.tpl');
         echo '<script type="text/javascript">window.location = "' . Request::url(null, 'editor') . '";</script>';
     } else {
         if (!Request::getUserVar('continued')) {
             $email->assignParams(array('editorialContactSignature' => $user->getContactSignature()));
         }
         $notifiableCount = $notificationStatusDao->getNotifiableUsersCount($journal->getJournalId());
         $allUsersCount = $roleDao->getJournalUsersCount($journal->getJournalId());
         $issuesIterator =& $issueDao->getIssues($journal->getJournalId());
         $email->displayEditForm(Request::url(null, null, 'notifyUsers'), array(), 'editor/notifyUsers.tpl', array('issues' => $issuesIterator, 'notifiableCount' => $notifiableCount, 'allUsersCount' => $allUsersCount));
     }
 }
示例#2
0
 function notifyUsers($args)
 {
     import('pages.editor.IssueManagementHandler');
     IssueManagementHandler::notifyUsers($args);
 }