2008-05-09 03:16:04 +01:00
< ? php
2009-01-22 15:12:00 +00:00
/**
2009-08-25 23:12:20 +01:00
* StatusNet , the distributed open - source microblogging tool
2008-05-20 20:14:12 +01:00
*
2009-01-22 16:12:23 +00:00
* List of a user ' s subscriptions
2009-01-22 15:12:00 +00:00
*
* PHP version 5
*
* LICENCE : This program is free software : you can redistribute it and / or modify
2008-05-14 20:26:48 +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 .
2008-05-20 20:14:12 +01:00
*
2008-05-14 20:26:48 +01:00
* 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 .
2008-05-20 20:14:12 +01:00
*
2008-05-14 20:26:48 +01:00
* 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-22 15:12:00 +00:00
*
2009-01-22 16:12:23 +00:00
* @ category Social
2009-08-25 23:12:20 +01:00
* @ package StatusNet
2009-01-22 15:12:00 +00:00
* @ author Evan Prodromou < evan @ controlyourself . ca >
* @ author Sarven Capadisli < csarven @ controlyourself . ca >
2009-08-25 23:12:20 +01:00
* @ copyright 2008 - 2009 StatusNet , Inc .
2009-01-22 15:12:00 +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-05-14 20:26:48 +01:00
*/
2009-01-22 15:12:00 +00:00
if ( ! defined ( 'LACONICA' )) {
exit ( 1 );
}
/**
2009-01-22 16:12:23 +00:00
* A list of the user ' s subscriptions
2009-01-22 15:12:00 +00:00
*
2009-01-22 16:12:23 +00:00
* @ category Social
2009-08-25 23:12:20 +01:00
* @ package StatusNet
2009-01-22 15:12:00 +00:00
* @ 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
2009-08-25 23:16:46 +01:00
* @ link http :// status . net /
2009-01-22 15:12:00 +00:00
*/
2008-05-09 03:16:04 +01:00
2009-01-22 15:12:00 +00:00
if ( ! defined ( 'LACONICA' )) { exit ( 1 ); }
2008-05-21 20:29:12 +01:00
2009-01-22 16:12:23 +00:00
class SubscriptionsAction extends GalleryAction
2008-12-23 19:49:23 +00:00
{
2009-01-22 15:12:00 +00:00
function title ()
2008-12-23 19:33:23 +00:00
{
2009-01-22 15:12:00 +00:00
if ( $this -> page == 1 ) {
return sprintf ( _ ( '%s subscriptions' ), $this -> user -> nickname );
} else {
return sprintf ( _ ( '%s subscriptions, page %d' ),
$this -> user -> nickname ,
$this -> page );
}
2008-12-23 19:19:07 +00:00
}
2008-07-08 10:45:31 +01:00
2009-01-22 15:12:00 +00:00
function showPageNotice ()
2008-12-23 19:33:23 +00:00
{
2009-01-22 15:12:00 +00:00
$user =& common_current_user ();
if ( $user && ( $user -> id == $this -> profile -> id )) {
$this -> element ( 'p' , null ,
_ ( 'These are the people whose notices ' .
'you listen to.' ));
} else {
$this -> element ( 'p' , null ,
sprintf ( _ ( 'These are the people whose ' .
'notices %s listens to.' ),
$this -> profile -> nickname ));
}
2008-12-23 19:19:07 +00:00
}
2008-12-08 05:55:11 +00:00
2009-01-22 16:12:23 +00:00
function getAllTags ()
2008-12-23 19:33:23 +00:00
{
2009-01-22 16:12:23 +00:00
return $this -> getTags ( 'subscribed' , 'subscriber' );
2009-01-22 15:12:00 +00:00
}
function showContent ()
{
2009-01-22 16:12:23 +00:00
parent :: showContent ();
2009-01-22 15:12:00 +00:00
$offset = ( $this -> page - 1 ) * PROFILES_PER_PAGE ;
$limit = PROFILES_PER_PAGE + 1 ;
2009-01-29 13:37:40 +00:00
$cnt = 0 ;
2009-01-22 22:38:10 +00:00
if ( $this -> tag ) {
$subscriptions = $this -> user -> getTaggedSubscriptions ( $this -> tag , $offset , $limit );
} else {
$subscriptions = $this -> user -> getSubscriptions ( $offset , $limit );
}
2009-01-22 15:12:00 +00:00
2009-01-22 16:12:23 +00:00
if ( $subscriptions ) {
$subscriptions_list = new SubscriptionsList ( $subscriptions , $this -> user , $this );
2009-01-29 13:37:40 +00:00
$cnt = $subscriptions_list -> show ();
2009-04-08 02:05:17 +01:00
if ( 0 == $cnt ) {
$this -> showEmptyListMessage ();
}
2009-01-22 15:12:00 +00:00
}
$subscriptions -> free ();
$this -> pagination ( $this -> page > 1 , $cnt > PROFILES_PER_PAGE ,
$this -> page , 'subscriptions' ,
array ( 'nickname' => $this -> user -> nickname ));
2008-12-08 05:55:11 +00:00
}
2009-04-08 02:05:17 +01:00
function showEmptyListMessage ()
{
if ( common_logged_in ()) {
$current_user = common_current_user ();
if ( $this -> user -> id === $current_user -> id ) {
$message = _ ( 'You\'re not listening to anyone\'s notices right now, try subscribing to people you know. Try [people search](%%action.peoplesearch%%), look for members in groups you\'re interested in and in our [featured users](%%action.featured%%). If you\'re a [Twitter user](%%action.twittersettings%%), you can automatically subscribe to people you already follow there.' );
} else {
2009-04-08 02:13:37 +01:00
$message = sprintf ( _ ( '%s is not listening to anyone.' ), $this -> user -> nickname );
2009-04-08 02:05:17 +01:00
}
}
else {
2009-04-08 02:13:37 +01:00
$message = sprintf ( _ ( '%s is not listening to anyone.' ), $this -> user -> nickname );
2009-04-08 02:05:17 +01:00
}
$this -> elementStart ( 'div' , 'guide' );
$this -> raw ( common_markup_to_html ( $message ));
$this -> elementEnd ( 'div' );
}
2009-04-18 20:08:33 +01:00
function showSections ()
{
parent :: showSections ();
$cloud = new SubscriptionsPeopleTagCloudSection ( $this );
$cloud -> show ();
$cloud2 = new SubscriptionsPeopleSelfTagCloudSection ( $this );
$cloud2 -> show ();
}
2008-12-08 05:55:11 +00:00
}
2009-06-14 22:52:26 +01:00
// XXX SubscriptionsList and SubscriptionList are dangerously close
class SubscriptionsList extends SubscriptionList
2008-12-23 19:49:23 +00:00
{
2009-06-14 22:52:26 +01:00
function newListItem ( $profile )
{
return new SubscriptionsListItem ( $profile , $this -> owner , $this -> action );
}
}
class SubscriptionsListItem extends SubscriptionListItem
{
function showProfile ()
{
$this -> startProfile ();
$this -> showAvatar ();
$this -> showFullName ();
$this -> showLocation ();
$this -> showHomepage ();
$this -> showBio ();
$this -> showTags ();
// Relevant portion!
2009-07-03 06:26:21 +01:00
$cur = common_current_user ();
if ( ! empty ( $cur ) && $cur -> id == $this -> owner -> id ) {
$this -> showOwnerControls ();
}
2009-06-14 22:52:26 +01:00
$this -> endProfile ();
}
function showOwnerControls ()
2008-12-23 19:33:23 +00:00
{
2008-12-23 19:19:07 +00:00
$sub = Subscription :: pkeyGet ( array ( 'subscriber' => $this -> owner -> id ,
2009-06-14 22:52:26 +01:00
'subscribed' => $this -> profile -> id ));
2008-12-12 05:57:13 +00:00
if ( ! $sub ) {
return ;
}
2009-08-06 18:34:36 +01:00
if ( ! common_config ( 'xmpp' , 'enabled' ) && ! common_config ( 'sms' , 'enabled' )) {
return ;
}
2009-06-14 22:52:26 +01:00
$this -> out -> elementStart ( 'form' , array ( 'id' => 'subedit-' . $this -> profile -> id ,
2009-01-22 15:12:00 +00:00
'method' => 'post' ,
2009-04-09 18:52:39 +01:00
'class' => 'form_subscription_edit' ,
2009-01-22 15:12:00 +00:00
'action' => common_local_url ( 'subedit' )));
2009-01-22 16:12:23 +00:00
$this -> out -> hidden ( 'token' , common_session_token ());
2009-06-14 22:52:26 +01:00
$this -> out -> hidden ( 'profile' , $this -> profile -> id );
2009-08-06 18:34:36 +01:00
if ( common_config ( 'xmpp' , 'enabled' )) {
$this -> out -> checkbox ( 'jabber' , _ ( 'Jabber' ), $sub -> jabber );
} else {
$this -> out -> hidden ( 'jabber' , $sub -> jabber );
}
if ( common_config ( 'sms' , 'enabled' )) {
$this -> out -> checkbox ( 'sms' , _ ( 'SMS' ), $sub -> sms );
} else {
$this -> out -> hidden ( 'sms' , $sub -> sms );
}
2009-01-22 16:12:23 +00:00
$this -> out -> submit ( 'save' , _ ( 'Save' ));
$this -> out -> elementEnd ( 'form' );
2008-12-08 05:55:11 +00:00
return ;
}
2008-11-20 11:38:39 +00:00
}