Index: classes/article/Article.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/article/Article.inc.php,v
retrieving revision 1.39
diff -u -r1.39 Article.inc.php
--- classes/article/Article.inc.php 13 Nov 2008 00:27:03 -0000 1.39
+++ classes/article/Article.inc.php 28 Jan 2009 19:24:25 -0000
@@ -423,6 +423,74 @@
);
return $commentsStatusOptions;
}
+
+ /**
+ * Get an array of user IDs associated with this article
+ * @param $authors boolean
+ * @param $reviewers boolean
+ * @param $editors boolean
+ * @param $proofreaders boolean
+ * @param $copyeditors boolean
+ * @param $layoutEditors boolean
+ * @return array User IDs
+ */
+ function getAssociatedUserIds($authors = true, $reviewers = true, $editors = true, $proofreaders = true, $copyeditors = true, $layoutEditors = true) {
+ $articleId = $this->getArticleId();
+
+ $userIds = array();
+
+ if($authors) {
+ $authorDao = &DAORegistry::getDAO('AuthorDAO');
+ $authors = $authorDao->getAuthorsByArticle($articleId);
+ foreach ($authors as $author) {
+ $userIds[] = array('id' => $author->getAuthorId(), 'role' => 'author');
+ }
+ }
+
+ if($editors) {
+ $editAssignmentDao =& DAORegistry::getDAO('EditAssignmentDAO');
+ $editAssignments =& $editAssignmentDao->getEditorAssignmentsByArticleId($articleId);
+ while ($editAssignment =& $editAssignments->next()) {
+ $userIds[] = array('id' => $editAssignment->getEditorId(), 'role' => 'editor');
+ unset($editAssignment);
+ }
+ }
+
+ if($copyeditors) {
+ $copyAssignmentDao = &DAORegistry::getDAO('CopyAssignmentDAO');
+ $copyAssignment =& $copyAssignmentDao->getCopyAssignmentByArticleId($articleId);
+ if ($copyAssignment != null && $copyAssignment->getCopyeditorId() > 0) {
+ $userIds[] =array('id' => $copyAssignment->getCopyeditorId(), 'role' => 'copyeditor');
+ }
+ }
+
+ if($layoutEditors) {
+ $layoutAssignmentDao = &DAORegistry::getDAO('LayoutAssignmentDAO');
+ $layoutEditorId = $layoutAssignmentDao->getLayoutEditorIdByArticleId($articleId);
+ if ($layoutEditorId != null && $layoutEditorId > 0) {
+ $userIds[] = array('id' => $layoutEditorId, 'role' => 'layoutEditor');
+ }
+ }
+
+ if($proofreaders) {
+ $proofAssignmentDao = &DAORegistry::getDAO('ProofAssignmentDAO');
+ $proofAssignment =& $proofAssignmentDao->getProofAssignmentByArticleId($articleId);
+ if ($proofAssignment != null && $proofAssignment->getProofreaderId() > 0) {
+ $userIds[] = array('id' => $proofAssignment->getProofreaderId(), 'role' => 'proofreader');
+ }
+ }
+
+ if($reviewers) {
+ $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO');
+ $reviewAssignments =& $reviewAssignmentDao->getReviewAssignmentsByArticleId($articleId);
+ foreach ($reviewAssignments as $reviewAssignment) {
+ $userIds[] = array('id' => $reviewAssignment->getReviewerId(), 'role' => 'reviewer');
+ unset($reviewAssignment);
+ }
+ }
+
+ return $userIds;
+ }
}
?>
Index: classes/core/OJSApplication.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/core/OJSApplication.inc.php,v
retrieving revision 1.11
diff -u -r1.11 OJSApplication.inc.php
--- classes/core/OJSApplication.inc.php 5 Nov 2008 00:46:39 -0000 1.11
+++ classes/core/OJSApplication.inc.php 28 Jan 2009 19:24:25 -0000
@@ -145,7 +145,6 @@
'JournalStatisticsDAO' => 'journal.JournalStatisticsDAO',
'LayoutAssignmentDAO' => 'submission.layoutAssignment.LayoutAssignmentDAO',
'LayoutEditorSubmissionDAO' => 'submission.layoutEditor.LayoutEditorSubmissionDAO',
- 'NotificationStatusDAO' => 'journal.NotificationStatusDAO',
'OAIDAO' => 'oai.ojs.OAIDAO',
'OJSCompletedPaymentDAO' => 'payment.ojs.OJSCompletedPaymentDAO',
'PluginSettingsDAO' => 'plugins.PluginSettingsDAO',
Index: classes/install/Upgrade.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/install/Upgrade.inc.php,v
retrieving revision 1.36
diff -u -r1.36 Upgrade.inc.php
--- classes/install/Upgrade.inc.php 9 Dec 2008 19:40:45 -0000 1.36
+++ classes/install/Upgrade.inc.php 28 Jan 2009 19:24:25 -0000
@@ -463,7 +463,7 @@
$tables = array(
'versions', 'site', 'site_settings', 'scheduled_tasks',
'sessions', 'journal_settings',
- 'plugin_settings', 'roles', 'notification_status',
+ 'plugin_settings', 'roles',
'section_settings', 'section_editors', 'issue_settings',
'custom_issue_orders', 'custom_section_orders',
'article_settings', 'article_author_settings',
Index: classes/journal/Journal.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/journal/Journal.inc.php,v
retrieving revision 1.24
diff -u -r1.24 Journal.inc.php
--- classes/journal/Journal.inc.php 1 Jul 2008 01:16:10 -0000 1.24
+++ classes/journal/Journal.inc.php 28 Jan 2009 19:24:25 -0000
@@ -175,6 +175,14 @@
function getJournalId() {
return $this->getData('journalId');
}
+
+ /**
+ * Get ID of journal (for generic calls in PKP WAL).
+ * @return int
+ */
+ function getId() {
+ return $this->getData('journalId');
+ }
/**
* Set ID of journal.
Index: classes/journal/JournalDAO.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/journal/JournalDAO.inc.php,v
retrieving revision 1.34
diff -u -r1.34 JournalDAO.inc.php
--- classes/journal/JournalDAO.inc.php 5 Nov 2008 00:46:40 -0000 1.34
+++ classes/journal/JournalDAO.inc.php 28 Jan 2009 19:24:25 -0000
@@ -142,9 +142,6 @@
$issueDao = &DAORegistry::getDAO('IssueDAO');
$issueDao->deleteIssuesByJournal($journalId);
- $notificationStatusDao = &DAORegistry::getDAO('NotificationStatusDAO');
- $notificationStatusDao->deleteNotificationStatusByJournal($journalId);
-
$emailTemplateDao = &DAORegistry::getDAO('EmailTemplateDAO');
$emailTemplateDao->deleteEmailTemplatesByJournal($journalId);
Index: classes/manager/form/AnnouncementForm.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/manager/form/AnnouncementForm.inc.php,v
retrieving revision 1.12
diff -u -r1.12 AnnouncementForm.inc.php
--- classes/manager/form/AnnouncementForm.inc.php 5 Nov 2008 00:46:40 -0000 1.12
+++ classes/manager/form/AnnouncementForm.inc.php 28 Jan 2009 19:24:25 -0000
@@ -129,6 +129,7 @@
function execute() {
$announcementDao = &DAORegistry::getDAO('AnnouncementDAO');
$journal = &Request::getJournal();
+ $journalId = $journal->getJournalId();
if (isset($this->announcementId)) {
$announcement = &$announcementDao->getAnnouncement($this->announcementId);
@@ -138,7 +139,7 @@
$announcement = new Announcement();
}
- $announcement->setJournalId($journal->getJournalId());
+ $announcement->setJournalId($journalId);
$announcement->setTitle($this->getData('title'), null); // Localized
$announcement->setDescriptionShort($this->getData('descriptionShort'), null); // Localized
$announcement->setDescription($this->getData('description'), null); // Localized
@@ -162,6 +163,25 @@
$announcement->setDatetimePosted(Core::getCurrentDate());
$announcementDao->insertAnnouncement($announcement);
}
+
+ // Send a notification to associated users
+ import('notification.Notification');
+ $roleDao = &DAORegistry::getDAO('RoleDAO');
+ $notificationUsers = array();
+ $allUsers = $roleDao->getUsersByJournalId($journalId);
+ while (!$allUsers->eof()) {
+ $user = &$allUsers->next();
+ $notificationUsers[] = array('id' => $user->getUserId());
+ unset($user);
+ }
+ $url = Request::url(null, 'announcement', 'view', array(1));
+ foreach ($notificationUsers as $user) {
+ Notification::createNotification($user['id'], "notification.type.newAnnouncement",
+ null, $url, 1, NOTIFICATION_TYPE_NEW_ANNOUNCEMENT);
+ }
+ $notificationDao = &DAORegistry::getDAO('NotificationDAO');
+ $notificationDao->sendToMailingList(Notification::createNotification(0, "notification.type.newAnnouncement",
+ null, $url, 1, NOTIFICATION_TYPE_NEW_ANNOUNCEMENT));
}
}
Index: classes/notification/Notification.inc.php
===================================================================
RCS file: classes/notification/Notification.inc.php
diff -N classes/notification/Notification.inc.php
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ classes/notification/Notification.inc.php 28 Jan 2009 19:24:25 -0000
@@ -0,0 +1,137 @@
+getAssocType()) {
+ case NOTIFICATION_TYPE_ARTICLE_SUBMITTED:
+ case NOTIFICATION_TYPE_GALLEY_ADDED:
+ case NOTIFICATION_TYPE_SUPP_FILE_ADDED:
+ return $baseUrl . 'page_new.gif';
+ break;
+ case NOTIFICATION_TYPE_SUPP_FILE_MODIFIED:
+ case NOTIFICATION_TYPE_SUPP_FILE_ADDED:
+ return $baseUrl . 'page_attachment.gif';
+ break;
+
+ case NOTIFICATION_TYPE_METADATA_MODIFIED:
+ case NOTIFICATION_TYPE_GALLEY_MODIFIED:
+ return $baseUrl . 'edit.gif';
+ break;
+ case NOTIFICATION_TYPE_SUBMISSION_COMMENT:
+ case NOTIFICATION_TYPE_LAYOUT_COMMENT:
+ case NOTIFICATION_TYPE_COPYEDIT_COMMENT:
+ case NOTIFICATION_TYPE_PROOFREAD_COMMENT:
+ case NOTIFICATION_TYPE_REVIEWER_COMMENT:
+ case NOTIFICATION_TYPE_REVIEWER_FORM_COMMENT:
+ case NOTIFICATION_TYPE_EDITOR_DECISION_COMMENT:
+ case NOTIFICATION_TYPE_USER_COMMENT:
+ return $baseUrl . 'comment_new.gif';
+ break;
+ case NOTIFICATION_TYPE_PUBLISHED_ISSUE:
+ return $baseUrl . 'list_world.gif';
+ break;
+ case NOTIFICATION_TYPE_NEW_ANNOUNCEMENT:
+ return $baseUrl . 'note_new.gif';
+ break;
+ default:
+ return $baseUrl . 'page_alert.gif';
+ }
+ }
+
+ /**
+ * Static function to send an email to a mailing list user regarding signup or a lost password
+ * @param $email string
+ * @param $password string the user's password
+ * @param $template string The mail template to use
+ */
+ function sendMailingListEmail($email, $password, $template) {
+ import('mail.MailTemplate');
+ $journal = Request::getJournal();
+ $site = Request::getSite();
+
+ $params = array(
+ 'password' => $password,
+ 'siteTitle' => $journal->getJournalTitle(),
+ 'unsubscribeLink' => Request::url(null, 'notification', 'unsubscribeMailList')
+ );
+
+ if ($template == 'NOTIFICATION_MAILLIST_WELCOME') {
+ $keyHash = md5($password);
+ $confirmLink = Request::url(null, 'notification', 'confirmMailListSubscription', array($keyHash, $email));
+ $params["confirmLink"] = $confirmLink;
+ }
+
+ $mail = new MailTemplate($template);
+ $mail->setFrom($site->getSiteContactEmail(), $site->getSiteContactName());
+ $mail->assignParams($params);
+ $mail->addRecipient($email);
+ $mail->send();
+ }
+
+ /**
+ * Returns an array of information on the journal's subscription settings
+ * @return array
+ */
+ function getSubscriptionSettings() {
+ $journal = Request::getJournal();
+ import('payment.ojs.OJSPaymentManager');
+ $paymentManager =& OJSPaymentManager::getManager();
+
+ $settings = array('subscriptionsEnabled' => $paymentManager->acceptSubscriptionPayments(),
+ 'allowRegReviewer' => $journal->getSetting('allowRegReviewer'),
+ 'allowRegAuthor' => $journal->getSetting('allowRegAuthor'));
+
+ return $settings;
+ }
+ }
+
+?>
Index: classes/notification/form/NotificationSettingsForm.inc.php
===================================================================
RCS file: classes/notification/form/NotificationSettingsForm.inc.php
diff -N classes/notification/form/NotificationSettingsForm.inc.php
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ classes/notification/form/NotificationSettingsForm.inc.php 28 Jan 2009 19:24:25 -0000
@@ -0,0 +1,152 @@
+readUserVars(
+ array('notificationArticleSubmitted',
+ 'notificationMetadataModified',
+ 'notificationSuppFileAdded',
+ 'notificationSuppFileModified',
+ 'notificationGalleyAdded',
+ 'notificationGalleyModified',
+ 'notificationSubmissionComment',
+ 'notificationLayoutComment',
+ 'notificationCopyeditComment',
+ 'notificationProofreadComment',
+ 'notificationReviewerComment',
+ 'notificationReviewerFormComment',
+ 'notificationEditorDecisionComment',
+ 'notificationPublishedIssue',
+ 'notificationUserComment',
+ 'notificationNewAnnouncement',
+ 'emailNotificationArticleSubmitted',
+ 'emailNotificationMetadataModified',
+ 'emailNotificationSuppFileAdded',
+ 'emailNotificationSuppFileModified',
+ 'emailNotificationGalleyAdded',
+ 'emailNotificationGalleyModified',
+ 'emailNotificationSubmissionComment',
+ 'emailNotificationLayoutComment',
+ 'emailNotificationCopyeditComment',
+ 'emailNotificationProofreadComment',
+ 'emailNotificationReviewerComment',
+ 'emailNotificationReviewerFormComment',
+ 'emailNotificationEditorDecisionComment',
+ 'emailNotificationPublishedIssue',
+ 'emailNotificationUserComment',
+ 'emailNotificationNewAnnouncement')
+ );
+ }
+
+ /**
+ * Display the form.
+ */
+ function display() {
+ $journalDao = &DAORegistry::getDAO('JournalDAO');
+ $journals = &$journalDao->getJournalTitles();
+
+ $canOnlyRead = true;
+ $canOnlyReview = false;
+
+ if (Validation::isReviewer()) {
+ $canOnlyRead = false;
+ $canOnlyReview = true;
+ }
+ if (Validation::isSiteAdmin() || Validation::isJournalManager() || Validation::isEditor() ||
+ Validation::isSectionEditor() || Validation::isLayoutEditor() || Validation::isCopyeditor() || Validation::isProofreader()) {
+ $canOnlyRead = false;
+ $canOnlyReview = false;
+ }
+
+ $templateMgr = &TemplateManager::getManager();
+ $templateMgr->assign('canOnlyRead', $canOnlyRead);
+ $templateMgr->assign('canOnlyReview', $canOnlyReview);
+ return parent::display();
+ }
+
+ /**
+ * Save site settings.
+ */
+ function execute() {
+ $user = Request::getUser();
+ $userId = $user->getUserId();
+
+ // Notification settings
+ $settings = array();
+ if(!$this->getData('notificationArticleSubmitted')) $settings[] = NOTIFICATION_TYPE_ARTICLE_SUBMITTED;
+ if(!$this->getData('notificationMetadataModified')) $settings[] = NOTIFICATION_TYPE_METADATA_MODIFIED;
+ if(!$this->getData('notificationSuppFileAdded')) $settings[] = NOTIFICATION_TYPE_SUPP_FILE_ADDED;
+ if(!$this->getData('notificationSuppFileModified')) $settings[] = NOTIFICATION_TYPE_SUPP_FILE_MODIFIED;
+ if(!$this->getData('notificationGalleyAdded')) $settings[] = NOTIFICATION_TYPE_GALLEY_ADDED;
+ if(!$this->getData('notificationGalleyModified')) $settings[] = NOTIFICATION_TYPE_GALLEY_MODIFIED;
+ if(!$this->getData('notificationSubmissionComment')) $settings[] = NOTIFICATION_TYPE_SUBMISSION_COMMENT;
+ if(!$this->getData('notificationLayoutComment')) $settings[] = NOTIFICATION_TYPE_LAYOUT_COMMENT;
+ if(!$this->getData('notificationCopyeditComment')) $settings[] = NOTIFICATION_TYPE_COPYEDIT_COMMENT;
+ if(!$this->getData('notificationProofreadComment')) $settings[] = NOTIFICATION_TYPE_PROOFREAD_COMMENT;
+ if(!$this->getData('notificationReviewerComment')) $settings[] = NOTIFICATION_TYPE_REVIEWER_COMMENT;
+ if(!$this->getData('notificationReviewerFormComment')) $settings[] = NOTIFICATION_TYPE_REVIEWER_FORM_COMMENT;
+ if(!$this->getData('notificationEditorDecisionComment')) $settings[] = NOTIFICATION_TYPE_EDITOR_DECISION_COMMENT;
+ if(!$this->getData('notificationPublishedIssue')) $settings[] = NOTIFICATION_TYPE_PUBLISHED_ISSUE;
+ if(!$this->getData('notificationUserComment')) $settings[] = NOTIFICATION_TYPE_USER_COMMENT;
+ if(!$this->getData('notificationNewAnnouncement')) $settings[] = NOTIFICATION_TYPE_NEW_ANNOUNCEMENT;
+
+ // Email settings
+ $emailSettings = array();
+ if($this->getData('emailNotificationArticleSubmitted')) $emailSettings[] = NOTIFICATION_TYPE_ARTICLE_SUBMITTED;
+ if($this->getData('emailNotificationMetadataModified')) $emailSettings[] = NOTIFICATION_TYPE_METADATA_MODIFIED;
+ if($this->getData('emailNotificationSuppFileAdded')) $emailSettings[] = NOTIFICATION_TYPE_SUPP_FILE_ADDED;
+ if($this->getData('emailNotificationSuppFileModified')) $emailSettings[] = NOTIFICATION_TYPE_SUPP_FILE_MODIFIED;
+ if($this->getData('emailNotificationGalleyAdded')) $emailSettings[] = NOTIFICATION_TYPE_GALLEY_ADDED;
+ if($this->getData('emailNotificationGalleyModified')) $emailSettings[] = NOTIFICATION_TYPE_GALLEY_MODIFIED;
+ if($this->getData('emailNotificationSubmissionComment')) $emailSettings[] = NOTIFICATION_TYPE_SUBMISSION_COMMENT;
+ if($this->getData('emailNotificationLayoutComment')) $emailSettings[] = NOTIFICATION_TYPE_LAYOUT_COMMENT;
+ if($this->getData('emailNotificationCopyeditComment')) $emailSettings[] = NOTIFICATION_TYPE_COPYEDIT_COMMENT;
+ if($this->getData('emailNotificationProofreadComment')) $emailSettings[] = NOTIFICATION_TYPE_PROOFREAD_COMMENT;
+ if($this->getData('emailNotificationReviewerComment')) $emailSettings[] = NOTIFICATION_TYPE_REVIEWER_COMMENT;
+ if($this->getData('emailNotificationReviewerFormComment')) $emailSettings[] = NOTIFICATION_TYPE_REVIEWER_FORM_COMMENT;
+ if($this->getData('emailNotificationEditorDecisionComment')) $emailSettings[] = NOTIFICATION_TYPE_EDITOR_DECISION_COMMENT;
+ if($this->getData('emailNotificationPublishedIssue')) $emailSettings[] = NOTIFICATION_TYPE_PUBLISHED_ISSUE;
+ if($this->getData('emailNotificationUserComment')) $emailSettings[] = NOTIFICATION_TYPE_USER_COMMENT;
+ if($this->getData('emailNotificationNewAnnouncement')) $emailSettings[] = NOTIFICATION_TYPE_NEW_ANNOUNCEMENT;
+
+ $notificationSettingsDao =& DAORegistry::getDAO('NotificationSettingsDAO');
+ $notificationSettingsDao->updateNotificationSettings($settings, $userId);
+ $notificationSettingsDao->updateNotificationEmailSettings($emailSettings, $userId);
+
+ return true;
+ }
+
+
+}
+
+?>
Index: classes/site/ImportOJS1.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/site/ImportOJS1.inc.php,v
retrieving revision 1.59
diff -u -r1.59 ImportOJS1.inc.php
--- classes/site/ImportOJS1.inc.php 2 Dec 2008 22:39:42 -0000 1.59
+++ classes/site/ImportOJS1.inc.php 28 Jan 2009 19:24:26 -0000
@@ -555,7 +555,6 @@
$userDao = &DAORegistry::getDAO('UserDAO');
$roleDao = &DAORegistry::getDAO('RoleDAO');
- $notifyDao = &DAORegistry::getDAO('NotificationStatusDAO');
$result = &$this->importDao->retrieve('SELECT *, DECODE(chPassword, ?) AS chPassword FROM tblusers ORDER BY nUserID', $this->journalConfigInfo['chPasswordSalt']);
while (!$result->EOF) {
@@ -625,14 +624,6 @@
}
$userId = $user->getUserId();
- if ($row['bNotify']) {
- if ($existingUser) {
- // Just in case
- $notifyDao->setJournalNotifications($this->journalId, $userId, 0);
- }
- $notifyDao->setJournalNotifications($this->journalId, $userId, 1);
- }
-
if ($row['fkEditorID']) {
$role = new Role();
$role->setJournalId($this->journalId);
Index: classes/submission/author/AuthorAction.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/submission/author/AuthorAction.inc.php,v
retrieving revision 1.70
diff -u -r1.70 AuthorAction.inc.php
--- classes/submission/author/AuthorAction.inc.php 10 Dec 2008 23:37:27 -0000 1.70
+++ classes/submission/author/AuthorAction.inc.php 28 Jan 2009 19:24:26 -0000
@@ -277,6 +277,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionEditing', $article->getArticleId(), null, 'layout');
+ Notification::createNotification($user['id'], "notification.type.layoutComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_LAYOUT_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
@@ -389,6 +398,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionEditing', $article->getArticleId(), null, 'copyedit');
+ Notification::createNotification($user['id'], "notification.type.copyeditComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_COPYEDIT_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
@@ -432,6 +450,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionEditing', $article->getArticleId(), null, 'proofread');
+ Notification::createNotification($user['id'], "notification.type.proofreadComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_PROOFREAD_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
Index: classes/submission/common/Action.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/submission/common/Action.inc.php,v
retrieving revision 1.38
diff -u -r1.38 Action.inc.php
--- classes/submission/common/Action.inc.php 10 Dec 2008 23:37:27 -0000 1.38
+++ classes/submission/common/Action.inc.php 28 Jan 2009 19:24:26 -0000
@@ -149,7 +149,16 @@
} else {
$metadataForm->execute();
-
+
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds();
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submission', $article->getArticleId(), null, 'metadata');
+ Notification::createNotification($user['id'], "notification.type.metadataModified",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_METADATA_MODIFIED);
+ }
+
// Add log entry
$user = &Request::getUser();
import('article.log.ArticleLog');
@@ -257,6 +266,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionReview', $article->getArticleId(), null, 'editorDecision');
+ Notification::createNotification($user['id'], "notification.type.submissionComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_SUBMISSION_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email($commentForm->emailHelper());
}
Index: classes/submission/copyeditor/CopyeditorAction.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/submission/copyeditor/CopyeditorAction.inc.php,v
retrieving revision 1.55
diff -u -r1.55 CopyeditorAction.inc.php
--- classes/submission/copyeditor/CopyeditorAction.inc.php 10 Dec 2008 23:37:27 -0000 1.55
+++ classes/submission/copyeditor/CopyeditorAction.inc.php 28 Jan 2009 19:24:26 -0000
@@ -286,6 +286,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionEditing', $article->getArticleId(), null, 'layout');
+ Notification::createNotification($user['id'], "notification.type.layoutComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_LAYOUT_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
@@ -328,6 +337,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionEditing', $article->getArticleId(), null, 'coypedit');
+ Notification::createNotification($user['id'], "notification.type.copyeditComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_COPYEDIT_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
Index: classes/submission/layoutEditor/LayoutEditorAction.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/submission/layoutEditor/LayoutEditorAction.inc.php,v
retrieving revision 1.40
diff -u -r1.40 LayoutEditorAction.inc.php
--- classes/submission/layoutEditor/LayoutEditorAction.inc.php 10 Dec 2008 23:37:27 -0000 1.40
+++ classes/submission/layoutEditor/LayoutEditorAction.inc.php 28 Jan 2009 19:24:26 -0000
@@ -252,7 +252,16 @@
if ($commentForm->validate()) {
$commentForm->execute();
-
+
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionEditing', $article->getArticleId(), null, 'layout');
+ Notification::createNotification($user['id'], "notification.type.layoutComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_LAYOUT_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
@@ -294,7 +303,16 @@
if ($commentForm->validate()) {
$commentForm->execute();
-
+
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionEditing', $article->getArticleId(), null, 'proofread');
+ Notification::createNotification($user['id'], "notification.type.proofreadComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_PROOFREAD_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
Index: classes/submission/proofreader/ProofreaderAction.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/submission/proofreader/ProofreaderAction.inc.php,v
retrieving revision 1.52
diff -u -r1.52 ProofreaderAction.inc.php
--- classes/submission/proofreader/ProofreaderAction.inc.php 10 Dec 2008 23:37:27 -0000 1.52
+++ classes/submission/proofreader/ProofreaderAction.inc.php 28 Jan 2009 19:24:27 -0000
@@ -474,6 +474,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionEditing', $article->getArticleId(), null, 'proofread');
+ Notification::createNotification($user['id'], "notification.type.proofreadComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_PROOFREAD_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
@@ -516,7 +525,16 @@
if ($commentForm->validate()) {
$commentForm->execute();
-
+
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionEditing', $article->getArticleId(), null, 'layout');
+ Notification::createNotification($user['id'], "notification.type.layoutComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_LAYOUT_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
Index: classes/submission/reviewer/ReviewerAction.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/submission/reviewer/ReviewerAction.inc.php,v
retrieving revision 1.62
diff -u -r1.62 ReviewerAction.inc.php
--- classes/submission/reviewer/ReviewerAction.inc.php 10 Dec 2008 23:37:27 -0000 1.62
+++ classes/submission/reviewer/ReviewerAction.inc.php 28 Jan 2009 19:24:27 -0000
@@ -305,6 +305,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds();
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionReview', $article->getArticleId(), null, 'peerReview');
+ Notification::createNotification($user['id'], "notification.type.reviewerComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_REVIEWER_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
@@ -347,6 +356,21 @@
$reviewForm->readInputData();
if ($reviewForm->validate()) {
$reviewForm->execute();
+
+ // Send a notification to associated users
+ import('notification.Notification');
+ $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO');
+ $reviewAssignment = $reviewAssignmentDao->getReviewAssignmentById($reviewId);
+ $articleId = $reviewAssignment->getArticleId();
+ $articleDao =& DAORegistry::getDAO('ArticleDAO');
+ $article =& $articleDao->getArticle($articleId);
+ $notificationUsers = $article->getAssociatedUserIds();
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionReview', $article->getArticleId(), null, 'peerReview');
+ Notification::createNotification($user['id'], "notification.type.reviewerFormComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_REVIEWER_FORM_COMMENT);
+ }
+
} else {
$reviewForm->display();
return false;
Index: classes/submission/sectionEditor/SectionEditorAction.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/submission/sectionEditor/SectionEditorAction.inc.php,v
retrieving revision 1.173
diff -u -r1.173 SectionEditorAction.inc.php
--- classes/submission/sectionEditor/SectionEditorAction.inc.php 10 Dec 2008 23:37:27 -0000 1.173
+++ classes/submission/sectionEditor/SectionEditorAction.inc.php 28 Jan 2009 19:24:28 -0000
@@ -1758,6 +1758,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds();
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionReview', $article->getArticleId(), null, 'peerReview');
+ Notification::createNotification($user['id'], "notification.type.reviewerComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_REVIEWER_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
@@ -1801,6 +1810,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionReview', $article->getArticleId(), null, 'editorDecision');
+ Notification::createNotification($user['id'], "notification.type.editorDecisionComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_EDITOR_DECISION_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
@@ -2044,6 +2062,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionEditing', $article->getArticleId(), null, 'copyedit');
+ Notification::createNotification($user['id'], "notification.type.copyeditComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_COPYEDIT_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
@@ -2087,6 +2114,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionEditing', $article->getArticleId(), null, 'layout');
+ Notification::createNotification($user['id'], "notification.type.layoutComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_LAYOUT_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
@@ -2130,6 +2166,15 @@
if ($commentForm->validate()) {
$commentForm->execute();
+ // Send a notification to associated users
+ import('notification.Notification');
+ $notificationUsers = $article->getAssociatedUserIds(true, false);
+ foreach ($notificationUsers as $user) {
+ $url = Request::url(null, $user['role'], 'submissionEditing', $article->getArticleId(), null, 'proofread');
+ Notification::createNotification($user['id'], "notification.type.proofreadComment",
+ $article->getArticleTitle(), $url, 1, NOTIFICATION_TYPE_PROOFREAD_COMMENT);
+ }
+
if ($emailComment) {
$commentForm->email();
}
Index: classes/user/form/ProfileForm.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/user/form/ProfileForm.inc.php,v
retrieving revision 1.35
diff -u -r1.35 ProfileForm.inc.php
--- classes/user/form/ProfileForm.inc.php 5 Nov 2008 00:46:40 -0000 1.35
+++ classes/user/form/ProfileForm.inc.php 28 Jan 2009 19:24:28 -0000
@@ -108,7 +108,6 @@
$roleDao = &DAORegistry::getDAO('RoleDAO');
$journalDao = &DAORegistry::getDAO('JournalDAO');
- $notificationStatusDao = &DAORegistry::getDAO('NotificationStatusDAO');
$userSettingsDao = &DAORegistry::getDAO('UserSettingsDAO');
$journals = &$journalDao->getJournals();
@@ -124,7 +123,6 @@
$journals = &$journalDao->getJournals();
$journals = &$journals->toArray();
- $journalNotifications = &$notificationStatusDao->getJournalNotifications($user->getUserId());
$countryDao =& DAORegistry::getDAO('CountryDAO');
$countries =& $countryDao->getCountries();
@@ -257,7 +255,6 @@
$roleDao = &DAORegistry::getDAO('RoleDAO');
$journalDao = &DAORegistry::getDAO('JournalDAO');
- $notificationStatusDao = &DAORegistry::getDAO('NotificationStatusDAO');
// Roles
$journal =& Request::getJournal();
@@ -288,21 +285,6 @@
}
}
- $journals = &$journalDao->getJournals();
- $journals = &$journals->toArray();
- $journalNotifications = $notificationStatusDao->getJournalNotifications($user->getUserId());
-
- $readerNotify = Request::getUserVar('journalNotify');
-
- foreach ($journals as $thisJournal) {
- $thisJournalId = $thisJournal->getJournalId();
- $currentlyReceives = !empty($journalNotifications[$thisJournalId]);
- $shouldReceive = !empty($readerNotify) && in_array($thisJournal->getJournalId(), $readerNotify);
- if ($currentlyReceives != $shouldReceive) {
- $notificationStatusDao->setJournalNotifications($thisJournalId, $user->getUserId(), $shouldReceive);
- }
- }
-
$openAccessNotify = Request::getUserVar('openAccessNotify');
$userSettingsDao = &DAORegistry::getDAO('UserSettingsDAO');
Index: classes/user/form/RegistrationForm.inc.php
===================================================================
RCS file: /cvs/ojs2/classes/user/form/RegistrationForm.inc.php,v
retrieving revision 1.51
diff -u -r1.51 RegistrationForm.inc.php
--- classes/user/form/RegistrationForm.inc.php 5 Nov 2008 00:46:40 -0000 1.51
+++ classes/user/form/RegistrationForm.inc.php 28 Jan 2009 19:24:28 -0000
@@ -320,16 +320,6 @@
}
}
- // By default, self-registering readers will receive
- // journal updates. (The double set is here to prevent a
- // duplicate insert error msg if there was a notification entry
- // left over from a previous role.)
- if (isset($allowedRoles['reader']) && $this->getData($allowedRoles['reader'])) {
- $notificationStatusDao = &DAORegistry::getDAO('NotificationStatusDAO');
- $notificationStatusDao->setJournalNotifications($journal->getJournalId(), $userId, false);
- $notificationStatusDao->setJournalNotifications($journal->getJournalId(), $userId, true);
- }
-
if (isset($allowedRoles['reader']) && $this->getData('openAccessNotification')) {
$userSettingsDao = &DAORegistry::getDAO('UserSettingsDAO');
$userSettingsDao->updateSetting($userId, 'openAccessNotification', true, 'bool', $journal->getJournalId());
Index: dbscripts/xml/ojs_schema.xml
===================================================================
RCS file: /cvs/ojs2/dbscripts/xml/ojs_schema.xml,v
retrieving revision 1.172
diff -u -r1.172 ojs_schema.xml
--- dbscripts/xml/ojs_schema.xml 27 Oct 2008 16:00:58 -0000 1.172
+++ dbscripts/xml/ojs_schema.xml 28 Jan 2009 19:24:28 -0000
@@ -306,22 +306,6 @@
| - - | -- - | -
| - - | -- - | -
| {translate key="user.profile.form.publishedNotifications"} | -
- {/if}
-
- - - {if $smarty.foreach.journalNotifications.last} - |
-