diff options
author | Evan Prodromou <evan@controlezvous.ca> | 2008-06-23 21:42:41 -0400 |
---|---|---|
committer | Evan Prodromou <evan@controlezvous.ca> | 2008-06-23 21:42:41 -0400 |
commit | a8a2f40696daf5dbb290fd16ce998beb6a219aaf (patch) | |
tree | 2a37c2bf750bbdc58e3100c9d651d4d275f49bfa /lib/jabber.php | |
parent | d1e55b3777fe5c988c6ec605987d5c616cbdbc06 (diff) |
broadcast notices to jabber
darcs-hash:20080624014241-34904-39ace8e82e50e5f50c5980b5fb3256184a7c9050.gz
Diffstat (limited to 'lib/jabber.php')
-rw-r--r-- | lib/jabber.php | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/jabber.php b/lib/jabber.php index 262fbcbb9..bf0d7cf31 100644 --- a/lib/jabber.php +++ b/lib/jabber.php @@ -19,6 +19,8 @@ if (!defined('LACONICA')) { exit(1); } +require_once('xmpp.php'); + function jabber_valid_base_jid($jid) { # Cheap but effective return Validate::email($jid); @@ -96,4 +98,31 @@ function jabber_confirm_address($code, $nickname, $address) { jabber_send_message($address, $body); } + +function jabber_broadcast_notice($notice) { + # First, get users subscribed to this profile + # XXX: use a join here rather than looping through results + $profile = Profile::staticGet($notice->profile_id); + if (!$profile) { + common_log(LOG_WARNING, 'Refusing to broadcast notice with ' . + 'unknown profile ' . common_log_objstring($notice), + __FILE__); + return false; + } + $sub = new Subscription(); + $sub->subscribed = $notice->profile_id; + if ($sub->find()) { + $msg = jabber_format_notice($profile, $notice); + while ($sub->fetch()) { + $user = User::staticGet($sub->subscriber); + if ($user && $user->jabber) { + jabber_send_message($user->jabber, + $msg); + } + } + } +} +function jabber_format_notice(&$profile, &$notice) { + return = $profile->nickname . ': ' . $notice->content; +} |