forked from GNUsocial/gnu-social
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() {
|
||||
|
||||
$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();
|
||||
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user