]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
ticket 2055: added logos to Atom and RSS feeds
authorHue Bastard <hubris@kevin.(none)>
Tue, 8 Dec 2009 11:28:11 +0000 (21:28 +1000)
committerBrion Vibber <brion@status.net>
Sat, 12 Dec 2009 00:15:22 +0000 (16:15 -0800)
actions/apitimelinefavorites.php
actions/apitimelinefriends.php
actions/apitimelinegroup.php
actions/apitimelinementions.php
actions/apitimelinepublic.php
actions/apitimelinetag.php
actions/apitimelineuser.php
lib/api.php

index f84d7b4cb7eee65ff23aa300576757efd1184d5c..77e5cea1bd86c9540eb10bbd811aaad5025a26b3 100644 (file)
@@ -101,6 +101,7 @@ class ApiTimelineFavoritesAction extends ApiBareAuthAction
     function showTimeline()
     {
         $profile = $this->user->getProfile();
+        $avatar     = $profile->getAvatar(AVATAR_PROFILE_SIZE);
 
         $sitename   = common_config('site', 'name');
         $title      = sprintf(
@@ -121,20 +122,21 @@ class ApiTimelineFavoritesAction extends ApiBareAuthAction
             $profile->getBestName(),
             $this->user->nickname
         );
+        $logo = ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_PROFILE_SIZE);
 
         switch($this->format) {
         case 'xml':
             $this->showXmlTimeline($this->notices);
             break;
         case 'rss':
-            $this->showRssTimeline($this->notices, $title, $link, $subtitle);
+            $this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $logo, null, $logo);
             break;
         case 'atom':
             $selfuri = common_root_url() .
                 ltrim($_SERVER['QUERY_STRING'], 'p=');
             $this->showAtomTimeline(
                 $this->notices, $title, $id, $link, $subtitle,
-                null, $selfuri
+                null, $selfuri, $logo
             );
             break;
         case 'json':
index e84f7737235cce4958962bf2fca026e28674d359..09ba7a9691d9ef0bb0aa37147d9a402cdb330178 100644 (file)
@@ -110,6 +110,7 @@ class ApiTimelineFriendsAction extends ApiBareAuthAction
     function showTimeline()
     {
         $profile    = $this->user->getProfile();
+        $avatar     = $profile->getAvatar(AVATAR_PROFILE_SIZE);
         $sitename   = common_config('site', 'name');
         $title      = sprintf(_("%s and friends"), $this->user->nickname);
         $taguribase = common_config('integration', 'taguri');
@@ -121,13 +122,14 @@ class ApiTimelineFriendsAction extends ApiBareAuthAction
             _('Updates from %1$s and friends on %2$s!'),
             $this->user->nickname, $sitename
         );
+        $logo       = ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_PROFILE_SIZE);
 
         switch($this->format) {
         case 'xml':
             $this->showXmlTimeline($this->notices);
             break;
         case 'rss':
-            $this->showRssTimeline($this->notices, $title, $link, $subtitle);
+            $this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $logo);
             break;
         case 'atom':
 
@@ -144,7 +146,7 @@ class ApiTimelineFriendsAction extends ApiBareAuthAction
 
             $this->showAtomTimeline(
                 $this->notices, $title, $id, $link,
-                $subtitle, null, $selfuri
+                $subtitle, null, $selfuri, $logo
             );
             break;
         case 'json':
index de13e7eb9871b95c3ed5d90b869aa236db08e200..22c577f397ba5072413767a3510018b586ece83d 100644 (file)
@@ -105,6 +105,7 @@ class ApiTimelineGroupAction extends ApiPrivateAuthAction
     function showTimeline()
     {
         $sitename   = common_config('site', 'name');
+        $avatar     = $this->group->homepage_logo;
         $title      = sprintf(_("%s timeline"), $this->group->nickname);
         $taguribase = common_config('integration', 'taguri');
         $id         = "tag:$taguribase:GroupTimeline:" . $this->group->id;
@@ -117,13 +118,14 @@ class ApiTimelineGroupAction extends ApiPrivateAuthAction
             $this->group->nickname,
             $sitename
         );
+        $logo       = ($avatar) ? $avatar : User_group::defaultLogo(AVATAR_PROFILE_SIZE);
 
         switch($this->format) {
         case 'xml':
             $this->showXmlTimeline($this->notices);
             break;
         case 'rss':
-            $this->showRssTimeline($this->notices, $title, $link, $subtitle);
+            $this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $logo);
             break;
         case 'atom':
             $selfuri = common_root_url() .
@@ -136,7 +138,8 @@ class ApiTimelineGroupAction extends ApiPrivateAuthAction
                 $link,
                 $subtitle,
                 null,
-                $selfuri
+                $selfuri,
+                $logo
             );
             break;
         case 'json':
index 0956ccdceb54ee5a9d624b49e868657dddf38a47..19f40aebc9a818e582385b9a00154407c27e6044 100644 (file)
@@ -110,6 +110,7 @@ class ApiTimelineMentionsAction extends ApiBareAuthAction
     function showTimeline()
     {
         $profile = $this->user->getProfile();
+        $avatar     = $profile->getAvatar(AVATAR_PROFILE_SIZE);
 
         $sitename   = common_config('site', 'name');
         $title      = sprintf(
@@ -126,20 +127,21 @@ class ApiTimelineMentionsAction extends ApiBareAuthAction
             _('%1$s updates that reply to updates from %2$s / %3$s.'),
             $sitename, $this->user->nickname, $profile->getBestName()
         );
+        $logo = ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_PROFILE_SIZE);
 
         switch($this->format) {
         case 'xml':
             $this->showXmlTimeline($this->notices);
             break;
         case 'rss':
-            $this->showRssTimeline($this->notices, $title, $link, $subtitle);
+            $this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $logo);
             break;
         case 'atom':
             $selfuri = common_root_url() .
                 ltrim($_SERVER['QUERY_STRING'], 'p=');
             $this->showAtomTimeline(
                 $this->notices, $title, $id, $link, $subtitle,
-                null, $selfuri
+                null, $selfuri, $logo
             );
             break;
         case 'json':
index 7a85042592bd8f527122302a8f4ca0145e168e2d..633f3c36e6b73e2510bf2b8c396674f944b8938a 100644 (file)
@@ -103,6 +103,7 @@ class ApiTimelinePublicAction extends ApiPrivateAuthAction
     function showTimeline()
     {
         $sitename   = common_config('site', 'name');
+        $sitelogo   = (common_config('site', 'logo')) ? common_config('site', 'logo') : Theme::path('logo.png');
         $title      = sprintf(_("%s public timeline"), $sitename);
         $taguribase = common_config('integration', 'taguri');
         $id         = "tag:$taguribase:PublicTimeline";
@@ -114,13 +115,13 @@ class ApiTimelinePublicAction extends ApiPrivateAuthAction
             $this->showXmlTimeline($this->notices);
             break;
         case 'rss':
-            $this->showRssTimeline($this->notices, $title, $link, $subtitle);
+            $this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $sitelogo);
             break;
         case 'atom':
             $selfuri = common_root_url() . 'api/statuses/public_timeline.atom';
             $this->showAtomTimeline(
                 $this->notices, $title, $id, $link,
-                $subtitle, null, $selfuri
+                $subtitle, null, $selfuri, $sitelogo
             );
             break;
         case 'json':
index 452593c116a905db7f916685b38abe3df52b3869..1a50520f4543ca11642baeebb6e52e73ceaf719a 100644 (file)
@@ -98,6 +98,7 @@ class ApiTimelineTagAction extends ApiPrivateAuthAction
     function showTimeline()
     {
         $sitename   = common_config('site', 'name');
+        $sitelogo   = (common_config('site', 'logo')) ? common_config('site', 'logo') : Theme::path('logo.png');
         $title      = sprintf(_("Notices tagged with %s"), $this->tag);
         $link       = common_local_url(
             'tag',
@@ -116,7 +117,7 @@ class ApiTimelineTagAction extends ApiPrivateAuthAction
             $this->showXmlTimeline($this->notices);
             break;
         case 'rss':
-            $this->showRssTimeline($this->notices, $title, $link, $subtitle);
+            $this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $sitelogo);
             break;
         case 'atom':
             $selfuri = common_root_url() .
@@ -129,7 +130,8 @@ class ApiTimelineTagAction extends ApiPrivateAuthAction
                 $link,
                 $subtitle,
                 null,
-                $selfuri
+                $selfuri,
+                $sitelogo
             );
             break;
         case 'json':
index ca1d217725ed834c5a7411c7bfb71094943d8aa8..14c62a52e7db10f8e0e31f266571dccd71c83161 100644 (file)
@@ -112,6 +112,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction
     function showTimeline()
     {
         $profile = $this->user->getProfile();
+        $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
 
         $sitename   = common_config('site', 'name');
         $title      = sprintf(_("%s timeline"), $this->user->nickname);
@@ -125,6 +126,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction
             _('Updates from %1$s on %2$s!'),
             $this->user->nickname, $sitename
         );
+        $logo = ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_PROFILE_SIZE);
 
         // FriendFeed's SUP protocol
         // Also added RSS and Atom feeds
@@ -139,7 +141,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction
         case 'rss':
             $this->showRssTimeline(
                 $this->notices, $title, $link,
-                $subtitle, $suplink
+                $subtitle, $suplink, $logo
             );
             break;
         case 'atom':
@@ -153,7 +155,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction
             }
             $this->showAtomTimeline(
                 $this->notices, $title, $id, $link,
-                $subtitle, $suplink, $selfuri
+                $subtitle, $suplink, $selfuri, $logo
             );
             break;
         case 'json':
index eacb80dbea8495e74dacd607318db850125406b3..7ebe65dbb7cf4a2ed701e4ad280c1ca65e08316e 100644 (file)
@@ -134,17 +134,19 @@ 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
 
-        $defaultDesign = Design::siteDesign();
-
         if (!empty($user)) {
             $design = $user->getDesign();
         }
 
+        if (empty($design)) {
+            $design = Design::siteDesign();
+        }
+
         $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 +165,7 @@ class ApiAction extends Action
 
         $timezone = 'UTC';
 
-        if (!empty($user) && !empty($user->timezone)) {
+        if ($user->timezone) {
             $timezone = $user->timezone;
         }
 
@@ -586,7 +588,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');
@@ -600,6 +602,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');
@@ -619,7 +630,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');
@@ -628,6 +639,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',