From e330eb50d2c36505270375360303083decedee98 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Mon, 23 Jun 2008 21:56:16 -0400 Subject: [PATCH] more robust handling of new JIDs darcs-hash:20080624015616-34904-c1ff985257c8c57aacf68439488d628a8b4d2e38.gz --- actions/imsettings.php | 25 ++++++++++++++++--------- lib/jabber.php | 13 ++++++++----- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/actions/imsettings.php b/actions/imsettings.php index 0496aaacd5..d8fc8b87ca 100644 --- a/actions/imsettings.php +++ b/actions/imsettings.php @@ -62,19 +62,26 @@ class ImsettingsAction extends SettingsAction { function handle_post() { - $jabber = jabber_normalize_jid($this->trimmed('jabber')); + $jabber = $this->trimmed('jabber'); $jabbernotify = $this->boolean('jabbernotify'); $updatefrompresence = $this->boolean('updatefrompresence'); - if (!jabber_valid_base_jid($jabber)) { - $this->show_form(_('Not a valid Jabber ID')); - return; - } else if ($this->jabber_exists($jabber)) { - $this->show_form(_('Not a valid Jabber ID')); - return; - } - # Some validation + + if ($jabber) { + $jabber = jabber_normalize_jid($jabber); + if (!$jabber) { + $this->show_form(_('Cannot normalize that Jabber ID')); + return; + } + if (!jabber_valid_base_jid($jabber)) { + $this->show_form(_('Not a valid Jabber ID')); + return; + } else if ($this->jabber_exists($jabber)) { + $this->show_form(_('Jabber ID already belongs to another user.')); + return; + } + } $user = common_current_user(); diff --git a/lib/jabber.php b/lib/jabber.php index e6529446b9..97d02544d6 100644 --- a/lib/jabber.php +++ b/lib/jabber.php @@ -27,11 +27,14 @@ function jabber_valid_base_jid($jid) { } function jabber_normalize_jid($jid) { - preg_match("/(?:([^\@]+)\@)?([^\/]+)(?:\/(.*))?$/", $jid, $matches); - $node = $matches[1]; - $server = $matches[2]; - $resource = $matches[3]; - return strtolower($node.'@'.$server); + if (preg_match("/(?:([^\@]+)\@)?([^\/]+)(?:\/(.*))?$/", $jid, $matches)) { + $node = $matches[1]; + $server = $matches[2]; + $resource = $matches[3]; + return strtolower($node.'@'.$server); + } else { + return NULL; + } } function jabber_connect($resource=NULL) {