X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fjabber.php;h=bd7d6b7074d38acbeb713a124d67178812eebfbc;hb=dd4c0ebaa8717012e8bae58088c1a2760152bc41;hp=504e050ce3c64b1694ccfe62a9150927c16603a0;hpb=72d8bb12e15dac970a000c87c055021b293d8c73;p=quix0rs-gnu-social.git diff --git a/lib/jabber.php b/lib/jabber.php index 504e050ce3..bd7d6b7074 100644 --- a/lib/jabber.php +++ b/lib/jabber.php @@ -40,7 +40,7 @@ function jabber_daemon_address() { return common_config('xmpp', 'user') . '@' . common_config('xmpp', 'server'); } -function jabber_connect($resource=NULL, $status=NULL, $priority=NULL) { +function jabber_connect($resource=NULL) { static $conn = NULL; if (!$conn) { $conn = new XMPPHP_XMPP(common_config('xmpp', 'host') ? @@ -57,19 +57,22 @@ function jabber_connect($resource=NULL, $status=NULL, $priority=NULL) { common_config('xmpp', 'debug') ? XMPPHP_Log::LEVEL_VERBOSE : NULL ); - $conn->autoSubscribe(); - $conn->useEncryption(common_config('xmpp', 'encryption')); if (!$conn) { return false; } - $conn->connect(true); # true = persistent connection - if ($conn->isDisconnected()) { + + $conn->autoSubscribe(); + $conn->useEncryption(common_config('xmpp', 'encryption')); + + try { + $conn->connect(true); # true = persistent connection + } catch (XMPPHP_Exception $e) { + common_log(LOG_ERROR, $e->getMessage()); return false; } + $conn->processUntil('session_start'); -# $conn->getRoster(); - $conn->presence($presence, 'available', NULL, 'available', $priority); } return $conn; } @@ -89,6 +92,7 @@ function jabber_send_notice($to, $notice) { $msg = jabber_format_notice($profile, $notice); $entry = jabber_format_entry($profile, $notice); $conn->message($to, $msg, 'chat', NULL, $entry); + $profile->free(); return true; } @@ -128,15 +132,9 @@ function jabber_format_entry($profile, $notice) { $address .= "
\n"; $address .= "\n"; - $event = "\n"; - $event .= "\n"; - $event .= "\n"; - $event .= "\n"; - $event .= "\n"; - # FIXME: include the pubsub event, too. + # FIXME: include a pubsub event, too. + return $html . $entry . $address; -# return $entry . "\n" . $event; } function jabber_send_message($to, $body, $type='chat', $subject=NULL) { @@ -148,12 +146,14 @@ function jabber_send_message($to, $body, $type='chat', $subject=NULL) { return true; } -function jabber_send_presence($status, $show='available', $to=Null) { +function jabber_send_presence($status, $show='available', $to=NULL, + $type = 'available', $priority=NULL) +{ $conn = jabber_connect(); if (!$conn) { return false; } - $conn->presence($status, $show, $to); + $conn->presence($status, $show, $to, $type, $priority); return true; } @@ -205,6 +205,9 @@ function jabber_broadcast_notice($notice) { $msg = jabber_format_notice($profile, $notice); $entry = jabber_format_entry($profile, $notice); + $profile->free(); + unset($profile); + $sent_to = array(); $conn = jabber_connect(); @@ -222,8 +225,12 @@ function jabber_broadcast_notice($notice) { 'Sending reply notice ' . $notice->id . ' to ' . $user->jabber, __FILE__); $conn->message($user->jabber, $msg, 'chat', NULL, $entry); + $conn->processTime(0); + $sent_to[$user->id] = 1; } + $user->free(); + # Now, get users subscribed to this profile $user = new User(); @@ -239,9 +246,13 @@ function jabber_broadcast_notice($notice) { 'Sending notice ' . $notice->id . ' to ' . $user->jabber, __FILE__); $conn->message($user->jabber, $msg, 'chat', NULL, $entry); + # To keep the incoming queue from filling up, we service it after each send. + $conn->processTime(0); } } + $user->free(); + return true; } @@ -275,7 +286,9 @@ function jabber_public_notice($notice) { 'Sending notice ' . $notice->id . ' to public listener ' . $address, __FILE__); $conn->message($address, $msg, 'chat', NULL, $entry); + $conn->processTime(0); } + $profile->free(); } return true;