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;