]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Handle the ways Twitter accepts passing the user in the query string.
authorDan Moore <dan@moore.cx>
Thu, 4 Jun 2009 21:57:03 +0000 (17:57 -0400)
committerDan Moore <dan@moore.cx>
Thu, 4 Jun 2009 21:57:03 +0000 (17:57 -0400)
actions/api.php
lib/twitterapi.php

index b25ba99f30cfcf44b56f6a477856b9c1c82e675c..b8da852b536d469682f6fcee277894247696695e 100644 (file)
@@ -144,8 +144,8 @@ class ApiAction extends Action
         }
 
         if (in_array($fullname, $bareauth)) {
-            # bareauth: only needs auth if without an argument
-            if ($this->api_arg) {
+            # bareauth: only needs auth if without an argument or query param specifying user
+            if ($this->api_arg || $this->arg('id') || is_numeric($this->arg('user_id')) || $this->arg('screen_name')) {
                 return false;
             } else {
                 return true;
index 1d527b935fb0537e7bef8e41b19950a960ad57f5..ca8b03cdcd79f6230df08db5bce0495932cd8773 100644 (file)
@@ -673,7 +673,27 @@ class TwitterapiAction extends Action
     function get_user($id, $apidata=null)
     {
         if (!$id) {
-            return $apidata['user'];
+            
+            // Twitter supports these other ways of passing the user ID
+            if (is_numeric($this->arg('id'))) {
+                return User::staticGet($this->arg('id'));
+            } else if ($this->arg('id')) {
+                $nickname = common_canonical_nickname($this->arg('id'));
+                return User::staticGet('nickname', $nickname);
+            } else if ($this->arg('user_id')) {
+                // This is to ensure that a non-numeric user_id still 
+                // overrides screen_name even if it doesn't get used
+                if (is_numeric($this->arg('user_id'))) {
+                    return User::staticGet('id', $this->arg('user_id'));
+                }
+            } else if ($this->arg('screen_name')) {
+                $nickname = common_canonical_nickname($this->arg('screen_name'));
+                return User::staticGet('nickname', $nickname);
+            } else {
+                // Fall back to trying the currently authenticated user
+                return $apidata['user'];
+            }
+            
         } else if (is_numeric($id)) {
             return User::staticGet($id);
         } else {