From a173f54d6fe468f9bc3868ac493570af2eb689a7 Mon Sep 17 00:00:00 2001 From: ben Date: Mon, 9 Feb 2009 14:55:22 +0000 Subject: Group notifications, all friends notification option git-svn-id: https://code.elgg.org/elgg/trunk@2686 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/notifications/actions/groupsave.php | 44 +++++++++++++++++ mod/notifications/actions/save.php | 4 +- mod/notifications/groups.php | 11 ++--- mod/notifications/languages/en.php | 5 ++ mod/notifications/start.php | 6 ++- .../notifications/subscriptions/collections.php | 57 ++++++++++++++++++---- .../notifications/subscriptions/groupsform.php | 9 +++- 7 files changed, 113 insertions(+), 23 deletions(-) create mode 100644 mod/notifications/actions/groupsave.php diff --git a/mod/notifications/actions/groupsave.php b/mod/notifications/actions/groupsave.php new file mode 100644 index 000000000..8a0ebd24b --- /dev/null +++ b/mod/notifications/actions/groupsave.php @@ -0,0 +1,44 @@ +guid,false,'group','',0,'',9999)) { + foreach($groupmemberships as $groupmembership) + $groups[] = $groupmembership->guid; + } + + foreach($NOTIFICATION_HANDLERS as $method => $foo) { + $subscriptions[$method] = get_input($method.'subscriptions'); + $personal[$method] = get_input($method.'personal'); + $collections[$method] = get_input($method.'collections'); + if (!empty($groups)) + foreach($groups as $group) + if (in_array($group,$subscriptions[$method])) { + add_entity_relationship($SESSION['user']->guid,'notify'.$method,$group); + } else { + remove_entity_relationship($SESSION['user']->guid,'notify'.$method,$group); + } + } + + system_message(elgg_echo('notifications:subscriptions:success')); + + forward($_SERVER['HTTP_REFERER']); + +?> \ No newline at end of file diff --git a/mod/notifications/actions/save.php b/mod/notifications/actions/save.php index eba2ad8a3..6277de71a 100644 --- a/mod/notifications/actions/save.php +++ b/mod/notifications/actions/save.php @@ -1,9 +1,9 @@ guid,false,'group','',0,'',99999)) { - foreach($groups_ents as $ent) - $groups[] = $ent->guid; - } $groupmemberships = get_entities_from_relationship('member',$_SESSION['user']->guid,false,'group','',0,'',9999); $body = elgg_view('input/form',array( 'body' => elgg_view('notifications/subscriptions/groupsform',array( - 'groupsubs' => $groups, 'groups' => $groupmemberships )), 'method' => 'post', - 'action' => '' + 'action' => $CONFIG->wwwroot . 'action/notificationsettings/groupsave' )); // Insert it into the correct canvas layout $body = elgg_view_layout('two_column_left_sidebar','',$body); // Draw the page - echo page_draw(elgg_echo('notifications:subscriptions:groups'),$body); + echo page_draw(elgg_echo('notifications:subscriptions:changesettings:groups'),$body); ?> \ No newline at end of file diff --git a/mod/notifications/languages/en.php b/mod/notifications/languages/en.php index 5121d46f7..06de1599c 100644 --- a/mod/notifications/languages/en.php +++ b/mod/notifications/languages/en.php @@ -2,6 +2,8 @@ $english = array( + 'friends:all' => 'All friends', + 'notifications:subscriptions:personal:description' => 'Receive notifications when actions are performed on your content', 'notifications:subscriptions:personal:title' => 'Personal notifications', @@ -10,11 +12,14 @@ 'notifications:subscriptions:collections:edit' => 'To edit your friends collections, click here.', 'notifications:subscriptions:changesettings' => 'Notifications', + 'notifications:subscriptions:changesettings:groups' => 'Group notifications', 'notification:method:email' => 'Email', 'notifications:subscriptions:title' => 'Notifications per user', 'notifications:subscriptions:description' => 'To receive notifications from your friends when they create new content, find them below and select the notification method you would like to use.', + 'notifications:subscriptions:groups:description' => 'To receive notifications when new content is added to a group you are a member of, find it below and select the notification method you would like to use.', + 'notifications:subscriptions:success' => 'Your subscription settings have been saved.', ); diff --git a/mod/notifications/start.php b/mod/notifications/start.php index 1691872a6..cdbe78cc1 100644 --- a/mod/notifications/start.php +++ b/mod/notifications/start.php @@ -17,8 +17,11 @@ */ function notifications_plugin_pagesetup() { global $CONFIG; - if (get_context() == 'settings') + if (get_context() == 'settings') { add_submenu_item(elgg_echo('notifications:subscriptions:changesettings'), $CONFIG->wwwroot . "mod/notifications/"); + if (is_plugin_enabled('groups')) + add_submenu_item(elgg_echo('notifications:subscriptions:changesettings:groups'), $CONFIG->wwwroot . "mod/notifications/groups.php"); + } } function notifications_plugin_init() { @@ -39,5 +42,6 @@ // Register action global $CONFIG; register_action("notificationsettings/save",false,$CONFIG->pluginspath . "notifications/actions/save.php"); + register_action("notificationsettings/groupsave",false,$CONFIG->pluginspath . "notifications/actions/groupsave.php"); ?> \ No newline at end of file diff --git a/mod/notifications/views/default/notifications/subscriptions/collections.php b/mod/notifications/views/default/notifications/subscriptions/collections.php index 8582069a8..41c3f76c8 100644 --- a/mod/notifications/views/default/notifications/subscriptions/collections.php +++ b/mod/notifications/views/default/notifications/subscriptions/collections.php @@ -1,8 +1,3 @@ -guid)) { - global $NOTIFICATION_HANDLERS; -?>