]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/OStatus/actions/userxrd.php
Merge remote branch 'statusnet/1.0.x' into idle-irc-plugin
[quix0rs-gnu-social.git] / plugins / OStatus / actions / userxrd.php
index 414de9364b705c766e7faba58f4d499f42ac020b..6a6886eb8c78c06c5126680f68be94df26ac3472 100644 (file)
@@ -32,12 +32,19 @@ class UserxrdAction extends XrdAction
         parent::prepare($args);
 
         $this->uri = $this->trimmed('uri');
-        $acct = Discovery::normalize($this->uri);
-
-        list($nick, $domain) = explode('@', substr(urldecode($acct), 5));
-        $nick = common_canonical_nickname($nick);
-
-        $this->user = User::staticGet('nickname', $nick);
+        $this->uri = Discovery::normalize($this->uri);
+        
+        if (Discovery::isWebfinger($this->uri)) {
+            $parts = explode('@', substr(urldecode($this->uri), 5));
+            if (count($parts) == 2) {
+                list($nick, $domain) = $parts;
+                // @fixme confirm the domain too
+                $nick = common_canonical_nickname($nick);
+                $this->user = User::staticGet('nickname', $nick);
+            }
+        } else {
+            $this->user = User::staticGet('uri', $this->uri);
+        }
         if (!$this->user) {
             $this->clientError(_('No such user.'), 404);
             return false;