aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authormarcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-06-24 17:14:59 +0000
committermarcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-06-24 17:14:59 +0000
commitee18a9dc58e75113b3377d08f460788dde419869 (patch)
tree166497cedeae1f0a355241c4c28054e4e1e29b0f /engine
parent3e5f7cf353e44de8d4d22c19f3c904b0a16401a8 (diff)
downloadelgg-ee18a9dc58e75113b3377d08f460788dde419869.tar.gz
elgg-ee18a9dc58e75113b3377d08f460788dde419869.tar.bz2
Closes #83 - API & Interface for selecting notification methods
git-svn-id: https://code.elgg.org/elgg/trunk@1110 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine')
-rw-r--r--engine/lib/notification.php70
1 files changed, 70 insertions, 0 deletions
diff --git a/engine/lib/notification.php b/engine/lib/notification.php
index 8df897394..30dd8da99 100644
--- a/engine/lib/notification.php
+++ b/engine/lib/notification.php
@@ -85,6 +85,70 @@
}
/**
+ * Get the notification settings for a given user.
+ *
+ * @param int $user_guid The user id
+ * @return stdClass
+ */
+ function get_user_notification_settings($user_guid = 0)
+ {
+ $user_guid = (int)$user_guid;
+
+ if ($user_guid == 0)
+ $user_guid = $_SESSION['user']->guid;
+
+ $all_metadata = get_metadata_for_entity($user_guid);
+ if ($all_metadata)
+ {
+ $prefix = "notification:method:";
+ $return = new stdClass;
+
+ foreach ($all_metadata as $meta)
+ {
+ $name = substr($meta->name, strlen($prefix));
+ $value = $meta->value;
+
+ if (strpos($meta->name, $prefix) === 0)
+ $return->$name = $value;
+ }
+
+ return $return;
+ }
+
+ return false;
+ }
+
+ /**
+ * Set a user notification pref.
+ *
+ * @param int $user_guid The user id.
+ * @param string $method The delivery method (eg. email)
+ * @param bool $value On(true) or off(false).
+ * @return bool
+ */
+ function set_user_notification_setting($user_guid, $method, $value)
+ {
+ $user_guid = (int)$user_guid;
+ $method = sanitise_string($method);
+
+ if ($user_guid == 0)
+ $user_guid = $_SESSION['user']->guid;
+
+ $user = get_entity($user_guid);
+
+ if (($user) && ($user instanceof ElggUser))
+ {
+ $prefix = "notification:method:$method";
+ $user->$prefix = $value;
+ $user->save();
+
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
* Notification exception.
* @author Marcus Povey
*/
@@ -121,7 +185,13 @@
*/
function notification_init()
{
+ // Register a notification handler for the default email method
register_notification_handler("email", "email_notify_handler");
+
+ // Add settings view to user settings & register action
+ extend_elgg_settings_page('notifications/settings/usersettings', 'usersettings/user');
+ register_action("notifications/settings/usersettings/save");
+
}
// Register a startup event