diff options
Diffstat (limited to 'mod/notifications/actions')
-rw-r--r-- | mod/notifications/actions/groupsave.php | 44 | ||||
-rw-r--r-- | mod/notifications/actions/save.php | 42 |
2 files changed, 86 insertions, 0 deletions
diff --git a/mod/notifications/actions/groupsave.php b/mod/notifications/actions/groupsave.php new file mode 100644 index 000000000..ca250c7fd --- /dev/null +++ b/mod/notifications/actions/groupsave.php @@ -0,0 +1,44 @@ +<?php + + /** + * Elgg notifications group save + * + * @package ElggNotifications + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + // Restrict to logged in users + gatekeeper(); + + // Load important global vars + global $SESSION; + global $NOTIFICATION_HANDLERS; + + // Get group memberships and condense them down to an array of guids + $groups = array(); + if ($groupmemberships = elgg_get_entities_from_relationship(array('relationship' => 'member', 'relationship_guid' => $_SESSION['user']->guid, 'types' => 'group', 'limit' => 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 new file mode 100644 index 000000000..a4a5903f9 --- /dev/null +++ b/mod/notifications/actions/save.php @@ -0,0 +1,42 @@ +<?php + + /** + * Elgg notifications + * + * @package ElggNotifications + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + // Restrict to logged in users + gatekeeper(); + + global $SESSION; + + global $NOTIFICATION_HANDLERS; + foreach($NOTIFICATION_HANDLERS as $method => $foo) { + $subscriptions[$method] = get_input($method.'subscriptions'); + $personal[$method] = get_input($method.'personal'); + $collections[$method] = get_input($method.'collections'); + + $metaname = 'collections_notifications_preferences_' . $method; + $_SESSION['user']->$metaname = $collections[$method]; + set_user_notification_setting($_SESSION['user']->guid, $method, ($personal[$method] == '1') ? true : false); + remove_entity_relationships($SESSION['user']->guid,'notify' . $method, false, 'user'); + } + + // Add new ones + foreach($subscriptions as $key => $subscription) + if (is_array($subscription) && !empty($subscription)) { + foreach($subscription as $subscriptionperson) { + add_entity_relationship($_SESSION['user']->guid, 'notify' . $key, $subscriptionperson); + } + } + + system_message(elgg_echo('notifications:subscriptions:success')); + + forward($_SERVER['HTTP_REFERER']); + +?>
\ No newline at end of file |