* Copyright (C) 2010, StatusNet, Inc.
*
* Feed of ActivityStreams 'favorite' actions
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
exit(1);
}
-require_once INSTALLDIR . '/lib/apiauth.php';
-
/**
* Feed of ActivityStreams 'favorite' actions
*
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class AtompubfavoritefeedAction extends ApiAuthAction
{
private $_profile = null;
*
* @return boolean true
*/
-
function prepare($argarray)
{
parent::prepare($argarray);
- $this->_profile = Profile::staticGet('id', $this->trimmed('profile'));
+ $this->_profile = Profile::getKV('id', $this->trimmed('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;
$this->_faves = Fave::byProfile($this->_profile->id,
$offset,
$limit);
-
+
return true;
}
*
* @return void
*/
-
function handle($argarray=null)
{
parent::handle($argarray);
$this->addFavorite();
break;
default:
+ // TRANS: Client exception thrown when using an unsupported HTTP method.
throw new ClientException(_('HTTP method not supported.'), 405);
return;
}
*
* @return void
*/
-
function showFeed()
{
header('Content-Type: application/atom+xml; charset=utf-8');
$feed->addAuthor($this->_profile->getBestName(),
$this->_profile->getURI());
+ // TRANS: Title for Atom favorites feed.
+ // TRANS: %s is a user nickname.
$feed->setTitle(sprintf(_("%s favorites"),
$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(),
common_config('site', 'name')));
$feed->addLink(common_local_url('showfavorites',
- array('nickname' =>
+ array('nickname' =>
$this->_profile->nickname)));
$feed->addLink($url,
array('rel' => 'self',
'type' => 'application/atom+xml'));
-
+
// If there's more...
if ($this->page > 1) {
'type' => 'application/atom+xml'));
$feed->addLink(common_local_url('AtomPubFavoriteFeed',
- array('profile' =>
+ array('profile' =>
$this->_profile->id),
- array('page' =>
+ array('page' =>
$this->page - 1)),
array('rel' => 'prev',
'type' => 'application/atom+xml'));
*
* @return void
*/
-
function addFavorite()
{
// XXX: Refactor this; all the same for atompub
if (empty($this->auth_user) ||
$this->auth_user->id != $this->_profile->id) {
- throw new ClientException(_("Can't add someone else's".
- " subscription"), 403);
+ // TRANS: Client exception thrown when trying to set a favorite for another user.
+ throw new ClientException(_("Cannot add someone else's".
+ " subscription."), 403);
}
-
+
$xml = file_get_contents('php://input');
$dom = DOMDocument::loadXML($xml);
if (Event::handle('StartAtomPubNewActivity', array(&$activity))) {
if ($activity->verb != ActivityVerb::FAVORITE) {
- // TRANS: Client error displayed when not using the POST verb.
- // TRANS: Do not translate POST.
- throw new ClientException(_('Can only handle Favorite activities.'));
+ // TRANS: Client exception thrown when trying use an incorrect activity verb for the Atom pub method.
+ throw new ClientException(_('Can only handle favorite activities.'));
return;
}
if (!in_array($note->type, array(ActivityObject::NOTE,
ActivityObject::BLOGENTRY,
ActivityObject::STATUS))) {
+ // TRANS: Client exception thrown when trying favorite an object that is not a notice.
throw new ClientException(_('Can only fave notices.'));
return;
}
- $notice = Notice::staticGet('uri', $note->id);
+ $notice = Notice::getKV('uri', $note->id);
if (empty($notice)) {
// XXX: import from listed URL or something
- throw new ClientException(_('Unknown note.'));
+ // TRANS: Client exception thrown when trying favorite a notice without content.
+ throw new ClientException(_('Unknown notice.'));
}
$old = Fave::pkeyGet(array('user_id' => $this->auth_user->id,
'notice_id' => $notice->id));
if (!empty($old)) {
+ // TRANS: Client exception thrown when trying favorite an already favorited notice.
throw new ClientException(_('Already a favorite.'));
}
*
* @return boolean is read only action?
*/
-
function isReadOnly($args)
{
if ($_SERVER['REQUEST_METHOD'] == 'GET' ||
*
* @return string etag http header
*/
-
function etag()
{
return null;
*
* @return boolean true if delete, else false
*/
-
function requiresAuth()
{
if ($_SERVER['REQUEST_METHOD'] == 'GET' ||
*
* @return void
*/
-
function notify($fave, $notice, $user)
{
- $other = User::staticGet('id', $notice->profile_id);
+ $other = User::getKV('id', $notice->profile_id);
if ($other && $other->id != $user->id) {
if ($other->email && $other->emailnotifyfav) {
mail_notify_fave($other, $user, $notice);