]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/api.php
Merge commit 'origin/testing' into 0.9.x
[quix0rs-gnu-social.git] / lib / api.php
index 12e3ba5314c564fb499d2be3e755540462fae906..794b14050709dddb7d9503a3cad05b829a783cce 100644 (file)
@@ -53,13 +53,19 @@ if (!defined('STATUSNET')) {
 
 class ApiAction extends Action
 {
-     var $format   = null;
-     var $user     = null;
-     var $page     = null;
-     var $count    = null;
-     var $max_id   = null;
-     var $since_id = null;
-     var $since    = null;
+    const READ_ONLY  = 1;
+    const READ_WRITE = 2;
+
+    var $format    = null;
+    var $user      = null;
+    var $auth_user = null;
+    var $page      = null;
+    var $count     = null;
+    var $max_id    = null;
+    var $since_id  = null;
+    var $since     = null;
+
+    var $access    = self::READ_ONLY;  // read (default) or read-write
 
     /**
      * Initialization.
@@ -134,8 +140,8 @@ class ApiAction extends Action
         $twitter_user['protected'] = false; # not supported by StatusNet yet
         $twitter_user['followers_count'] = $profile->subscriberCount();
 
-        $user          = $profile->getUser();
         $design        = null;
+        $user          = $profile->getUser();
 
         // Note: some profiles don't have an associated user
 
@@ -145,6 +151,10 @@ class ApiAction extends Action
             $design = $user->getDesign();
         }
 
+        if (empty($design)) {
+            $design = $defaultDesign;
+        }
+
         $color = Design::toWebColor(empty($design->backgroundcolor) ? $defaultDesign->backgroundcolor : $design->backgroundcolor);
         $twitter_user['profile_background_color'] = ($color == null) ? '' : '#'.$color->hexValue();
         $color = Design::toWebColor(empty($design->textcolor) ? $defaultDesign->textcolor : $design->textcolor);
@@ -163,7 +173,7 @@ class ApiAction extends Action
 
         $timezone = 'UTC';
 
-        if (!empty($user) && !empty($user->timezone)) {
+        if (!empty($user) && $user->timezone) {
             $timezone = $user->timezone;
         }
 
@@ -188,13 +198,14 @@ class ApiAction extends Action
         $twitter_user['following'] = false;
         $twitter_user['notifications'] = false;
 
-        if (isset($apidata['user'])) {
+        if (isset($this->auth_user)) {
 
-            $twitter_user['following'] = $apidata['user']->isSubscribed($profile);
+            $twitter_user['following'] = $this->auth_user->isSubscribed($profile);
 
             // Notifications on?
             $sub = Subscription::pkeyGet(array('subscriber' =>
-                $apidata['user']->id, 'subscribed' => $profile->id));
+                                               $this->auth_user->id,
+                                               'subscribed' => $profile->id));
 
             if ($sub) {
                 $twitter_user['notifications'] = ($sub->jabber || $sub->sms);
@@ -216,14 +227,15 @@ class ApiAction extends Action
     {
         $base = $this->twitterSimpleStatusArray($notice, $include_user);
 
-        if (empty($notice->repeat_of)) {
-            return $base;
-        } else {
+        if (!empty($notice->repeat_of)) {
             $original = Notice::staticGet('id', $notice->repeat_of);
-            $original_array = $this->twitterSimpleStatusArray($original, $include_user);
-            $original_array['retweeted_status'] = $base;
-            return $original_array;
+            if (!empty($original)) {
+                $original_array = $this->twitterSimpleStatusArray($original, $include_user);
+                $base['retweeted_status'] = $original_array;
+            }
         }
+
+        return $base;
     }
 
     function twitterSimpleStatusArray($notice, $include_user=true)
@@ -603,7 +615,7 @@ class ApiAction extends Action
         $this->endDocument('xml');
     }
 
-    function showRssTimeline($notice, $title, $link, $subtitle, $suplink=null)
+    function showRssTimeline($notice, $title, $link, $subtitle, $suplink=null, $logo=null)
     {
 
         $this->initDocument('rss');
@@ -617,6 +629,15 @@ class ApiAction extends Action
                                          'href' => $suplink,
                                          'type' => 'application/json'));
         }
+
+        if (!is_null($logo)) {
+            $this->elementStart('image');
+            $this->element('link', null, $link);
+            $this->element('title', null, $title);
+            $this->element('url', null, $logo);
+            $this->elementEnd('image');
+        }
+
         $this->element('description', null, $subtitle);
         $this->element('language', null, 'en-us');
         $this->element('ttl', null, '40');
@@ -636,7 +657,7 @@ class ApiAction extends Action
         $this->endTwitterRss();
     }
 
-    function showAtomTimeline($notice, $title, $id, $link, $subtitle=null, $suplink=null, $selfuri=null)
+    function showAtomTimeline($notice, $title, $id, $link, $subtitle=null, $suplink=null, $selfuri=null, $logo=null)
     {
 
         $this->initDocument('atom');
@@ -645,6 +666,10 @@ class ApiAction extends Action
         $this->element('id', null, $id);
         $this->element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), null);
 
+        if (!is_null($logo)) {
+            $this->element('logo',null,$logo);
+        }
+
         if (!is_null($suplink)) {
             # For FriendFeed's SUP protocol
             $this->element('link', array('rel' => 'http://api.friendfeed.com/2008/03#sup',
@@ -769,7 +794,7 @@ class ApiAction extends Action
 
         $from = $message->getFrom();
 
-        $entry['title'] = sprintf('Message from %s to %s',
+        $entry['title'] = sprintf('Message from %1$s to %2$s',
             $from->nickname, $message->getTo()->nickname);
 
         $entry['content'] = common_xml_safe_str($message->rendered);