more robust handling of new JIDs
darcs-hash:20080624015616-34904-c1ff985257c8c57aacf68439488d628a8b4d2e38.gz
This commit is contained in:
parent
939a3e48d8
commit
e330eb50d2
@ -62,19 +62,26 @@ class ImsettingsAction extends SettingsAction {
|
|||||||
|
|
||||||
function handle_post() {
|
function handle_post() {
|
||||||
|
|
||||||
$jabber = jabber_normalize_jid($this->trimmed('jabber'));
|
$jabber = $this->trimmed('jabber');
|
||||||
$jabbernotify = $this->boolean('jabbernotify');
|
$jabbernotify = $this->boolean('jabbernotify');
|
||||||
$updatefrompresence = $this->boolean('updatefrompresence');
|
$updatefrompresence = $this->boolean('updatefrompresence');
|
||||||
|
|
||||||
|
# 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)) {
|
if (!jabber_valid_base_jid($jabber)) {
|
||||||
$this->show_form(_('Not a valid Jabber ID'));
|
$this->show_form(_('Not a valid Jabber ID'));
|
||||||
return;
|
return;
|
||||||
} else if ($this->jabber_exists($jabber)) {
|
} else if ($this->jabber_exists($jabber)) {
|
||||||
$this->show_form(_('Not a valid Jabber ID'));
|
$this->show_form(_('Jabber ID already belongs to another user.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
# Some validation
|
|
||||||
|
|
||||||
$user = common_current_user();
|
$user = common_current_user();
|
||||||
|
|
||||||
|
@ -27,11 +27,14 @@ function jabber_valid_base_jid($jid) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function jabber_normalize_jid($jid) {
|
function jabber_normalize_jid($jid) {
|
||||||
preg_match("/(?:([^\@]+)\@)?([^\/]+)(?:\/(.*))?$/", $jid, $matches);
|
if (preg_match("/(?:([^\@]+)\@)?([^\/]+)(?:\/(.*))?$/", $jid, $matches)) {
|
||||||
$node = $matches[1];
|
$node = $matches[1];
|
||||||
$server = $matches[2];
|
$server = $matches[2];
|
||||||
$resource = $matches[3];
|
$resource = $matches[3];
|
||||||
return strtolower($node.'@'.$server);
|
return strtolower($node.'@'.$server);
|
||||||
|
} else {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function jabber_connect($resource=NULL) {
|
function jabber_connect($resource=NULL) {
|
||||||
|
Loading…
Reference in New Issue
Block a user