* In a multi-site queuedaemon.php run, one connection will be instantiated
* for each site being handled by the current process that has XMPP enabled.
*/
-
class XmppManager extends IoManager
{
protected $site = null;
protected $pingid = 0;
protected $lastping = null;
+ protected $conn = null;
static protected $singletons = array();
public static function get()
{
if (common_config('xmpp', 'enabled')) {
- $site = common_config('site', 'server');
+ $site = StatusNet::currentSite();
if (empty(self::$singletons[$site])) {
self::$singletons[$site] = new XmppManager();
}
function __construct()
{
- $this->site = common_config('site', 'server');
+ $this->site = StatusNet::currentSite();
$this->resource = common_config('xmpp', 'resource') . 'daemon';
}
$this->conn->addEventHandler('reconnect', 'handle_reconnect', $this);
$this->conn->setReconnectTimeout(600);
+ // @todo Needs i18n?
jabber_send_presence("Send me a message to post a notice", 'available', null, 'available', 100);
return !is_null($this->conn);
$this->conn->processTime(0);
return true;
} else {
+ common_log(LOG_ERR, __METHOD__ . ' failed: 0 bytes sent');
return false;
}
} else {
// Can't send right now...
+ common_log(LOG_ERR, __METHOD__ . ' failed: XMPP server connection currently down');
return false;
}
}
$from = jabber_normalize_jid($pl['from']);
if ($pl['type'] != 'chat') {
- $this->log(LOG_WARNING, "Ignoring message of type ".$pl['type']." from $from.");
+ $this->log(LOG_WARNING, "Ignoring message of type ".$pl['type']." from $from: " . $pl['xml']->toString());
return;
}
if (mb_strlen($pl['body']) == 0) {
- $this->log(LOG_WARNING, "Ignoring message with empty body from $from.");
+ $this->log(LOG_WARNING, "Ignoring message with empty body from $from: " . $pl['xml']->toString());
return;
}
$_cur = $user;
if (!$user) {
- $this->from_site($from, 'Unknown user; go to ' .
- common_local_url('imsettings') .
- ' to add your address to your account');
+ // TRANS: %s is the URL to the StatusNet site's Instant Messaging settings.
+ $this->from_site($from, sprintf(_('Unknown user. Go to %s ' .
+ 'to add your address to your account'),common_local_url('imsettings')));
$this->log(LOG_WARNING, 'Message from unknown user ' . $from);
return;
}
unset($pl);
}
-
function is_self($from)
{
return preg_match('/^'.strtolower(jabber_daemon_address()).'/', strtolower($from));
function add_notice(&$user, &$pl)
{
$body = trim($pl['body']);
- $content_shortened = common_shorten_links($body);
+ $content_shortened = $user->shortenLinks($body);
if (Notice::contentTooLong($content_shortened)) {
$from = jabber_normalize_jid($pl['from']);
- $this->from_site($from, sprintf(_('Message too long - maximum is %1$d characters, you sent %2$d.'),
+ // TRANS: Response to XMPP source when it sent too long a message.
+ // TRANS: %1$d the maximum number of allowed characters (used for plural), %2$d is the sent number.
+ $this->from_site($from, sprintf(_m('Message too long. Maximum is %1$d character, you sent %2$d.',
+ 'Message too long. Maximum is %1$d characters, you sent %2$d.',
+ Notice::maxContent()),
Notice::maxContent(),
mb_strlen($content_shortened)));
return;
*/
protected function switchSite()
{
- if ($this->site != common_config('site', 'server')) {
+ if ($this->site != StatusNet::currentSite()) {
common_log(LOG_DEBUG, __METHOD__ . ": switching to site $this->site");
$this->stats('switch');
- StatusNet::init($this->site);
+ StatusNet::switchSite($this->site);
}
}
}