| 
									
										
										
										
											2009-01-21 12:19:47 -05:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * StatusNet, the distributed open-source microblogging tool | 
					
						
							| 
									
										
										
										
											2009-01-21 12:19:47 -05:00
										 |  |  |  * | 
					
						
							|  |  |  |  * User groups information | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * PHP version 5 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * LICENCE: This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * 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/>. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category  Personal | 
					
						
							| 
									
										
										
										
											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-21 12:19:47 -05: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-21 12:19:47 -05:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-26 10:41:36 -04:00
										 |  |  | if (!defined('STATUSNET') && !defined('LACONICA')) { | 
					
						
							| 
									
										
										
										
											2009-01-21 12:19:47 -05:00
										 |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 02:57:48 +01:00
										 |  |  | require_once INSTALLDIR.'/lib/grouplist.php'; | 
					
						
							| 
									
										
										
										
											2009-01-21 12:19:47 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * User groups page | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Show the groups a user belongs to | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category Personal | 
					
						
							| 
									
										
										
										
											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-21 12:19:47 -05: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-21 12:19:47 -05:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2014-05-12 22:41:05 +02:00
										 |  |  | class UsergroupsAction extends GalleryAction | 
					
						
							| 
									
										
										
										
											2009-01-21 12:19:47 -05:00
										 |  |  | { | 
					
						
							|  |  |  |     function title() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if ($this->page == 1) { | 
					
						
							| 
									
										
										
										
											2011-03-18 20:37:04 +01:00
										 |  |  |             // TRANS: Page title for first page of groups for a user.
 | 
					
						
							|  |  |  |             // TRANS: %s is a nickname.
 | 
					
						
							| 
									
										
										
										
											2015-07-10 22:54:14 +02:00
										 |  |  |             return sprintf(_('%s groups'), $this->getTarget()->getNickname()); | 
					
						
							| 
									
										
										
										
											2009-01-21 12:19:47 -05:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2011-03-18 20:37:04 +01:00
										 |  |  |             // TRANS: Page title for all but the first page of groups for a user.
 | 
					
						
							|  |  |  |             // TRANS: %1$s is a nickname, %2$d is a page number.
 | 
					
						
							| 
									
										
										
										
											2010-01-24 22:55:29 -05:00
										 |  |  |             return sprintf(_('%1$s groups, page %2$d'), | 
					
						
							| 
									
										
										
										
											2015-07-10 22:54:14 +02:00
										 |  |  |                            $this->getTarget()->getNickname(), | 
					
						
							| 
									
										
										
										
											2009-01-21 12:19:47 -05:00
										 |  |  |                            $this->page); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-25 21:38:38 +02:00
										 |  |  |     function showPageNotice() | 
					
						
							| 
									
										
										
										
											2009-01-21 12:19:47 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-07-25 21:38:38 +02:00
										 |  |  |         if ($this->scoped instanceof Profile && $this->scoped->sameAs($this->getTarget())) { | 
					
						
							| 
									
										
										
										
											2015-07-26 11:10:30 +02:00
										 |  |  |             $this->element('p', 'instructions', | 
					
						
							| 
									
										
										
										
											2015-07-25 21:38:38 +02:00
										 |  |  |                            // TRANS: Page notice for page with an overview of all subscribed groups
 | 
					
						
							|  |  |  |                            // TRANS: of the logged in user's own profile.
 | 
					
						
							|  |  |  |                            _('These are the groups whose notices '. | 
					
						
							|  |  |  |                              'you listen to.')); | 
					
						
							|  |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2015-07-26 11:10:30 +02:00
										 |  |  |             $this->element('p', 'instructions', | 
					
						
							| 
									
										
										
										
											2015-07-25 21:38:38 +02:00
										 |  |  |                            // TRANS: Page notice for page with an overview of all groups a user other
 | 
					
						
							|  |  |  |                            // TRANS: than the logged in user. %s is the user nickname.
 | 
					
						
							|  |  |  |                            sprintf(_('These are the groups whose '. | 
					
						
							|  |  |  |                                      'notices %s listens to.'), | 
					
						
							|  |  |  |                                    $this->target->getNickname())); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-01-23 02:25:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-25 21:38:38 +02:00
										 |  |  |     function showContent() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if ($this->scoped instanceof Profile && $this->scoped->sameAs($this->getTarget())) { | 
					
						
							|  |  |  | 	  $notice = | 
					
						
							|  |  |  |           // TRANS: Page notice of user's groups page.
 | 
					
						
							|  |  |  |           // TRANS: %%%%action.groupsearch%%%% and %%%%action.newgroup%%%% are URLs. Do not change them.
 | 
					
						
							|  |  |  |           // TRANS: This message contains Markdown links in the form [link text](link).
 | 
					
						
							|  |  |  |           sprintf(_('Groups let you find and talk with ' . | 
					
						
							|  |  |  | 		    'people of similar interests. ' . | 
					
						
							|  |  |  | 		    'You can [search for groups](%%%%action.groups%%%%) in your instance or ' . | 
					
						
							|  |  |  |                     '[create a new group](%%%%action.newgroup%%%%). ' . | 
					
						
							|  |  |  | 		    'You can also follow groups ' . | 
					
						
							|  |  |  | 		    'from other GNU social instances: click on the remote button below ' . | 
					
						
							|  |  |  | 		    'and copy the group\'s link. ' . | 
					
						
							|  |  |  | 		    'You can find a list of GNU social groups [here](http://skilledtests.com/wiki/List_of_federated_GNU_social_groups)' . | 
					
						
							|  |  |  | 		    '')); | 
					
						
							|  |  |  | 	  $this->elementStart('div', 'instructions'); | 
					
						
							|  |  |  | 	  $this->raw(common_markup_to_html($notice)); | 
					
						
							|  |  |  | 	  $this->elementEnd('div'); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-02-07 04:03:25 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-03 15:29:51 -05:00
										 |  |  |         if (Event::handle('StartShowUserGroupsContent', array($this))) { | 
					
						
							|  |  |  |             $offset = ($this->page-1) * GROUPS_PER_PAGE; | 
					
						
							|  |  |  |             $limit =  GROUPS_PER_PAGE + 1; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-10 22:54:14 +02:00
										 |  |  |             $groups = $this->getTarget()->getGroups($offset, $limit); | 
					
						
							| 
									
										
										
										
											2010-03-03 15:29:51 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-29 11:27:26 +01:00
										 |  |  |             if ($groups instanceof User_group) { | 
					
						
							| 
									
										
										
										
											2015-07-10 22:54:14 +02:00
										 |  |  |                 $gl = new GroupList($groups, $this->getTarget(), $this); | 
					
						
							| 
									
										
										
										
											2010-03-03 15:29:51 -05:00
										 |  |  |                 $cnt = $gl->show(); | 
					
						
							| 
									
										
										
										
											2015-07-25 21:38:38 +02:00
										 |  |  | 		if (0 == $cnt) { | 
					
						
							|  |  |  | 		  $this->showEmptyListMessage(); | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 		  $this->pagination($this->page > 1, $cnt > GROUPS_PER_PAGE, | 
					
						
							|  |  |  | 				    $this->page, 'usergroups', | 
					
						
							|  |  |  | 				    array('nickname' => $this->getTarget()->getNickname())); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2010-03-03 15:29:51 -05:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2009-01-21 12:19:47 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-03 15:29:51 -05:00
										 |  |  |             Event::handle('EndShowUserGroupsContent', array($this)); | 
					
						
							| 
									
										
										
										
											2009-01-21 12:19:47 -05:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-04-08 01:19:23 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function showEmptyListMessage() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-03-18 20:37:04 +01:00
										 |  |  |         // TRANS: Text on group page for a user that is not a member of any group.
 | 
					
						
							|  |  |  |         // TRANS: %s is a user nickname.
 | 
					
						
							| 
									
										
										
										
											2015-07-10 22:54:14 +02:00
										 |  |  |         $message = sprintf(_('%s is not a member of any group.'), $this->getTarget()->getNickname()) . ' '; | 
					
						
							| 
									
										
										
										
											2009-04-08 01:19:23 +00:00
										 |  |  |         if (common_logged_in()) { | 
					
						
							| 
									
										
										
										
											2015-07-10 22:54:14 +02:00
										 |  |  |             if ($this->scoped->sameAs($this->getTarget())) { | 
					
						
							| 
									
										
										
										
											2011-03-18 20:37:04 +01:00
										 |  |  |                 // TRANS: Text on group page for a user that is not a member of any group. This message contains
 | 
					
						
							|  |  |  |                 // TRANS: a Markdown link in the form [link text](link) and a variable that should not be changed.
 | 
					
						
							| 
									
										
										
										
											2015-07-25 21:38:38 +02:00
										 |  |  | 	        $message = _('You are not member of any group yet. After you join a group ' . | 
					
						
							|  |  |  | 			     'you can send messages to its members using the ' . | 
					
						
							|  |  |  | 			     'syntax "!groupname".'); | 
					
						
							| 
									
										
										
										
											2009-04-08 01:19:23 +00:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-07-25 21:38:38 +02:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-04-08 01:19:23 +00:00
										 |  |  |         $this->elementStart('div', 'guide'); | 
					
						
							|  |  |  |         $this->raw(common_markup_to_html($message)); | 
					
						
							|  |  |  |         $this->elementEnd('div'); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-03-14 11:10:07 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function showProfileBlock() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-07-10 22:54:14 +02:00
										 |  |  |         $block = new AccountProfileBlock($this, $this->getTarget()); | 
					
						
							| 
									
										
										
										
											2011-03-14 11:10:07 -05:00
										 |  |  |         $block->show(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-01-21 12:19:47 -05:00
										 |  |  | } |