20 import(
'lib.pkp.classes.form.Form');
27 parent::__construct(
'user/notificationSettingsForm.tpl');
40 $userVars[] = $notificationSetting[
'settingName'];
41 $userVars[] = $notificationSetting[
'emailSettingName'];
53 NOTIFICATION_TYPE_SUBMISSION_SUBMITTED => array(
'settingName' =>
'notificationSubmissionSubmitted',
54 'emailSettingName' =>
'emailNotificationSubmissionSubmitted',
55 'settingKey' =>
'notification.type.submissionSubmitted'),
56 NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_REQUIRED => array(
'settingName' =>
'notificationEditorAssignmentRequired',
57 'emailSettingName' =>
'emailNotificationEditorAssignmentRequired',
58 'settingKey' =>
'notification.type.editorAssignmentTask'),
59 NOTIFICATION_TYPE_METADATA_MODIFIED => array(
'settingName' =>
'notificationMetadataModified',
60 'emailSettingName' =>
'emailNotificationMetadataModified',
61 'settingKey' =>
'notification.type.metadataModified'),
62 NOTIFICATION_TYPE_REVIEWER_COMMENT => array(
'settingName' =>
'notificationReviewerComment',
63 'emailSettingName' =>
'emailNotificationReviewerComment',
64 'settingKey' =>
'notification.type.reviewerComment'),
65 NOTIFICATION_TYPE_NEW_QUERY => array(
'settingName' =>
'notificationNewQuery',
66 'emailSettingName' =>
'emailNotificationNewQuery',
67 'settingKey' =>
'notification.type.queryAdded'),
68 NOTIFICATION_TYPE_QUERY_ACTIVITY => array(
'settingName' =>
'notificationQueryActivity',
69 'emailSettingName' =>
'emailNotificationQueryActivity',
70 'settingKey' =>
'notification.type.queryActivity'),
71 NOTIFICATION_TYPE_NEW_ANNOUNCEMENT => array(
'settingName' =>
'notificationNewAnnouncement',
72 'emailSettingName' =>
'emailNotificationNewAnnouncement',
73 'settingKey' =>
'notification.type.newAnnouncement'),
74 NOTIFICATION_TYPE_EDITORIAL_REPORT => array(
'settingName' =>
'notificationEditorialReport',
75 'emailSettingName' =>
'emailNotificationEditorialReport',
76 'settingKey' =>
'notification.type.editorialReport')
94 array(
'categoryKey' =>
'notification.type.public',
96 NOTIFICATION_TYPE_NEW_ANNOUNCEMENT,
99 array(
'categoryKey' =>
'notification.type.submissions',
101 NOTIFICATION_TYPE_SUBMISSION_SUBMITTED,
102 NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_REQUIRED,
103 NOTIFICATION_TYPE_METADATA_MODIFIED,
104 NOTIFICATION_TYPE_NEW_QUERY,
105 NOTIFICATION_TYPE_QUERY_ACTIVITY,
108 array(
'categoryKey' =>
'notification.type.reviewing',
110 NOTIFICATION_TYPE_REVIEWER_COMMENT,
113 array(
'categoryKey' =>
'user.role.editors',
115 NOTIFICATION_TYPE_EDITORIAL_REPORT,
128 function fetch($request, $template =
null, $display =
false) {
129 $context = $request->getContext();
130 $contextId = $context ? $context->getId() : CONTEXT_ID_NONE;
131 $userId = $request->getUser()->getId();
132 $notificationSubscriptionSettingsDao =
DAORegistry::getDAO(
'NotificationSubscriptionSettingsDAO');
134 $templateMgr->assign(array(
135 'blockedNotifications' => $notificationSubscriptionSettingsDao->getNotificationSubscriptionSettings(
'blocked_notification', $userId, $contextId),
136 'emailSettings' => $notificationSubscriptionSettingsDao->getNotificationSubscriptionSettings(
'blocked_emailed_notification', $userId, $contextId),
137 'notificationSettingCategories' => $this->getNotificationSettingCategories(),
138 'notificationSettings' => $this->getNotificationSettingsMap(),
140 return parent::fetch($request, $template, $display);
147 parent::execute(...$functionParams);
150 $user = $request->getUser();
151 $userId = $user->getId();
152 $context = $request->getContext();
153 $contextId = $context ? $context->getId() : CONTEXT_ID_NONE;
155 $blockedNotifications = array();
156 $emailSettings = array();
159 if(!$this->
getData($notificationSetting[
'settingName'])) $blockedNotifications[] = $settingId;
161 if($this->
getData($notificationSetting[
'emailSettingName'])) $emailSettings[] = $settingId;
164 $notificationSubscriptionSettingsDao =
DAORegistry::getDAO(
'NotificationSubscriptionSettingsDAO');
165 $notificationSubscriptionSettingsDao->updateNotificationSubscriptionSettings(
'blocked_notification', $blockedNotifications, $userId, $contextId);
166 $notificationSubscriptionSettingsDao->updateNotificationSubscriptionSettings(
'blocked_emailed_notification', $emailSettings, $userId, $contextId);