| 
									
										
										
										
											2008-06-18 13:13:13 -04:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * StatusNet, the distributed open-source microblogging tool | 
					
						
							| 
									
										
										
										
											2008-06-18 13:13:13 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |  * List a user's subscribers | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * PHP version 5 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * LICENCE: This program is free software: you can redistribute it and/or modify | 
					
						
							| 
									
										
										
										
											2008-06-18 13:13:13 -04: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-22 17:19:27 +01:00
										 |  |  |  * | 
					
						
							|  |  |  |  * @category  Social | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * @package   StatusNet | 
					
						
							| 
									
										
										
										
											2009-08-25 18:19:04 -04:00
										 |  |  |  * @author    Evan Prodromou <evan@status.net> | 
					
						
							|  |  |  |  * @author    Sarven Capadisli <csarven@status.net> | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * @copyright 2008-2009 StatusNet, Inc. | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | 
					
						
							| 
									
										
										
										
											2009-08-25 18:16:46 -04:00
										 |  |  |  * @link      http://status.net/ | 
					
						
							| 
									
										
										
										
											2008-06-18 13:13:13 -04:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-26 10:41:36 -04:00
										 |  |  | if (!defined('STATUSNET') && !defined('LACONICA')) { | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2008-06-18 13:13:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * List a user's subscribers | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category Social | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * @package  StatusNet | 
					
						
							| 
									
										
										
										
											2009-08-25 18:19:04 -04:00
										 |  |  |  * @author   Evan Prodromou <evan@status.net> | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | 
					
						
							| 
									
										
										
										
											2009-08-25 18:16:46 -04:00
										 |  |  |  * @link     http://status.net/ | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-12-23 14:49:23 -05:00
										 |  |  | class SubscribersAction extends GalleryAction | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |     function title() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |         if ($this->page == 1) { | 
					
						
							| 
									
										
										
										
											2010-10-20 00:35:39 +02:00
										 |  |  |             // TRANS: Header for list of subscribers for a user (first page).
 | 
					
						
							|  |  |  |             // TRANS: %s is the user's nickname.
 | 
					
						
							| 
									
										
										
										
											2014-05-28 17:00:34 +02:00
										 |  |  |             return sprintf(_('%s subscribers'), $this->target->getNickname()); | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2010-10-20 00:35:39 +02:00
										 |  |  |             // TRANS: Header for list of subscribers for a user (not first page).
 | 
					
						
							|  |  |  |             // TRANS: %1$s is the user's nickname, $2$d is the page number.
 | 
					
						
							| 
									
										
										
										
											2010-01-10 01:45:58 +01:00
										 |  |  |             return sprintf(_('%1$s subscribers, page %2$d'), | 
					
						
							| 
									
										
										
										
											2014-05-28 17:00:34 +02:00
										 |  |  |                            $this->target->getNickname(), | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |                            $this->page); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |     function showPageNotice() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2014-05-28 17:00:34 +02:00
										 |  |  |         if ($this->scoped instanceof Profile && $this->scoped->id === $this->target->id) { | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |             $this->element('p', null, | 
					
						
							| 
									
										
										
										
											2010-10-20 00:35:39 +02:00
										 |  |  |                            // TRANS: Page notice for page with an overview of all subscribers
 | 
					
						
							|  |  |  |                            // TRANS: of the logged in user's own profile.
 | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |                            _('These are the people who listen to '. | 
					
						
							|  |  |  |                              'your notices.')); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |             $this->element('p', null, | 
					
						
							| 
									
										
										
										
											2010-10-20 00:35:39 +02:00
										 |  |  |                            // TRANS: Page notice for page with an overview of all subscribers of a user other
 | 
					
						
							|  |  |  |                            // TRANS: than the logged in user. %s is the user nickname.
 | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |                            sprintf(_('These are the people who '. | 
					
						
							|  |  |  |                                      'listen to %s\'s notices.'), | 
					
						
							| 
									
										
										
										
											2014-05-28 17:00:34 +02:00
										 |  |  |                                    $this->target->getNickname())); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |     function showContent() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-01-29 08:37:40 -05:00
										 |  |  |         parent::showContent(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |         $offset = ($this->page-1) * PROFILES_PER_PAGE; | 
					
						
							|  |  |  |         $limit =  PROFILES_PER_PAGE + 1; | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-29 08:37:40 -05:00
										 |  |  |         $cnt = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-22 22:38:10 +00:00
										 |  |  |         if ($this->tag) { | 
					
						
							| 
									
										
										
										
											2014-05-28 17:00:34 +02:00
										 |  |  |             $subscribers = $this->target->getTaggedSubscribers($this->tag, $offset, $limit); | 
					
						
							| 
									
										
										
										
											2009-01-22 22:38:10 +00:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2014-05-28 17:00:34 +02:00
										 |  |  |             $subscribers = $this->target->getSubscribers($offset, $limit); | 
					
						
							| 
									
										
										
										
											2009-01-22 22:38:10 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |         if ($subscribers) { | 
					
						
							| 
									
										
										
										
											2014-05-28 17:00:34 +02:00
										 |  |  |             $subscribers_list = new SubscribersList($subscribers, $this->target, $this); | 
					
						
							| 
									
										
										
										
											2009-01-29 08:37:40 -05:00
										 |  |  |             $cnt = $subscribers_list->show(); | 
					
						
							| 
									
										
										
										
											2009-04-08 01:12:43 +00:00
										 |  |  |             if (0 == $cnt) { | 
					
						
							|  |  |  |                 $this->showEmptyListMessage(); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-12-08 00:55:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-22 17:19:27 +01:00
										 |  |  |         $this->pagination($this->page > 1, $cnt > PROFILES_PER_PAGE, | 
					
						
							|  |  |  |                           $this->page, 'subscribers', | 
					
						
							| 
									
										
										
										
											2014-05-28 17:00:34 +02:00
										 |  |  |                           array('nickname' => $this->target->getNickname())); | 
					
						
							| 
									
										
										
										
											2008-12-08 00:55:11 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-04-08 01:12:43 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function showEmptyListMessage() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2014-05-28 17:00:34 +02:00
										 |  |  |         if ($this->scoped instanceof Profile && $this->target->id === $this->scoped->id) { | 
					
						
							|  |  |  |             // TRANS: Subscriber list text when the logged in user has no subscribers.
 | 
					
						
							|  |  |  |             $message = _('You have no subscribers. Try subscribing to people you know and they might return the favor.'); | 
					
						
							|  |  |  |         } elseif ($this->scoped instanceof Profile) { | 
					
						
							|  |  |  |             // TRANS: Subscriber list text when looking at the subscribers for a of a user other
 | 
					
						
							|  |  |  |             // TRANS: than the logged in user that has no subscribers. %s is the user nickname.
 | 
					
						
							|  |  |  |             $message = sprintf(_('%s has no subscribers. Want to be the first?'), $this->target->getNickname()); | 
					
						
							|  |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2010-10-20 00:35:39 +02:00
										 |  |  |             // TRANS: Subscriber list text when looking at the subscribers for a of a user that has none
 | 
					
						
							|  |  |  |             // TRANS: as an anonymous user. %s is the user nickname.
 | 
					
						
							|  |  |  |             // TRANS: This message contains a Markdown URL. The link description is between
 | 
					
						
							|  |  |  |             // TRANS: square brackets, and the link between parentheses. Do not separate "]("
 | 
					
						
							|  |  |  |             // TRANS: and do not change the URL part.
 | 
					
						
							| 
									
										
										
										
											2014-05-28 17:00:34 +02:00
										 |  |  |             $message = sprintf(_('%s has no subscribers. Why not [register an account](%%%%action.register%%%%) and be the first?'), $this->target->getNickname()); | 
					
						
							| 
									
										
										
										
											2009-04-08 01:12:43 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->elementStart('div', 'guide'); | 
					
						
							|  |  |  |         $this->raw(common_markup_to_html($message)); | 
					
						
							|  |  |  |         $this->elementEnd('div'); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-04-18 19:08:33 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function showSections() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         parent::showSections(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-12-08 00:55:11 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-14 14:52:26 -07:00
										 |  |  | class SubscribersList extends SubscriptionList | 
					
						
							| 
									
										
										
										
											2008-12-23 14:49:23 -05:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-06-14 14:52:26 -07:00
										 |  |  |     function newListItem($profile) | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-06-14 14:52:26 -07:00
										 |  |  |         return new SubscribersListItem($profile, $this->owner, $this->action); | 
					
						
							| 
									
										
										
										
											2008-12-08 00:55:11 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-06-14 14:52:26 -07:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-01-23 09:15:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-14 14:52:26 -07:00
										 |  |  | class SubscribersListItem extends SubscriptionListItem | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     function showActions() | 
					
						
							| 
									
										
										
										
											2009-01-23 09:15:15 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-06-14 14:52:26 -07:00
										 |  |  |         $this->startActions(); | 
					
						
							| 
									
										
										
										
											2010-03-03 15:09:07 -05:00
										 |  |  |         if (Event::handle('StartProfileListItemActionElements', array($this))) { | 
					
						
							|  |  |  |             $this->showSubscribeButton(); | 
					
						
							|  |  |  |             // Relevant code!
 | 
					
						
							|  |  |  |             $this->showBlockForm(); | 
					
						
							|  |  |  |             Event::handle('EndProfileListItemActionElements', array($this)); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2009-06-14 14:52:26 -07:00
										 |  |  |         $this->endActions(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function showBlockForm() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $user = common_current_user(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (!empty($user) && $this->owner->id == $user->id) { | 
					
						
							| 
									
										
										
										
											2010-04-08 19:06:55 -07:00
										 |  |  |             $returnto = array('action' => 'subscribers', | 
					
						
							| 
									
										
										
										
											2014-05-28 17:00:34 +02:00
										 |  |  |                               'nickname' => $this->owner->getNickname()); | 
					
						
							| 
									
										
										
										
											2010-04-08 19:06:55 -07:00
										 |  |  |             $page = $this->out->arg('page'); | 
					
						
							|  |  |  |             if ($page) { | 
					
						
							|  |  |  |                 $returnto['param-page'] = $page; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             $bf = new BlockForm($this->out, $this->profile, $returnto); | 
					
						
							| 
									
										
										
										
											2009-06-14 14:52:26 -07:00
										 |  |  |             $bf->show(); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2009-01-23 09:15:15 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-04-05 11:18:03 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function linkAttributes() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $aAttrs = parent::linkAttributes(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (common_config('nofollow', 'subscribers')) { | 
					
						
							|  |  |  |             $aAttrs['rel'] .= ' nofollow'; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $aAttrs; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function homepageAttributes() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-04-09 14:11:18 -04:00
										 |  |  |         $aAttrs = parent::linkAttributes(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-05 11:18:03 -04:00
										 |  |  |         if (common_config('nofollow', 'subscribers')) { | 
					
						
							|  |  |  |             $aAttrs['rel'] = 'nofollow'; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-04-09 14:11:18 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return $aAttrs; | 
					
						
							| 
									
										
										
										
											2010-04-05 11:18:03 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-12-08 00:55:11 -05:00
										 |  |  | } |