/** * 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)); } }
function notifyUsers($args) { import('pages.editor.IssueManagementHandler'); IssueManagementHandler::notifyUsers($args); }