2008-09-08 19:16:24 +01:00
< ? php
2009-01-19 15:28:27 +00:00
/**
* Laconica , the distributed open - source microblogging tool
2008-09-08 19:16:24 +01:00
*
2009-01-19 15:28:27 +00:00
* List of replies
*
* PHP version 5
*
* LICENCE : This program is free software : you can redistribute it and / or modify
2008-09-08 19:16:24 +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-19 15:28:27 +00:00
*
* @ category Personal
* @ package Laconica
* @ author Evan Prodromou < evan @ controlyourself . ca >
* @ copyright 2008 - 2009 Control Yourself , Inc .
* @ license http :// www . fsf . org / licensing / licenses / agpl - 3.0 . html GNU Affero General Public License version 3.0
* @ link http :// laconi . ca /
2008-09-08 19:16:24 +01:00
*/
2009-01-19 15:28:27 +00:00
if ( ! defined ( 'LACONICA' )) {
exit ( 1 );
}
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
require_once INSTALLDIR . '/lib/personalgroupnav.php' ;
require_once INSTALLDIR . '/lib/noticelist.php' ;
require_once INSTALLDIR . '/lib/feedlist.php' ;
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
/**
* List of replies
*
* @ category Personal
* @ package Laconica
* @ author Evan Prodromou < evan @ controlyourself . ca >
* @ license http :// www . fsf . org / licensing / licenses / agpl - 3.0 . html GNU Affero General Public License version 3.0
* @ link http :// laconi . ca /
*/
2008-09-08 19:16:24 +01:00
2009-07-02 13:21:41 +01:00
class ShowfavoritesAction extends OwnerDesignAction
2009-01-19 15:28:27 +00:00
{
/** User we're getting the faves of */
var $user = null ;
/** Page of the faves we're on */
var $page = null ;
2009-01-19 18:10:20 +00:00
/**
* Is this a read - only page ?
*
* @ return boolean true
*/
2009-04-13 20:49:26 +01:00
function isReadOnly ( $args )
2009-01-19 18:10:20 +00:00
{
return true ;
}
2009-01-19 15:28:27 +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-19 15:28:27 +00:00
if ( $this -> page == 1 ) {
2009-05-01 12:11:28 +01:00
return sprintf ( _ ( " %s's favorite notices " ), $this -> user -> nickname );
2009-01-19 15:28:27 +00:00
} else {
2009-05-01 12:11:28 +01:00
return sprintf ( _ ( " %s's favorite notices, page %d " ),
2009-01-19 15:28:27 +00:00
$this -> user -> nickname ,
$this -> page );
}
}
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
/**
* Prepare the object
*
* Check the input values and initialize the object .
* Shows an error page on bad input .
*
* @ param array $args $_REQUEST data
*
* @ return boolean success flag
*/
function prepare ( $args )
{
parent :: prepare ( $args );
2008-09-08 19:16:24 +01:00
2008-12-23 19:19:07 +00:00
$nickname = common_canonical_nickname ( $this -> arg ( 'nickname' ));
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
$this -> user = User :: staticGet ( 'nickname' , $nickname );
if ( ! $this -> user ) {
2009-01-15 23:03:38 +00:00
$this -> clientError ( _ ( 'No such user.' ));
2009-01-19 15:28:27 +00:00
return false ;
2008-12-23 19:19:07 +00:00
}
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
$this -> page = $this -> trimmed ( 'page' );
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
if ( ! $this -> page ) {
$this -> page = 1 ;
2008-12-23 19:19:07 +00:00
}
2008-09-08 19:16:24 +01:00
2009-02-06 00:16:10 +00:00
common_set_returnto ( $this -> selfUrl ());
2009-02-11 16:37:50 +00:00
2009-08-16 15:37:15 +01:00
$cur = common_current_user ();
if ( ! empty ( $cur ) && $cur -> id == $this -> user -> id ) {
// Show imported/gateway notices as well as local if
// the user is looking at his own favorites
$this -> notice = $this -> user -> favoriteNotices (( $this -> page - 1 ) * NOTICES_PER_PAGE ,
NOTICES_PER_PAGE + 1 , true );
} else {
$this -> notice = $this -> user -> favoriteNotices (( $this -> page - 1 ) * NOTICES_PER_PAGE ,
NOTICES_PER_PAGE + 1 , false );
}
if ( empty ( $this -> notice )) {
$this -> serverError ( _ ( 'Could not retrieve favorite notices.' ));
return ;
}
if ( $this -> page > 1 && $this -> notice -> N == 0 ){
$this -> serverError ( _ ( 'No such page' ), $code = 404 );
}
2009-01-19 15:28:27 +00:00
return true ;
}
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
/**
* Handle a request
*
* Just show the page . All args already handled .
*
* @ param array $args $_REQUEST data
*
* @ return void
*/
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
function handle ( $args )
{
parent :: handle ( $args );
$this -> showPage ();
2008-12-23 19:19:07 +00:00
}
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
/**
* Feeds for the < head > section
*
2009-02-11 16:37:50 +00:00
* @ return array Feed objects to show
2009-01-19 15:28:27 +00:00
*/
2009-02-11 16:37:50 +00:00
function getFeeds ()
2008-12-23 19:33:23 +00:00
{
2009-01-19 15:28:27 +00:00
$feedurl = common_local_url ( 'favoritesrss' ,
array ( 'nickname' =>
$this -> user -> nickname ));
$feedtitle = sprintf ( _ ( 'Feed for favorites of %s' ),
$this -> user -> nickname );
2009-02-11 16:37:50 +00:00
return array ( new Feed ( Feed :: RSS1 , $feedurl , $feedtitle ));
2008-12-23 19:19:07 +00:00
}
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
/**
* show the personal group nav
*
* @ return void
*/
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
function showLocalNav ()
{
$nav = new PersonalGroupNav ( $this );
$nav -> show ();
2008-12-23 19:19:07 +00:00
}
2008-09-08 19:16:24 +01:00
2009-04-08 01:15:05 +01:00
function showEmptyListMessage ()
{
if ( common_logged_in ()) {
$current_user = common_current_user ();
if ( $this -> user -> id === $current_user -> id ) {
$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 {
2009-04-08 01:16:53 +01:00
$message = sprintf ( _ ( '%s hasn\'t added any notices to his favorites yet. Post something interesting they would add to their favorites :)' ), $this -> user -> nickname );
2009-04-08 01:15:05 +01:00
}
}
else {
2009-08-09 12:12:59 +01:00
$message = sprintf ( _ ( '%s hasn\'t added any notices to his favorites yet. Why not [register an account](%%%%action.%s%%%%) and then post something interesting they would add to their favorites :)' ),
$this -> user -> nickname ,
( ! common_config ( 'site' , 'openidonly' )) ? 'register' : 'openidlogin' );
2009-04-08 01:15:05 +01:00
}
$this -> elementStart ( 'div' , 'guide' );
$this -> raw ( common_markup_to_html ( $message ));
$this -> elementEnd ( 'div' );
}
2009-01-19 15:28:27 +00:00
/**
* Show the content
*
* A list of notices that this user has marked as a favorite
*
* @ return void
*/
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
function showContent ()
{
2009-08-16 15:37:15 +01:00
$nl = new NoticeList ( $this -> notice , $this );
2009-01-19 15:28:27 +00:00
$cnt = $nl -> show ();
2009-04-08 01:15:05 +01:00
if ( 0 == $cnt ) {
2009-04-08 02:20:50 +01:00
$this -> showEmptyListMessage ();
2009-04-08 01:15:05 +01:00
}
2008-09-08 19:16:24 +01:00
2009-01-19 15:28:27 +00:00
$this -> pagination ( $this -> page > 1 , $cnt > NOTICES_PER_PAGE ,
$this -> page , 'showfavorites' ,
array ( 'nickname' => $this -> user -> nickname ));
2008-12-23 19:19:07 +00:00
}
2009-04-08 01:15:05 +01:00
function showPageNotice () {
$this -> element ( 'p' , 'instructions' , _ ( 'This is a way to share what you like.' ));
}
2008-09-08 19:16:24 +01:00
}
2009-04-08 01:15:05 +01:00