diff options
Diffstat (limited to 'mod/notifications/actions')
-rw-r--r-- | mod/notifications/actions/groupsave.php | 49 | ||||
-rw-r--r-- | mod/notifications/actions/save.php | 43 |
2 files changed, 92 insertions, 0 deletions
diff --git a/mod/notifications/actions/groupsave.php b/mod/notifications/actions/groupsave.php new file mode 100644 index 000000000..2dd2a6db3 --- /dev/null +++ b/mod/notifications/actions/groupsave.php @@ -0,0 +1,49 @@ +<?php + +/** + * Elgg notifications group save + * + * @package ElggNotifications + */ + +$current_user = elgg_get_logged_in_user_entity(); + +$guid = (int) get_input('guid', 0); +if (!$guid || !($user = get_entity($guid))) { + forward(); +} +if (($user->guid != $current_user->guid) && !$current_user->isAdmin()) { + forward(); +} + +// Get group memberships and condense them down to an array of guids +$groups = array(); +$options = array( + 'relationship' => 'member', + 'relationship_guid' => $user->guid, + 'types' => 'group', + 'limit' => 9999, +); +if ($groupmemberships = elgg_get_entities_from_relationship($options)) { + foreach($groupmemberships as $groupmembership) { + $groups[] = $groupmembership->guid; + } +} + +if (!empty($groups)) { + global $NOTIFICATION_HANDLERS; + foreach ($NOTIFICATION_HANDLERS as $method => $foo) { + $subscriptions[$method] = get_input($method.'subscriptions', array()); + foreach ($groups as $group) { + if (in_array($group, $subscriptions[$method])) { + add_entity_relationship($user->guid, 'notify'.$method, $group); + } else { + remove_entity_relationship($user->guid, 'notify'.$method, $group); + } + } + } +} + +system_message(elgg_echo('notifications:subscriptions:success')); + +forward(REFERER); diff --git a/mod/notifications/actions/save.php b/mod/notifications/actions/save.php new file mode 100644 index 000000000..3fe0001a3 --- /dev/null +++ b/mod/notifications/actions/save.php @@ -0,0 +1,43 @@ +<?php + +/** + * Elgg notifications + * + * @package ElggNotifications + */ + +$current_user = elgg_get_logged_in_user_entity(); + +$guid = (int) get_input('guid', 0); +if (!$guid || !($user = get_entity($guid))) { + forward(); +} +if (($user->guid != $current_user->guid) && !$current_user->isAdmin()) { + forward(); +} + +global $NOTIFICATION_HANDLERS; +$subscriptions = array(); +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; + $user->$metaname = $collections[$method]; + set_user_notification_setting($user->guid, $method, ($personal[$method] == '1') ? true : false); + remove_entity_relationships($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($user->guid, 'notify' . $key, $subscriptionperson); + } + } +} + +system_message(elgg_echo('notifications:subscriptions:success')); + +forward(REFERER); |