]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch '0.8.x' into cachenonexistent
authorEvan Prodromou <evan@controlyourself.ca>
Sun, 5 Jul 2009 15:53:39 +0000 (11:53 -0400)
committerEvan Prodromou <evan@controlyourself.ca>
Sun, 5 Jul 2009 15:53:39 +0000 (11:53 -0400)
actions/twitapifriendships.php
classes/Fave.php
classes/User.php
config.php.sample
lib/profilelist.php
lib/router.php
lib/twitterapi.php
theme/default/css/display.css
theme/identica/css/display.css

index 29eb4cc0ff007f49b5346789d60a9a4c0397c814..5fb55e9ffed488ddcd47ae6bfc08ff5ecb109e14 100644 (file)
@@ -160,4 +160,85 @@ class TwitapifriendshipsAction extends TwitterapiAction
 
     }
 
-}
\ No newline at end of file
+    function show($args, $apidata)
+    {
+        parent::handle($args);
+
+        if (!in_array($apidata['content-type'], array('xml', 'json'))) {
+            $this->clientError(_('API method not found!'), $code = 404);
+            return;
+        }
+
+        $source_id          = (int)$this->trimmed('source_id');
+        $source_screen_name = $this->trimmed('source_screen_name');
+
+        // If the source is not specified for an unauthenticated request,
+        // the method will return an HTTP 403.
+
+        if (empty($source_id) && empty($source_screen_name)) {
+            if (empty($apidata['user'])) {
+                $this->clientError(_('Could not determine source user.'),
+                        $code = 403);
+                return;
+            }
+        }
+
+        $source = null;
+
+        if (!empty($source_id)) {
+            $source = User::staticGet($source_id);
+        } elseif (!empty($source_screen_name)) {
+            $source = User::staticGet('nickname', $source_screen_name);
+        } else {
+            $source = $apidata['user'];
+        }
+
+        // If a source or target is specified but does not exist,
+        // the method will return an HTTP 404.
+
+        if (empty($source)) {
+            $this->clientError(_('Could not determine source user.'),
+                $code = 404);
+            return;
+        }
+
+        $target_id          = (int)$this->trimmed('target_id');
+        $target_screen_name = $this->trimmed('target_screen_name');
+
+        $target = null;
+
+        if (!empty($target_id)) {
+            $target = User::staticGet($target_id);
+        } elseif (!empty($target_screen_name)) {
+            $target = User::staticGet('nickname', $target_screen_name);
+        } else {
+            $this->clientError(_('Target user not specified.'),
+                $code = 403);
+            return;
+        }
+
+        if (empty($target)) {
+            $this->clientError(_('Could not find target user.'),
+                $code = 404);
+            return;
+        }
+
+        $result = $this->twitter_relationship_array($source, $target);
+
+        switch ($apidata['content-type']) {
+        case 'xml':
+            $this->init_document('xml');
+            $this->show_twitter_xml_relationship($result[relationship]);
+            $this->end_document('xml');
+            break;
+        case 'json':
+            $this->init_document('json');
+            print json_encode($result);
+            $this->end_document('json');
+            break;
+        default:
+            break;
+        }
+    }
+
+}
index f4cf6256ff314af7aca2b5b7867c5dca011b8177..c3ec62dcf0176c7166d4f2dbb5e69e9791b86a2e 100644 (file)
@@ -42,7 +42,7 @@ class Fave extends Memcached_DataObject
         $ids = Notice::stream(array('Fave', '_streamDirect'),
                               array($user_id, $own),
                               ($own) ? 'fave:ids_by_user_own:'.$user_id :
-                              'fave:by_user:'.$user_id,
+                              'fave:ids_by_user:'.$user_id,
                               $offset, $limit);
         return $ids;
     }
index 62a3f8a66e214835548ceec645e021587e54a1bd..04b38a0d2223ef7d240768ec0de6282d03bc51a8 100644 (file)
@@ -491,6 +491,8 @@ class User extends Memcached_DataObject
             // ;last cache, too
             $cache->delete(common_cache_key('fave:ids_by_user:'.$this->id));
             $cache->delete(common_cache_key('fave:ids_by_user:'.$this->id.';last'));
+            $cache->delete(common_cache_key('fave:ids_by_user_own:'.$this->id));
+            $cache->delete(common_cache_key('fave:ids_by_user_own:'.$this->id.';last'));
         }
     }
 
index 4f8f715bebf7f877628253a3813bb387225b2ce6..57aa6a6c8cc20b620af337cb66eb750e37969f5e 100644 (file)
@@ -36,7 +36,7 @@ $config['site']['path'] = 'laconica';
 // If you want logging sent to a file instead of syslog
 // $config['site']['logfile'] = '/tmp/laconica.log';
 
-// Change the syslog facility that Laconica logs to
+// Change the syslog facility that Laconica logs to (default is LOG_USER)
 // $config['syslog']['facility'] = LOG_LOCAL7;
 
 // Enables extra log information, for example full details of PEAR DB errors
index e13d56a9a697c30edaf1071cb46f2d6f1e3322f7..774538a4b611de3a892c77c313b14ba2bb4a3088 100644 (file)
@@ -243,20 +243,20 @@ class ProfileListItem extends Widget
         $user = common_current_user();
 
         if (!empty($user) && $this->profile->id != $user->id) {
-            // Is it a local user? can't remote sub from a list
-            // XXX: make that possible!
-            $other = User::staticGet('id', $this->profile->id);
-            if (!empty($other)) {
-                $this->out->elementStart('li', 'entity_subscribe');
-                if ($user->isSubscribed($this->profile)) {
-                    $usf = new UnsubscribeForm($this->out, $this->profile);
-                    $usf->show();
-                } else {
+            $this->out->elementStart('li', 'entity_subscribe');
+            if ($user->isSubscribed($this->profile)) {
+                $usf = new UnsubscribeForm($this->out, $this->profile);
+                $usf->show();
+            } else {
+                // Is it a local user? can't remote sub from a list
+                // XXX: make that possible!
+                $other = User::staticGet('id', $this->profile->id);
+                if (!empty($other)) {
                     $sf = new SubscribeForm($this->out, $this->profile);
                     $sf->show();
                 }
-                $this->out->elementEnd('li');
             }
+            $this->out->elementEnd('li');
         }
     }
 
index 784ea988237dec40aacf38193335bafc100c1051..50b733453e1d1266dfc9d7538500169a6dc1dea2 100644 (file)
@@ -317,7 +317,7 @@ class Router
         $m->connect('api/friendships/:method',
                     array('action' => 'api',
                           'apiaction' => 'friendships'),
-                    array('method' => 'exists(\.(xml|json))'));
+                    array('method' => '(show|exists)(\.(xml|json))'));
 
         // Social graph
 
index f538a0298148e2c49659dab968e5cb7c5c89a381..40e5b5067796e45e1d914a3d2bca335ddd16524a 100644 (file)
@@ -278,6 +278,67 @@ class TwitterapiAction extends Action
         return $twitter_dm;
     }
 
+    function twitter_relationship_array($source, $target)
+    {
+        $relationship = array();
+
+        $relationship['source'] =
+            $this->relationship_details_array($source, $target);
+        $relationship['target'] =
+            $this->relationship_details_array($target, $source);
+
+        return array('relationship' => $relationship);
+    }
+
+    function relationship_details_array($source, $target)
+    {
+        $details = array();
+
+        $details['screen_name'] = $source->nickname;
+        $details['followed_by'] = $target->isSubscribed($source);
+        $details['following'] = $source->isSubscribed($target);
+
+        $notifications = false;
+
+        if ($source->isSubscribed($target)) {
+
+            $sub = Subscription::pkeyGet(array('subscriber' =>
+                $source->id, 'subscribed' => $target->id));
+
+            if (!empty($sub)) {
+                $notifications = ($sub->jabber || $sub->sms);
+            }
+        }
+
+        $details['notifications_enabled'] = $notifications;
+        $details['blocking'] = $source->hasBlocked($target);
+        $details['id'] = $source->id;
+
+        return $details;
+    }
+
+    function show_twitter_xml_relationship($relationship)
+    {
+        $this->elementStart('relationship');
+
+        foreach($relationship as $element => $value) {
+            if ($element == 'source' || $element == 'target') {
+                $this->elementStart($element);
+                $this->show_xml_relationship_details($value);
+                $this->elementEnd($element);
+            }
+        }
+
+        $this->elementEnd('relationship');
+    }
+
+    function show_xml_relationship_details($details)
+    {
+        foreach($details as $element => $value) {
+            $this->element($element, null, $value);
+        }
+    }
+
     function show_twitter_xml_status($twitter_status)
     {
         $this->elementStart('status');
index 89197bddb941dd39056e7bd352071f1233a56a33..251d6706bee4de44330563b2b1279f4baf484ce7 100644 (file)
@@ -115,12 +115,14 @@ border-color:transparent;
 background-color:#FFFFFF;
 }
 
-#site_nav_local_views a {
-background-color:rgba(194, 194, 194, 0.5);
+#site_nav_local_views li {
 box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5);
 -moz-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5);
 -webkit-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5);
 }
+#site_nav_local_views a {
+background-color:rgba(194, 194, 194, 0.5);
+}
 #site_nav_local_views a:hover {
 background-color:rgba(255, 255, 255, 0.7);
 }
index 025debf34caf91049c7f2e6c597d2a5017af3c3c..42a4573a741af070a7ff4452969ab57e77ae75de 100644 (file)
@@ -115,12 +115,14 @@ border-color:transparent;
 background-color:#FFFFFF;
 }
 
-#site_nav_local_views a {
-background-color:rgba(194, 194, 194, 0.5);
+#site_nav_local_views li {
 box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5);
 -moz-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5);
 -webkit-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5);
 }
+#site_nav_local_views a {
+background-color:rgba(194, 194, 194, 0.5);
+}
 #site_nav_local_views a:hover {
 background-color:rgba(255, 255, 255, 0.7);
 }