2008-09-09 03:16:24 +09:00
< ? php
2009-01-20 00:28:27 +09:00
/**
2009-08-26 07:12:20 +09:00
* StatusNet , the distributed open - source microblogging tool
2008-09-09 03:16:24 +09:00
*
2009-01-20 00:28:27 +09:00
* List of replies
*
* PHP version 5
*
* LICENCE : This program is free software : you can redistribute it and / or modify
2008-09-09 03:16:24 +09:00
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2009-01-20 00:28:27 +09:00
*
* @ category Personal
2009-08-26 07:12:20 +09:00
* @ package StatusNet
2009-08-26 07:19:04 +09:00
* @ author Evan Prodromou < evan @ status . net >
2011-06-10 05:20:19 +09:00
* @ copyright 2008 - 2011 StatusNet , Inc .
2009-01-20 00:28:27 +09:00
* @ license http :// www . fsf . org / licensing / licenses / agpl - 3.0 . html GNU Affero General Public License version 3.0
2009-08-26 07:16:46 +09:00
* @ link http :// status . net /
2008-09-09 03:16:24 +09:00
*/
2015-07-11 07:28:32 +09:00
if ( ! defined ( 'GNUSOCIAL' )) { exit ( 1 ); }
2008-09-09 03:16:24 +09:00
2009-01-20 00:28:27 +09:00
/**
* List of replies
*
* @ category Personal
2009-08-26 07:12:20 +09:00
* @ package StatusNet
2009-08-26 07:19:04 +09:00
* @ author Evan Prodromou < evan @ status . net >
2009-01-20 00:28:27 +09:00
* @ license http :// www . fsf . org / licensing / licenses / agpl - 3.0 . html GNU Affero General Public License version 3.0
2009-08-26 07:16:46 +09:00
* @ link http :// status . net /
2009-01-20 00:28:27 +09:00
*/
2015-07-11 07:28:32 +09:00
class ShowfavoritesAction extends ShowstreamAction
2009-01-20 00:28:27 +09:00
{
function title ()
2008-12-24 04:33:23 +09:00
{
2009-01-20 00:28:27 +09:00
if ( $this -> page == 1 ) {
2011-01-31 03:01:55 +09:00
// TRANS: Title for first page of favourite notices of a user.
// TRANS: %s is the user for whom the favourite notices are displayed.
2015-07-11 07:28:32 +09:00
return sprintf ( _ ( '%s\'s favorite notices' ), $this -> getTarget () -> getNickname ());
2009-01-20 00:28:27 +09:00
} else {
2011-01-31 03:01:55 +09:00
// TRANS: Title for all but the first page of favourite notices of a user.
// TRANS: %1$s is the user for whom the favourite notices are displayed, %2$d is the page number.
2010-01-25 12:56:41 +09:00
return sprintf ( _ ( '%1$s\'s favorite notices, page %2$d' ),
2015-07-11 07:28:32 +09:00
$this -> getTarget () -> getNickname (),
2009-01-20 00:28:27 +09:00
$this -> page );
}
}
2008-09-09 03:16:24 +09:00
2015-07-11 07:28:32 +09:00
public function getStream ()
2009-01-20 00:28:27 +09:00
{
2015-07-11 07:28:32 +09:00
$own = $this -> scoped instanceof Profile ? $this -> scoped -> sameAs ( $this -> getTarget ()) : false ;
return new FaveNoticeStream ( $this -> getTarget () -> getID (), $own );
2008-12-24 04:19:07 +09:00
}
2008-09-09 03:16:24 +09:00
2009-02-12 01:37:50 +09:00
function getFeeds ()
2008-12-24 04:33:23 +09:00
{
2011-06-23 06:19:46 +09:00
return array ( new Feed ( Feed :: JSON ,
common_local_url ( 'ApiTimelineFavorites' ,
array (
'id' => $this -> user -> nickname ,
'format' => 'as' )),
// TRANS: Feed link text. %s is a username.
sprintf ( _ ( 'Feed for favorites of %s (Activity Streams JSON)' ),
$this -> user -> nickname )),
new Feed ( Feed :: RSS1 ,
2009-10-30 08:09:42 +09:00
common_local_url ( 'favoritesrss' ,
array ( 'nickname' => $this -> user -> nickname )),
2011-01-31 03:01:55 +09:00
// TRANS: Feed link text. %s is a username.
2009-10-30 08:09:42 +09:00
sprintf ( _ ( 'Feed for favorites of %s (RSS 1.0)' ),
$this -> user -> nickname )),
new Feed ( Feed :: RSS2 ,
common_local_url ( 'ApiTimelineFavorites' ,
array (
'id' => $this -> user -> nickname ,
'format' => 'rss' )),
2011-01-31 03:01:55 +09:00
// TRANS: Feed link text. %s is a username.
2009-10-30 08:09:42 +09:00
sprintf ( _ ( 'Feed for favorites of %s (RSS 2.0)' ),
$this -> user -> nickname )),
new Feed ( Feed :: ATOM ,
common_local_url ( 'ApiTimelineFavorites' ,
array (
'id' => $this -> user -> nickname ,
'format' => 'atom' )),
2011-01-31 03:01:55 +09:00
// TRANS: Feed link text. %s is a username.
2009-10-30 08:09:42 +09:00
sprintf ( _ ( 'Feed for favorites of %s (Atom)' ),
$this -> user -> nickname )));
2008-12-24 04:19:07 +09:00
}
2008-09-09 03:16:24 +09:00
2009-04-08 09:15:05 +09:00
function showEmptyListMessage ()
{
if ( common_logged_in ()) {
$current_user = common_current_user ();
if ( $this -> user -> id === $current_user -> id ) {
2011-01-31 03:01:55 +09:00
// TRANS: Text displayed instead of favourite notices for the current logged in user that has no favourites.
2009-04-08 09:15:05 +09:00
$message = _ ( 'You haven\'t chosen any favorite notices yet. Click the fave button on notices you like to bookmark them for later or shed a spotlight on them.' );
} else {
2011-01-31 03:01:55 +09:00
// TRANS: Text displayed instead of favourite notices for a user that has no favourites while logged in.
// TRANS: %s is a username.
2010-07-20 11:09:09 +09:00
$message = sprintf ( _ ( '%s hasn\'t added any favorite notices yet. Post something interesting they would add to their favorites :)' ), $this -> user -> nickname );
2009-04-08 09:15:05 +09:00
}
}
else {
2011-01-31 03:01:55 +09:00
// TRANS: Text displayed instead of favourite notices for a user that has no favourites while not logged in.
// TRANS: %s is a username, %%%%action.register%%%% is a link to the user registration page.
// TRANS: (link text)[link] is a Mark Down link.
2010-07-20 11:09:09 +09:00
$message = sprintf ( _ ( '%s hasn\'t added any favorite notices yet. Why not [register an account](%%%%action.register%%%%) and then post something interesting they would add to their favorites :)' ), $this -> user -> nickname );
2009-04-08 09:15:05 +09:00
}
$this -> elementStart ( 'div' , 'guide' );
$this -> raw ( common_markup_to_html ( $message ));
$this -> elementEnd ( 'div' );
}
2009-01-20 00:28:27 +09:00
/**
* Show the content
*
* A list of notices that this user has marked as a favorite
*
* @ return void
*/
2015-07-11 07:28:32 +09:00
function showNotices ()
2009-01-20 00:28:27 +09:00
{
2010-10-19 00:29:52 +09:00
$nl = new FavoritesNoticeList ( $this -> notice , $this );
2009-01-20 00:28:27 +09:00
$cnt = $nl -> show ();
2009-04-08 09:15:05 +09:00
if ( 0 == $cnt ) {
2009-04-08 10:20:50 +09:00
$this -> showEmptyListMessage ();
2009-04-08 09:15:05 +09:00
}
2008-09-09 03:16:24 +09:00
2009-01-20 00:28:27 +09:00
$this -> pagination ( $this -> page > 1 , $cnt > NOTICES_PER_PAGE ,
$this -> page , 'showfavorites' ,
2015-07-11 07:28:32 +09:00
array ( 'nickname' => $this -> getTarget () -> getNickname ()));
2008-12-24 04:19:07 +09:00
}
2009-04-08 09:15:05 +09:00
function showPageNotice () {
2011-01-31 03:01:55 +09:00
// TRANS: Page notice for show favourites page.
2009-04-08 09:15:05 +09:00
$this -> element ( 'p' , 'instructions' , _ ( 'This is a way to share what you like.' ));
}
2008-09-09 03:16:24 +09:00
}
2009-04-08 09:15:05 +09:00
2010-10-19 00:29:52 +09:00
class FavoritesNoticeList extends NoticeList
{
function newListItem ( $notice )
{
return new FavoritesNoticeListItem ( $notice , $this -> out );
}
}
// All handled by superclass
class FavoritesNoticeListItem extends DoFollowListItem
{
}