From 1c370bb277d9b707a5f1956dd5e6856a9b278f5e Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 11 Dec 2009 12:39:29 -0500 Subject: show repeated notices correctly in API output --- lib/api.php | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'lib/api.php') diff --git a/lib/api.php b/lib/api.php index eacb80dbe..12e3ba531 100644 --- a/lib/api.php +++ b/lib/api.php @@ -213,6 +213,20 @@ class ApiAction extends Action } function twitterStatusArray($notice, $include_user=true) + { + $base = $this->twitterSimpleStatusArray($notice, $include_user); + + if (empty($notice->repeat_of)) { + return $base; + } else { + $original = Notice::staticGet('id', $notice->repeat_of); + $original_array = $this->twitterSimpleStatusArray($original, $include_user); + $original_array['retweeted_status'] = $base; + return $original_array; + } + } + + function twitterSimpleStatusArray($notice, $include_user=true) { $profile = $notice->getProfile(); @@ -446,9 +460,9 @@ class ApiAction extends Action } } - function showTwitterXmlStatus($twitter_status) + function showTwitterXmlStatus($twitter_status, $tag='status') { - $this->elementStart('status'); + $this->elementStart($tag); foreach($twitter_status as $element => $value) { switch ($element) { case 'user': @@ -463,11 +477,14 @@ class ApiAction extends Action case 'geo': $this->showGeoRSS($value); break; + case 'retweeted_status': + $this->showTwitterXmlStatus($value, 'retweeted_status'); + break; default: $this->element($element, null, $value); } } - $this->elementEnd('status'); + $this->elementEnd($tag); } function showTwitterXmlGroup($twitter_group) -- cgit v1.2.3-54-g00ecf From 59e5958d3afa0a5613efbc1ed4546ce63946fe43 Mon Sep 17 00:00:00 2001 From: Hue Bastard Date: Tue, 8 Dec 2009 21:28:11 +1000 Subject: ticket 2055: added logos to Atom and RSS feeds --- actions/apitimelinefavorites.php | 6 ++++-- actions/apitimelinefriends.php | 6 ++++-- actions/apitimelinegroup.php | 7 +++++-- actions/apitimelinementions.php | 6 ++++-- actions/apitimelinepublic.php | 5 +++-- actions/apitimelinetag.php | 6 ++++-- actions/apitimelineuser.php | 6 ++++-- lib/api.php | 27 +++++++++++++++++++++------ 8 files changed, 49 insertions(+), 20 deletions(-) (limited to 'lib/api.php') diff --git a/actions/apitimelinefavorites.php b/actions/apitimelinefavorites.php index f84d7b4cb..77e5cea1b 100644 --- a/actions/apitimelinefavorites.php +++ b/actions/apitimelinefavorites.php @@ -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': diff --git a/actions/apitimelinefriends.php b/actions/apitimelinefriends.php index e84f77372..09ba7a969 100644 --- a/actions/apitimelinefriends.php +++ b/actions/apitimelinefriends.php @@ -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': diff --git a/actions/apitimelinegroup.php b/actions/apitimelinegroup.php index de13e7eb9..22c577f39 100644 --- a/actions/apitimelinegroup.php +++ b/actions/apitimelinegroup.php @@ -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': diff --git a/actions/apitimelinementions.php b/actions/apitimelinementions.php index 0956ccdce..19f40aebc 100644 --- a/actions/apitimelinementions.php +++ b/actions/apitimelinementions.php @@ -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': diff --git a/actions/apitimelinepublic.php b/actions/apitimelinepublic.php index 7a8504259..633f3c36e 100644 --- a/actions/apitimelinepublic.php +++ b/actions/apitimelinepublic.php @@ -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': diff --git a/actions/apitimelinetag.php b/actions/apitimelinetag.php index 452593c11..1a50520f4 100644 --- a/actions/apitimelinetag.php +++ b/actions/apitimelinetag.php @@ -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': diff --git a/actions/apitimelineuser.php b/actions/apitimelineuser.php index ca1d21772..14c62a52e 100644 --- a/actions/apitimelineuser.php +++ b/actions/apitimelineuser.php @@ -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': diff --git a/lib/api.php b/lib/api.php index eacb80dbe..7ebe65dbb 100644 --- a/lib/api.php +++ b/lib/api.php @@ -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', -- cgit v1.2.3-54-g00ecf From a199bd808a9dce64dd1d9a137b853b6ba0f6811b Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Mon, 14 Dec 2009 18:16:45 +0000 Subject: Fix issue with favorited/following always being set to false --- lib/api.php | 22 ++++++++++++---------- lib/apiauth.php | 2 -- 2 files changed, 12 insertions(+), 12 deletions(-) (limited to 'lib/api.php') diff --git a/lib/api.php b/lib/api.php index b7ab407a1..0c6650111 100644 --- a/lib/api.php +++ b/lib/api.php @@ -53,13 +53,14 @@ 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; + 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; /** * Initialization. @@ -190,13 +191,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); diff --git a/lib/apiauth.php b/lib/apiauth.php index 0d1613d38..7102764cb 100644 --- a/lib/apiauth.php +++ b/lib/apiauth.php @@ -53,8 +53,6 @@ require_once INSTALLDIR . '/lib/api.php'; class ApiAuthAction extends ApiAction { - var $auth_user = null; - /** * Take arguments for running, and output basic auth header if needed * -- cgit v1.2.3-54-g00ecf From 9384a6e2429d8ef9a68185c869758b1e258092c1 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Mon, 14 Dec 2009 16:40:56 -0500 Subject: fix error with cached repeat of deleted original in api output --- lib/api.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'lib/api.php') diff --git a/lib/api.php b/lib/api.php index 0c6650111..833bc1c5f 100644 --- a/lib/api.php +++ b/lib/api.php @@ -224,9 +224,13 @@ class ApiAction extends Action return $base; } else { $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)) { + return $base; + } else { + $original_array = $this->twitterSimpleStatusArray($original, $include_user); + $original_array['retweeted_status'] = $base; + return $original_array; + } } } -- cgit v1.2.3-54-g00ecf From d22364b35e33982b2f95146f9ac290a3606da28b Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Mon, 14 Dec 2009 17:11:34 -0500 Subject: had the order of and wrong in api output --- lib/api.php | 13 +++++-------- lib/noticelist.php | 6 ++++-- 2 files changed, 9 insertions(+), 10 deletions(-) (limited to 'lib/api.php') diff --git a/lib/api.php b/lib/api.php index 833bc1c5f..4ed49e452 100644 --- a/lib/api.php +++ b/lib/api.php @@ -220,18 +220,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); - if (empty($original)) { - return $base; - } else { + if (!empty($original)) { $original_array = $this->twitterSimpleStatusArray($original, $include_user); - $original_array['retweeted_status'] = $base; - return $original_array; + $base['retweeted_status'] = $original_array; } } + + return $base; } function twitterSimpleStatusArray($notice, $include_user=true) diff --git a/lib/noticelist.php b/lib/noticelist.php index 85e1befcc..3ccb50230 100644 --- a/lib/noticelist.php +++ b/lib/noticelist.php @@ -601,11 +601,13 @@ class NoticeListItem extends Widget { $user = common_current_user(); + $todel = (empty($this->repeat)) ? $this->notice : $this->repeat; + if (!empty($user) && - ($this->notice->profile_id == $user->id || $user->hasRight(Right::DELETEOTHERSNOTICE))) { + ($todel->profile_id == $user->id || $user->hasRight(Right::DELETEOTHERSNOTICE))) { $deleteurl = common_local_url('deletenotice', - array('notice' => $this->notice->id)); + array('notice' => $todel->id)); $this->out->element('a', array('href' => $deleteurl, 'class' => 'notice_delete', 'title' => _('Delete this notice')), _('Delete')); -- cgit v1.2.3-54-g00ecf