2008-06-23 04:08:37 +01:00
< ? php
2009-01-17 23:17:57 +00:00
/**
2009-08-25 23:12:20 +01:00
* StatusNet , the distributed open - source microblogging tool
2008-06-23 04:08:37 +01:00
*
2009-01-17 23:17:57 +00:00
* List of replies
*
* PHP version 5
*
* LICENCE : This program is free software : you can redistribute it and / or modify
2008-06-23 04:08:37 +01: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-17 23:17:57 +00:00
*
* @ category Personal
2009-08-25 23:12:20 +01:00
* @ package StatusNet
2009-08-25 23:19:04 +01:00
* @ author Evan Prodromou < evan @ status . net >
2011-06-09 21:20:19 +01:00
* @ copyright 2008 - 2011 StatusNet , Inc .
2009-01-17 23:17:57 +00:00
* @ license http :// www . fsf . org / licensing / licenses / agpl - 3.0 . html GNU Affero General Public License version 3.0
2009-08-25 23:16:46 +01:00
* @ link http :// status . net /
2008-06-23 04:08:37 +01:00
*/
2015-03-08 11:38:15 +00:00
if ( ! defined ( 'GNUSOCIAL' )) { exit ( 1 ); }
2008-06-23 04:08:37 +01:00
2009-01-17 23:17:57 +00:00
/**
* List of replies
*
* @ category Personal
2009-08-25 23:12:20 +01:00
* @ package StatusNet
2009-08-25 23:19:04 +01:00
* @ author Evan Prodromou < evan @ status . net >
2009-01-17 23:17:57 +00:00
* @ license http :// www . fsf . org / licensing / licenses / agpl - 3.0 . html GNU Affero General Public License version 3.0
2009-08-25 23:16:46 +01:00
* @ link http :// status . net /
2009-01-17 23:17:57 +00:00
*/
2015-06-05 20:49:34 +01:00
class RepliesAction extends ShowstreamAction
2009-01-17 23:17:57 +00:00
{
var $page = null ;
2009-08-16 15:37:15 +01:00
var $notice ;
2009-01-17 23:17:57 +00:00
2015-06-05 20:49:34 +01:00
protected function getStream ()
2008-12-23 19:33:23 +00:00
{
2015-06-05 20:49:34 +01:00
return new ReplyNoticeStream ( $this -> target -> getID (), $this -> scoped );
2008-12-23 19:19:07 +00:00
}
2008-07-08 10:45:31 +01:00
2009-01-17 23:17:57 +00:00
/**
* Title of the page
*
* Includes name of user and page number .
*
* @ return string title of page
*/
function title ()
2008-12-23 19:33:23 +00:00
{
2009-01-17 23:17:57 +00:00
if ( $this -> page == 1 ) {
2011-03-18 19:37:04 +00:00
// TRANS: Title for first page of replies for a user.
// TRANS: %s is a user nickname.
2015-03-08 11:38:15 +00:00
return sprintf ( _ ( " Replies to %s " ), $this -> target -> getNickname ());
2009-01-17 23:17:57 +00:00
} else {
2011-03-18 19:37:04 +00:00
// TRANS: Title for all but the first page of replies for a user.
// TRANS: %1$s is a user nickname, %2$d is a page number.
2010-01-25 03:52:03 +00:00
return sprintf ( _ ( 'Replies to %1$s, page %2$d' ),
2015-03-08 11:38:15 +00:00
$this -> target -> getNickname (),
2009-01-17 23:17:57 +00:00
$this -> page );
}
2008-12-23 19:19:07 +00:00
}
2008-07-17 13:42:15 +01:00
2009-01-17 23:17:57 +00:00
/**
* Feeds for the < head > section
*
* @ return void
*/
2009-02-11 16:37:50 +00:00
function getFeeds ()
2008-12-23 19:33:23 +00:00
{
2011-06-22 22:19:46 +01:00
return array ( new Feed ( Feed :: JSON ,
common_local_url ( 'ApiTimelineMentions' ,
array (
2015-03-08 11:38:15 +00:00
'id' => $this -> target -> getNickname (),
2011-06-22 22:19:46 +01:00
'format' => 'as' )),
// TRANS: Link for feed with replies for a user.
// TRANS: %s is a user nickname.
sprintf ( _ ( 'Replies feed for %s (Activity Streams JSON)' ),
$this -> user -> nickname )),
new Feed ( Feed :: RSS1 ,
2009-10-29 23:09:42 +00:00
common_local_url ( 'repliesrss' ,
2015-03-08 11:38:15 +00:00
array ( 'nickname' => $this -> target -> getNickname ())),
2011-03-18 19:37:04 +00:00
// TRANS: Link for feed with replies for a user.
// TRANS: %s is a user nickname.
2009-10-29 23:09:42 +00:00
sprintf ( _ ( 'Replies feed for %s (RSS 1.0)' ),
2015-03-08 11:38:15 +00:00
$this -> target -> getNickname ())),
2009-10-29 23:09:42 +00:00
new Feed ( Feed :: RSS2 ,
common_local_url ( 'ApiTimelineMentions' ,
array (
2015-03-08 11:38:15 +00:00
'id' => $this -> target -> getNickname (),
2009-10-29 23:09:42 +00:00
'format' => 'rss' )),
2011-03-18 19:37:04 +00:00
// TRANS: Link for feed with replies for a user.
// TRANS: %s is a user nickname.
2009-10-29 23:09:42 +00:00
sprintf ( _ ( 'Replies feed for %s (RSS 2.0)' ),
2015-03-08 11:38:15 +00:00
$this -> target -> getNickname ())),
2009-10-29 23:09:42 +00:00
new Feed ( Feed :: ATOM ,
common_local_url ( 'ApiTimelineMentions' ,
array (
2015-03-08 11:38:15 +00:00
'id' => $this -> target -> getNickname (),
2009-10-29 23:09:42 +00:00
'format' => 'atom' )),
2011-03-18 19:37:04 +00:00
// TRANS: Link for feed with replies for a user.
// TRANS: %s is a user nickname.
2009-10-29 23:09:42 +00:00
sprintf ( _ ( 'Replies feed for %s (Atom)' ),
2015-03-08 11:38:15 +00:00
$this -> target -> getNickname ())));
2008-12-23 19:19:07 +00:00
}
2008-06-23 04:08:37 +01:00
2009-01-17 23:17:57 +00:00
function showContent ()
{
2015-01-08 19:29:09 +00:00
$nl = new PrimaryNoticeList ( $this -> notice , $this , array ( 'show_n' => NOTICES_PER_PAGE ));
2008-12-11 23:12:52 +00:00
2009-01-17 23:17:57 +00:00
$cnt = $nl -> show ();
2009-04-08 00:25:12 +01:00
if ( 0 === $cnt ) {
$this -> showEmptyListMessage ();
}
2008-07-08 10:45:31 +01:00
2009-01-17 23:17:57 +00:00
$this -> pagination ( $this -> page > 1 , $cnt > NOTICES_PER_PAGE ,
$this -> page , 'replies' ,
2015-03-08 11:38:15 +00:00
array ( 'nickname' => $this -> target -> getNickname ()));
2008-12-23 19:19:07 +00:00
}
2009-01-23 09:15:15 +00:00
2009-04-08 00:25:12 +01:00
function showEmptyListMessage ()
{
2011-03-18 19:37:04 +00:00
// TRANS: Empty list message for page with replies for a user.
2015-03-08 11:38:15 +00:00
// TRANS: %1$s is the user nickname.
$message = sprintf ( _ ( 'This is the timeline showing replies to %1$s but no notices have arrived yet.' ), $this -> target -> getNickname ());
$message .= ' ' ; // Spacing between this sentence and the next.
2009-04-08 00:25:12 +01:00
if ( common_logged_in ()) {
2015-03-08 11:38:15 +00:00
if ( $this -> target -> getID () === $this -> scoped -> getID ()) {
2011-03-18 19:37:04 +00:00
// TRANS: Empty list message for page with replies for a user for the logged in user.
// TRANS: This message contains a Markdown link in the form [link text](link).
2009-04-08 00:25:12 +01:00
$message .= _ ( 'You can engage other users in a conversation, subscribe to more people or [join groups](%%action.groups%%).' );
} else {
2011-03-18 19:37:04 +00:00
// TRANS: Empty list message for page with replies for a user for all logged in users but the user themselves.
2015-03-08 11:38:15 +00:00
// TRANS: %1$s is a user nickname and %2$s is the same but with a prepended '@' character. This message contains a Markdown link in the form [link text](link).
$message .= sprintf ( _ ( 'You can try to [nudge %1$s](../%1$s) or [post something to them](%%%%action.newnotice%%%%?content=%2$s).' ), $this -> target -> getNickname (), '@' . $this -> target -> getNickname ());
2009-04-08 00:25:12 +01:00
}
2015-03-08 11:38:15 +00:00
} else {
2011-03-18 19:37:04 +00:00
// TRANS: Empty list message for page with replies for a user for not logged in users.
// TRANS: %1$s is a user nickname. This message contains a Markdown link in the form [link text](link).
2015-03-08 11:38:15 +00:00
$message .= sprintf ( _ ( 'Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to them.' ), $this -> target -> getNickname ());
2009-04-08 00:25:12 +01:00
}
$this -> elementStart ( 'div' , 'guide' );
$this -> raw ( common_markup_to_html ( $message ));
$this -> elementEnd ( 'div' );
}
2015-03-08 11:38:15 +00:00
public function isReadOnly ( $args )
2009-01-23 09:15:15 +00:00
{
return true ;
}
2008-06-23 04:08:37 +01:00
}