We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit 6fa0bea7 authored by Brion Vibber's avatar Brion Vibber

Merge branch '0.9.x' into testing

parents 7c3f820f 6455461c
...@@ -39,7 +39,6 @@ require_once INSTALLDIR.'/lib/apibareauth.php'; ...@@ -39,7 +39,6 @@ require_once INSTALLDIR.'/lib/apibareauth.php';
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
* @link http://status.net/ * @link http://status.net/
*/ */
class ApiAtomServiceAction extends ApiBareAuthAction class ApiAtomServiceAction extends ApiBareAuthAction
{ {
/** /**
...@@ -50,13 +49,13 @@ class ApiAtomServiceAction extends ApiBareAuthAction ...@@ -50,13 +49,13 @@ class ApiAtomServiceAction extends ApiBareAuthAction
* @return boolean success flag * @return boolean success flag
* *
*/ */
function prepare($args) function prepare($args)
{ {
parent::prepare($args); parent::prepare($args);
$this->user = $this->getTargetUser($this->arg('id')); $this->user = $this->getTargetUser($this->arg('id'));
if (empty($this->user)) { if (empty($this->user)) {
// TRANS: Client error displayed when making an Atom API request for an unknown user.
$this->clientError(_('No such user.'), 404, $this->format); $this->clientError(_('No such user.'), 404, $this->format);
return; return;
} }
...@@ -71,7 +70,6 @@ class ApiAtomServiceAction extends ApiBareAuthAction ...@@ -71,7 +70,6 @@ class ApiAtomServiceAction extends ApiBareAuthAction
* *
* @return void * @return void
*/ */
function handle($args) function handle($args)
{ {
parent::handle($args); parent::handle($args);
...@@ -83,13 +81,15 @@ class ApiAtomServiceAction extends ApiBareAuthAction ...@@ -83,13 +81,15 @@ class ApiAtomServiceAction extends ApiBareAuthAction
'xmlns:atom' => 'http://www.w3.org/2005/Atom', 'xmlns:atom' => 'http://www.w3.org/2005/Atom',
'xmlns:activity' => 'http://activitystrea.ms/spec/1.0/')); 'xmlns:activity' => 'http://activitystrea.ms/spec/1.0/'));
$this->elementStart('workspace'); $this->elementStart('workspace');
$this->element('atom:title', null, _('Main')); // TRANS: Title for Atom feed.
$this->element('atom:title', null, _m('ATOM','Main'));
$this->elementStart('collection', $this->elementStart('collection',
array('href' => common_local_url('ApiTimelineUser', array('href' => common_local_url('ApiTimelineUser',
array('id' => $this->user->id, array('id' => $this->user->id,
'format' => 'atom')))); 'format' => 'atom'))));
$this->element('atom:title', $this->element('atom:title',
null, null,
// TRANS: Title for Atom feed. %s is a user nickname.
sprintf(_("%s timeline"), sprintf(_("%s timeline"),
$this->user->nickname)); $this->user->nickname));
$this->element('accept', null, 'application/atom+xml;type=entry'); $this->element('accept', null, 'application/atom+xml;type=entry');
...@@ -100,6 +100,7 @@ class ApiAtomServiceAction extends ApiBareAuthAction ...@@ -100,6 +100,7 @@ class ApiAtomServiceAction extends ApiBareAuthAction
array('subscriber' => $this->user->id)))); array('subscriber' => $this->user->id))));
$this->element('atom:title', $this->element('atom:title',
null, null,
// TRANS: Title for Atom feed with a user's subscriptions. %s is a user nickname.
sprintf(_("%s subscriptions"), sprintf(_("%s subscriptions"),
$this->user->nickname)); $this->user->nickname));
$this->element('accept', null, 'application/atom+xml;type=entry'); $this->element('accept', null, 'application/atom+xml;type=entry');
...@@ -110,6 +111,7 @@ class ApiAtomServiceAction extends ApiBareAuthAction ...@@ -110,6 +111,7 @@ class ApiAtomServiceAction extends ApiBareAuthAction
array('profile' => $this->user->id)))); array('profile' => $this->user->id))));
$this->element('atom:title', $this->element('atom:title',
null, null,
// TRANS: Title for Atom feed with a user's favorite notices. %s is a user nickname.
sprintf(_("%s favorites"), sprintf(_("%s favorites"),
$this->user->nickname)); $this->user->nickname));
$this->element('accept', null, 'application/atom+xml;type=entry'); $this->element('accept', null, 'application/atom+xml;type=entry');
...@@ -120,6 +122,7 @@ class ApiAtomServiceAction extends ApiBareAuthAction ...@@ -120,6 +122,7 @@ class ApiAtomServiceAction extends ApiBareAuthAction
array('profile' => $this->user->id)))); array('profile' => $this->user->id))));
$this->element('atom:title', $this->element('atom:title',
null, null,
// TRANS: Title for Atom feed with a user's memberships. %s is a user nickname.
sprintf(_("%s memberships"), sprintf(_("%s memberships"),
$this->user->nickname)); $this->user->nickname));
$this->element('accept', null, 'application/atom+xml;type=entry'); $this->element('accept', null, 'application/atom+xml;type=entry');
......
...@@ -92,6 +92,7 @@ class ApiBlockCreateAction extends ApiAuthAction ...@@ -92,6 +92,7 @@ class ApiBlockCreateAction extends ApiAuthAction
} }
if (empty($this->user) || empty($this->other)) { if (empty($this->user) || empty($this->other)) {
// TRANS: Client error displayed when trying to block a non-existing user or a user from another site.
$this->clientError(_('No such user.'), 404, $this->format); $this->clientError(_('No such user.'), 404, $this->format);
return; return;
} }
......
...@@ -114,6 +114,7 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction ...@@ -114,6 +114,7 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction
$this->deleteNotice(); $this->deleteNotice();
break; break;
default: default:
// TRANS: Client error displayed calling an unsupported HTTP error in API status show.
$this->clientError(_('HTTP method not supported.'), 405); $this->clientError(_('HTTP method not supported.'), 405);
return; return;
} }
...@@ -138,6 +139,8 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction ...@@ -138,6 +139,8 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction
$this->showSingleAtomStatus($this->notice); $this->showSingleAtomStatus($this->notice);
break; break;
default: default:
// TRANS: Exception thrown requesting an unsupported notice output format.
// TRANS: %s is the requested output format.
throw new Exception(sprintf(_("Unsupported format: %s"), $this->format)); throw new Exception(sprintf(_("Unsupported format: %s"), $this->format));
} }
} else { } else {
...@@ -171,7 +174,7 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction ...@@ -171,7 +174,7 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction
* *
* @return boolean true * @return boolean true
*/ */
function isReadOnly($args) function isReadOnly($args)
{ {
return ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'HEAD'); return ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'HEAD');
...@@ -220,6 +223,7 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction ...@@ -220,6 +223,7 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction
function deleteNotice() function deleteNotice()
{ {
if ($this->format != 'atom') { if ($this->format != 'atom') {
// TRANS: Client error displayed when trying to delete a notice not using the Atom format.
$this->clientError(_("Can only delete using the Atom format.")); $this->clientError(_("Can only delete using the Atom format."));
return; return;
} }
...@@ -227,7 +231,8 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction ...@@ -227,7 +231,8 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction
if (empty($this->auth_user) || if (empty($this->auth_user) ||
($this->notice->profile_id != $this->auth_user->id && ($this->notice->profile_id != $this->auth_user->id &&
!$this->auth_user->hasRight(Right::DELETEOTHERSNOTICE))) { !$this->auth_user->hasRight(Right::DELETEOTHERSNOTICE))) {
$this->clientError(_('Can\'t delete this notice.'), 403); // TRANS: Client error displayed when a user has no rights to delete notices of other users.
$this->clientError(_('Cannot delete this notice.'), 403);
return; return;
} }
...@@ -240,6 +245,7 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction ...@@ -240,6 +245,7 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction
header('HTTP/1.1 200 OK'); header('HTTP/1.1 200 OK');
header('Content-Type: text/plain'); header('Content-Type: text/plain');
// TRANS: Confirmation of notice deletion in API. %d is the ID (number) of the deleted notice.
print(sprintf(_('Deleted notice %d'), $this->notice->id)); print(sprintf(_('Deleted notice %d'), $this->notice->id));
print("\n"); print("\n");
} }
......
...@@ -241,7 +241,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction ...@@ -241,7 +241,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction
* *
* @return boolean true * @return boolean true
*/ */
function isReadOnly($args) function isReadOnly($args)
{ {
return ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'HEAD'); return ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'HEAD');
...@@ -307,11 +307,13 @@ class ApiTimelineUserAction extends ApiBareAuthAction ...@@ -307,11 +307,13 @@ class ApiTimelineUserAction extends ApiBareAuthAction
$xml = trim(file_get_contents('php://input')); $xml = trim(file_get_contents('php://input'));
if (empty($xml)) { if (empty($xml)) {
// TRANS: Client error displayed attempting to post an empty API notice.
$this->clientError(_('Atom post must not be empty.')); $this->clientError(_('Atom post must not be empty.'));
} }
$dom = DOMDocument::loadXML($xml); $dom = DOMDocument::loadXML($xml);
if (!$dom) { if (!$dom) {
// TRANS: Client error displayed attempting to post an API that is not well-formed XML.
$this->clientError(_('Atom post must be well-formed XML.')); $this->clientError(_('Atom post must be well-formed XML.'));
} }
...@@ -375,6 +377,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction ...@@ -375,6 +377,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction
} else { } else {
// @fixme fetch from $sourceUrl? // @fixme fetch from $sourceUrl?
// TRANS: Client error displayed when posting a notice without content through the API. // TRANS: Client error displayed when posting a notice without content through the API.
// TRANS: %d is the notice ID (number).
$this->clientError(sprintf(_('No content for notice %d.'), $this->clientError(sprintf(_('No content for notice %d.'),
$note->id)); $note->id));
return; return;
...@@ -434,7 +437,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction ...@@ -434,7 +437,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction
$options['groups'][] = $uri; $options['groups'][] = $uri;
} else { } else {
// @fixme: hook for discovery here // @fixme: hook for discovery here
common_log(LOG_WARNING, sprintf(_('AtomPub post with unknown attention URI %s'), $uri)); common_log(LOG_WARNING, sprintf('AtomPub post with unknown attention URI %s', $uri));
} }
} }
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* Copyright (C) 2010, StatusNet, Inc. * Copyright (C) 2010, StatusNet, Inc.
* *
* Feed of ActivityStreams 'favorite' actions * Feed of ActivityStreams 'favorite' actions
* *
* PHP version 5 * PHP version 5
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
...@@ -46,7 +46,6 @@ require_once INSTALLDIR . '/lib/apiauth.php'; ...@@ -46,7 +46,6 @@ require_once INSTALLDIR . '/lib/apiauth.php';
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/ * @link http://status.net/
*/ */
class AtompubfavoritefeedAction extends ApiAuthAction class AtompubfavoritefeedAction extends ApiAuthAction
{ {
private $_profile = null; private $_profile = null;
...@@ -59,7 +58,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -59,7 +58,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction
* *
* @return boolean true * @return boolean true
*/ */
function prepare($argarray) function prepare($argarray)
{ {
parent::prepare($argarray); parent::prepare($argarray);
...@@ -67,7 +65,8 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -67,7 +65,8 @@ class AtompubfavoritefeedAction extends ApiAuthAction
$this->_profile = Profile::staticGet('id', $this->trimmed('profile')); $this->_profile = Profile::staticGet('id', $this->trimmed('profile'));
if (empty($this->_profile)) { if (empty($this->_profile)) {
throw new ClientException(_('No such profile'), 404); // TRANS: Client exception thrown when requesting a favorite feed for a non-existing profile.
throw new ClientException(_('No such profile.'), 404);
} }
$offset = ($this->page-1) * $this->count; $offset = ($this->page-1) * $this->count;
...@@ -76,7 +75,7 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -76,7 +75,7 @@ class AtompubfavoritefeedAction extends ApiAuthAction
$this->_faves = Fave::byProfile($this->_profile->id, $this->_faves = Fave::byProfile($this->_profile->id,
$offset, $offset,
$limit); $limit);
return true; return true;
} }
...@@ -87,7 +86,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -87,7 +86,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction
* *
* @return void * @return void
*/ */
function handle($argarray=null) function handle($argarray=null)
{ {
parent::handle($argarray); parent::handle($argarray);
...@@ -101,6 +99,7 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -101,6 +99,7 @@ class AtompubfavoritefeedAction extends ApiAuthAction
$this->addFavorite(); $this->addFavorite();
break; break;
default: default:
// TRANS: Client exception thrown when using an unsupported HTTP method.
throw new ClientException(_('HTTP method not supported.'), 405); throw new ClientException(_('HTTP method not supported.'), 405);
return; return;
} }
...@@ -113,7 +112,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -113,7 +112,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction
* *
* @return void * @return void
*/ */
function showFeed() function showFeed()
{ {
header('Content-Type: application/atom+xml; charset=utf-8'); header('Content-Type: application/atom+xml; charset=utf-8');
...@@ -139,21 +137,25 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -139,21 +137,25 @@ class AtompubfavoritefeedAction extends ApiAuthAction
$feed->addAuthor($this->_profile->getBestName(), $feed->addAuthor($this->_profile->getBestName(),
$this->_profile->getURI()); $this->_profile->getURI());
// TRANS: Title for Atom favorites feed.
// TRANS: %s is a user nickname.
$feed->setTitle(sprintf(_("%s favorites"), $feed->setTitle(sprintf(_("%s favorites"),
$this->_profile->getBestName())); $this->_profile->getBestName()));
$feed->setSubtitle(sprintf(_("Notices %s has favorited to on %s"), // TRANS: Subtitle for Atom favorites feed.
// TRANS: %1$s is a user nickname, %2$s is the StatusNet sitename.
$feed->setSubtitle(sprintf(_("Notices %1$s has favorited on %2$s"),
$this->_profile->getBestName(), $this->_profile->getBestName(),
common_config('site', 'name'))); common_config('site', 'name')));
$feed->addLink(common_local_url('showfavorites', $feed->addLink(common_local_url('showfavorites',
array('nickname' => array('nickname' =>
$this->_profile->nickname))); $this->_profile->nickname)));
$feed->addLink($url, $feed->addLink($url,
array('rel' => 'self', array('rel' => 'self',
'type' => 'application/atom+xml')); 'type' => 'application/atom+xml'));
// If there's more... // If there's more...
if ($this->page > 1) { if ($this->page > 1) {
...@@ -162,9 +164,9 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -162,9 +164,9 @@ class AtompubfavoritefeedAction extends ApiAuthAction
'type' => 'application/atom+xml')); 'type' => 'application/atom+xml'));
$feed->addLink(common_local_url('AtomPubFavoriteFeed', $feed->addLink(common_local_url('AtomPubFavoriteFeed',
array('profile' => array('profile' =>
$this->_profile->id), $this->_profile->id),
array('page' => array('page' =>
$this->page - 1)), $this->page - 1)),
array('rel' => 'prev', array('rel' => 'prev',
'type' => 'application/atom+xml')); 'type' => 'application/atom+xml'));
...@@ -205,17 +207,17 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -205,17 +207,17 @@ class AtompubfavoritefeedAction extends ApiAuthAction
* *
* @return void * @return void
*/ */
function addFavorite() function addFavorite()
{ {
// XXX: Refactor this; all the same for atompub // XXX: Refactor this; all the same for atompub
if (empty($this->auth_user) || if (empty($this->auth_user) ||
$this->auth_user->id != $this->_profile->id) { $this->auth_user->id != $this->_profile->id) {
throw new ClientException(_("Can't add someone else's". // TRANS: Client exception thrown when trying to set a favorite for another user.
" subscription"), 403); throw new ClientException(_("Cannot add someone else's".
" subscription."), 403);
} }
$xml = file_get_contents('php://input'); $xml = file_get_contents('php://input');
$dom = DOMDocument::loadXML($xml); $dom = DOMDocument::loadXML($xml);
...@@ -234,9 +236,8 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -234,9 +236,8 @@ class AtompubfavoritefeedAction extends ApiAuthAction
if (Event::handle('StartAtomPubNewActivity', array(&$activity))) { if (Event::handle('StartAtomPubNewActivity', array(&$activity))) {
if ($activity->verb != ActivityVerb::FAVORITE) { if ($activity->verb != ActivityVerb::FAVORITE) {
// TRANS: Client error displayed when not using the POST verb. // TRANS: Client exception thrown when trying use an incorrect activity verb for the Atom pub method.
// TRANS: Do not translate POST. throw new ClientException(_('Can only handle favorite activities.'));
throw new ClientException(_('Can only handle Favorite activities.'));
return; return;
} }
...@@ -245,6 +246,7 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -245,6 +246,7 @@ class AtompubfavoritefeedAction extends ApiAuthAction
if (!in_array($note->type, array(ActivityObject::NOTE, if (!in_array($note->type, array(ActivityObject::NOTE,
ActivityObject::BLOGENTRY, ActivityObject::BLOGENTRY,
ActivityObject::STATUS))) { ActivityObject::STATUS))) {
// TRANS: Client exception thrown when trying favorite an object that is not a notice.
throw new ClientException(_('Can only fave notices.')); throw new ClientException(_('Can only fave notices.'));
return; return;
} }
...@@ -253,6 +255,7 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -253,6 +255,7 @@ class AtompubfavoritefeedAction extends ApiAuthAction
if (empty($notice)) { if (empty($notice)) {
// XXX: import from listed URL or something // XXX: import from listed URL or something
// TRANS: Client exception thrown when trying favorite a notice without content.
throw new ClientException(_('Unknown note.')); throw new ClientException(_('Unknown note.'));
} }
...@@ -260,6 +263,7 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -260,6 +263,7 @@ class AtompubfavoritefeedAction extends ApiAuthAction
'notice_id' => $notice->id)); 'notice_id' => $notice->id));
if (!empty($old)) { if (!empty($old)) {
// TRANS: Client exception thrown when trying favorite an already favorited notice.
throw new ClientException(_('Already a favorite.')); throw new ClientException(_('Already a favorite.'));
} }
...@@ -296,7 +300,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -296,7 +300,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction
* *
* @return boolean is read only action? * @return boolean is read only action?
*/ */
function isReadOnly($args) function isReadOnly($args)
{ {
if ($_SERVER['REQUEST_METHOD'] == 'GET' || if ($_SERVER['REQUEST_METHOD'] == 'GET' ||
...@@ -328,7 +331,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -328,7 +331,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction
* *
* @return string etag http header * @return string etag http header
*/ */
function etag() function etag()
{ {
return null; return null;
...@@ -339,7 +341,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -339,7 +341,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction
* *
* @return boolean true if delete, else false * @return boolean true if delete, else false
*/ */
function requiresAuth() function requiresAuth()
{ {
if ($_SERVER['REQUEST_METHOD'] == 'GET' || if ($_SERVER['REQUEST_METHOD'] == 'GET' ||
...@@ -359,7 +360,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction ...@@ -359,7 +360,6 @@ class AtompubfavoritefeedAction extends ApiAuthAction
* *
* @return void * @return void
*/ */
function notify($fave, $notice, $user) function notify($fave, $notice, $user)
{ {
$other = User::staticGet('id', $notice->profile_id); $other = User::staticGet('id', $notice->profile_id);
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* Copyright (C) 2010, StatusNet, Inc. * Copyright (C) 2010, StatusNet, Inc.
* *
* Feed of group memberships for a user, in ActivityStreams format * Feed of group memberships for a user, in ActivityStreams format
* *
* PHP version 5 * PHP version 5
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
...@@ -46,7 +46,6 @@ require_once INSTALLDIR . '/lib/apiauth.php'; ...@@ -46,7 +46,6 @@ require_once INSTALLDIR . '/lib/apiauth.php';
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/ * @link http://status.net/
*/ */
class AtompubmembershipfeedAction extends ApiAuthAction class AtompubmembershipfeedAction extends ApiAuthAction
{ {
private $_profile = null; private $_profile = null;
...@@ -59,7 +58,6 @@ class AtompubmembershipfeedAction extends ApiAuthAction ...@@ -59,7 +58,6 @@ class AtompubmembershipfeedAction extends ApiAuthAction
* *
* @return boolean true * @return boolean true
*/ */
function prepare($argarray) function prepare($argarray)
{ {
parent::prepare($argarray); parent::prepare($argarray);
...@@ -67,8 +65,9 @@ class AtompubmembershipfeedAction extends ApiAuthAction ...@@ -67,8 +65,9 @@ class AtompubmembershipfeedAction extends ApiAuthAction
$profileId = $this->trimmed('profile'); $profileId = $this->trimmed('profile');
$this->_profile = Profile::staticGet('id', $profileId); $this->_profile = Profile::staticGet('id', $profileId);
if (empty($this->_profile)) { if (empty($this->_profile)) {
// TRANS: Client exception.
throw new ClientException(_('No such profile.'), 404); throw new ClientException(_('No such profile.'), 404);
} }
...@@ -78,7 +77,7 @@ class AtompubmembershipfeedAction extends ApiAuthAction ...@@ -78,7 +77,7 @@ class AtompubmembershipfeedAct