From e1537d83871811cf3446a592e44f56d26e961afe Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Fri, 12 Mar 2010 01:40:52 +0000 Subject: [PATCH] More generalized method for calculating Atom rel="self" links --- actions/apitimelinegroup.php | 8 +------- actions/apitimelineuser.php | 8 +------- lib/apiaction.php | 16 +++++++++++++++- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/actions/apitimelinegroup.php b/actions/apitimelinegroup.php index c4f8cbc653..da816c40a9 100644 --- a/actions/apitimelinegroup.php +++ b/actions/apitimelinegroup.php @@ -107,13 +107,7 @@ class ApiTimelineGroupAction extends ApiPrivateAuthAction // We'll pull common formatting out of this for other formats $atom = new AtomGroupNoticeFeed($this->group); - // Calculate self link - $id = $this->arg('id'); - $aargs = array('format' => $this->format); - if (!empty($id)) { - $aargs['id'] = $id; - } - $self = $this->getSelfUri('ApiTimelineGroup', $aargs); + $self = $this->getSelfUri(); switch($this->format) { case 'xml': diff --git a/actions/apitimelineuser.php b/actions/apitimelineuser.php index 5c4bcace47..11431a82ca 100644 --- a/actions/apitimelineuser.php +++ b/actions/apitimelineuser.php @@ -122,13 +122,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction array('nickname' => $this->user->nickname) ); - // Calculate self link - $id = $this->arg('id'); - $aargs = array('format' => $this->format); - if (!empty($id)) { - $aargs['id'] = $id; - } - $self = $this->getSelfUri('ApiTimelineUser', $aargs); + $self = $this->getSelfUri(); // FriendFeed's SUP protocol // Also added RSS and Atom feeds diff --git a/lib/apiaction.php b/lib/apiaction.php index cef5d1c1e8..a01809ed98 100644 --- a/lib/apiaction.php +++ b/lib/apiaction.php @@ -1358,8 +1358,22 @@ class ApiAction extends Action } } - function getSelfUri($action, $aargs) + /** + * Calculate the complete URI that called up this action. Used for + * Atom rel="self" links. Warning: this is funky. + * + * @return string URL a URL suitable for rel="self" Atom links + */ + function getSelfUri() { + $action = mb_substr(get_class($this), 0, -6); // remove 'Action' + + $id = $this->arg('id'); + $aargs = array('format' => $this->format); + if (!empty($id)) { + $aargs['id'] = $id; + } + parse_str($_SERVER['QUERY_STRING'], $params); $pstring = ''; if (!empty($params)) {