| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * StatusNet, the distributed open-source microblogging tool | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |  * | 
					
						
							|  |  |  |  * Group main page | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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/>. | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2009-01-21 02:55:37 -05:00
										 |  |  |  * @category  Group | 
					
						
							| 
									
										
										
										
											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> | 
					
						
							| 
									
										
										
										
											2011-06-09 16:20:19 -04:00
										 |  |  |  * @copyright 2008-2011 StatusNet, Inc. | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -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 02:22:10 -05:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-26 10:41:36 -04:00
										 |  |  | if (!defined('STATUSNET') && !defined('LACONICA')) { | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require_once INSTALLDIR.'/lib/noticelist.php'; | 
					
						
							|  |  |  | require_once INSTALLDIR.'/lib/feedlist.php'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Group main page | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2009-01-21 02:55:37 -05:00
										 |  |  |  * @category Group | 
					
						
							| 
									
										
										
										
											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 02:22:10 -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 02:22:10 -05:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2011-08-27 11:28:32 -04:00
										 |  |  | class ShowgroupAction extends GroupAction | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  | { | 
					
						
							|  |  |  |     /** page we're viewing. */ | 
					
						
							|  |  |  |     var $page = null; | 
					
						
							| 
									
										
										
										
											2011-04-10 20:16:51 -04:00
										 |  |  |     var $userProfile = null; | 
					
						
							|  |  |  |     var $notice = null; | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 09:04:54 -05:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Is this page read-only? | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return boolean true | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-04-13 15:49:26 -04:00
										 |  |  |     function isReadOnly($args) | 
					
						
							| 
									
										
										
										
											2009-01-21 09:04:54 -05:00
										 |  |  |     { | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Title of the page | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return string page title, with page number | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function title() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-11-03 12:59:19 -07:00
										 |  |  |         $base = $this->group->getFancyName(); | 
					
						
							| 
									
										
										
										
											2009-03-30 10:28:44 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |         if ($this->page == 1) { | 
					
						
							| 
									
										
										
										
											2010-10-30 14:36:54 +02:00
										 |  |  |             // TRANS: Page title for first group page. %s is a group name.
 | 
					
						
							| 
									
										
										
										
											2010-01-24 22:57:33 -05:00
										 |  |  |             return sprintf(_('%s group'), $base); | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2010-10-30 14:36:54 +02:00
										 |  |  |             // TRANS: Page title for any but first group page.
 | 
					
						
							|  |  |  |             // TRANS: %1$s is a group name, $2$s is a page number.
 | 
					
						
							| 
									
										
										
										
											2010-01-24 22:57:33 -05:00
										 |  |  |             return sprintf(_('%1$s group, page %2$d'), | 
					
						
							| 
									
										
										
										
											2009-03-30 10:28:44 -04:00
										 |  |  |                            $base, | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |                            $this->page); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Prepare the action | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * Reads and validates arguments and instantiates the attributes. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param array $args $_REQUEST args | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return boolean success flag | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2014-03-01 11:55:06 +01:00
										 |  |  |     protected function prepare(array $args=array()) | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |     { | 
					
						
							|  |  |  |         parent::prepare($args); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-11 11:54:42 -04:00
										 |  |  |         $this->userProfile = Profile::current(); | 
					
						
							| 
									
										
										
										
											2011-04-10 20:16:51 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-23 17:50:38 -04:00
										 |  |  |         $user = common_current_user(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-24 07:12:34 -04:00
										 |  |  |         if (!empty($user) && $user->streamModeOnly()) { | 
					
						
							| 
									
										
										
										
											2011-09-23 17:28:54 -04:00
										 |  |  |             $stream = new GroupNoticeStream($this->group, $this->userProfile); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $stream = new ThreadingGroupNoticeStream($this->group, $this->userProfile); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-04-10 20:16:51 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $this->notice = $stream->getNotices(($this->page-1)*NOTICES_PER_PAGE, | 
					
						
							|  |  |  |                                             NOTICES_PER_PAGE + 1); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-05 16:16:10 -08:00
										 |  |  |         common_set_returnto($this->selfUrl()); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Handle the request | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * Shows a profile for the group, some controls, and a list of | 
					
						
							|  |  |  |      * group notices. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2014-03-01 11:55:06 +01:00
										 |  |  |     protected function handle() | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2014-03-01 11:55:06 +01:00
										 |  |  |         parent::handle(); | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |         $this->showPage(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Show the page content | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * Shows a group profile and a list of group notices | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function showContent() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->showGroupNotices(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Show the group notices | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function showGroupNotices() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-23 17:50:38 -04:00
										 |  |  |         $user = common_current_user(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-24 07:12:34 -04:00
										 |  |  |         if (!empty($user) && $user->streamModeOnly()) { | 
					
						
							| 
									
										
										
										
											2015-01-08 20:29:09 +01:00
										 |  |  |             $nl = new PrimaryNoticeList($this->notice, $this, array('show_n'=>NOTICES_PER_PAGE)); | 
					
						
							| 
									
										
										
										
											2011-09-23 17:28:54 -04:00
										 |  |  |         } else { | 
					
						
							|  |  |  |             $nl = new ThreadedNoticeList($this->notice, $this, $this->userProfile); | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |         $cnt = $nl->show(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->pagination($this->page > 1, | 
					
						
							|  |  |  |                           $cnt > NOTICES_PER_PAGE, | 
					
						
							|  |  |  |                           $this->page, | 
					
						
							|  |  |  |                           'showgroup', | 
					
						
							|  |  |  |                           array('nickname' => $this->group->nickname)); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2009-02-11 11:37:50 -05:00
										 |  |  |      * Get a list of the feeds for this page | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-02-11 11:37:50 -05:00
										 |  |  |     function getFeeds() | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |     { | 
					
						
							|  |  |  |         $url = | 
					
						
							|  |  |  |           common_local_url('grouprss', | 
					
						
							|  |  |  |                            array('nickname' => $this->group->nickname)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-22 17:19:46 -04:00
										 |  |  |         return array(new Feed(Feed::JSON, | 
					
						
							|  |  |  |                               common_local_url('ApiTimelineGroup', | 
					
						
							|  |  |  |                                                array('format' => 'as', | 
					
						
							|  |  |  |                                                      'id' => $this->group->id)), | 
					
						
							|  |  |  |                               // TRANS: Tooltip for feed link. %s is a group nickname.
 | 
					
						
							|  |  |  |                               sprintf(_('Notice feed for %s group (Activity Streams JSON)'), | 
					
						
							|  |  |  |                                       $this->group->nickname)), | 
					
						
							|  |  |  |                     new Feed(Feed::RSS1, | 
					
						
							| 
									
										
										
										
											2009-07-10 17:00:27 -04:00
										 |  |  |                               common_local_url('grouprss', | 
					
						
							|  |  |  |                                                array('nickname' => $this->group->nickname)), | 
					
						
							| 
									
										
										
										
											2010-10-30 14:36:54 +02:00
										 |  |  |                               // TRANS: Tooltip for feed link. %s is a group nickname.
 | 
					
						
							| 
									
										
										
										
											2009-07-10 17:00:27 -04:00
										 |  |  |                               sprintf(_('Notice feed for %s group (RSS 1.0)'), | 
					
						
							|  |  |  |                                       $this->group->nickname)), | 
					
						
							|  |  |  |                      new Feed(Feed::RSS2, | 
					
						
							| 
									
										
										
										
											2009-10-29 19:09:42 -04:00
										 |  |  |                               common_local_url('ApiTimelineGroup', | 
					
						
							|  |  |  |                                                array('format' => 'rss', | 
					
						
							| 
									
										
										
										
											2010-02-09 18:32:52 -08:00
										 |  |  |                                                      'id' => $this->group->id)), | 
					
						
							| 
									
										
										
										
											2010-10-30 14:36:54 +02:00
										 |  |  |                               // TRANS: Tooltip for feed link. %s is a group nickname.
 | 
					
						
							| 
									
										
										
										
											2009-07-10 17:00:27 -04:00
										 |  |  |                               sprintf(_('Notice feed for %s group (RSS 2.0)'), | 
					
						
							|  |  |  |                                       $this->group->nickname)), | 
					
						
							|  |  |  |                      new Feed(Feed::ATOM, | 
					
						
							| 
									
										
										
										
											2009-10-29 19:09:42 -04:00
										 |  |  |                               common_local_url('ApiTimelineGroup', | 
					
						
							|  |  |  |                                                array('format' => 'atom', | 
					
						
							| 
									
										
										
										
											2010-02-09 18:32:52 -08:00
										 |  |  |                                                      'id' => $this->group->id)), | 
					
						
							| 
									
										
										
										
											2010-10-30 14:36:54 +02:00
										 |  |  |                               // TRANS: Tooltip for feed link. %s is a group nickname.
 | 
					
						
							| 
									
										
										
										
											2009-07-10 17:00:27 -04:00
										 |  |  |                               sprintf(_('Notice feed for %s group (Atom)'), | 
					
						
							| 
									
										
										
										
											2009-09-30 13:12:17 +01:00
										 |  |  |                                       $this->group->nickname)), | 
					
						
							|  |  |  |                      new Feed(Feed::FOAF, | 
					
						
							|  |  |  |                               common_local_url('foafgroup', | 
					
						
							|  |  |  |                                                array('nickname' => $this->group->nickname)), | 
					
						
							| 
									
										
										
										
											2010-10-30 14:36:54 +02:00
										 |  |  |                               // TRANS: Tooltip for feed link. %s is a group nickname.
 | 
					
						
							| 
									
										
										
										
											2009-09-30 13:12:17 +01:00
										 |  |  |                               sprintf(_('FOAF for %s group'), | 
					
						
							|  |  |  |                                        $this->group->nickname))); | 
					
						
							| 
									
										
										
										
											2009-01-21 02:22:10 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-01-21 10:15:48 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 04:19:03 +01:00
										 |  |  |     function showAnonymousMessage() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-03-19 21:55:03 +00:00
										 |  |  |         if (!(common_config('site','closed') || common_config('site','inviteonly'))) { | 
					
						
							| 
									
										
										
										
											2010-10-30 14:36:54 +02:00
										 |  |  |             // TRANS: Notice on group pages for anonymous users for StatusNet sites that accept new registrations.
 | 
					
						
							| 
									
										
										
										
											2011-10-10 15:05:43 +02:00
										 |  |  |             // TRANS: %s is the group name, %%%%site.name%%%% is the site name,
 | 
					
						
							| 
									
										
										
										
											2010-10-30 14:36:54 +02:00
										 |  |  |             // TRANS: %%%%action.register%%%% is the URL for registration, %%%%doc.help%%%% is a URL to help.
 | 
					
						
							|  |  |  |             // TRANS: This message contains Markdown links. Ensure they are formatted correctly: [Description](link).
 | 
					
						
							| 
									
										
										
										
											2009-03-19 21:55:03 +00:00
										 |  |  |             $m = sprintf(_('**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service ' . | 
					
						
							| 
									
										
										
										
											2009-08-25 18:16:46 -04:00
										 |  |  |                 'based on the Free Software [StatusNet](http://status.net/) tool. Its members share ' . | 
					
						
							| 
									
										
										
										
											2009-03-19 21:55:03 +00:00
										 |  |  |                 'short messages about their life and interests. '. | 
					
						
							| 
									
										
										
										
											2009-08-21 16:45:42 -04:00
										 |  |  |                 '[Join now](%%%%action.register%%%%) to become part of this group and many more! ([Read more](%%%%doc.help%%%%))'), | 
					
						
							| 
									
										
										
										
											2011-10-10 15:05:43 +02:00
										 |  |  |                      $this->group->getBestName()); | 
					
						
							| 
									
										
										
										
											2009-03-19 21:55:03 +00:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2010-10-30 14:36:54 +02:00
										 |  |  |             // TRANS: Notice on group pages for anonymous users for StatusNet sites that accept no new registrations.
 | 
					
						
							| 
									
										
										
										
											2011-10-10 15:05:43 +02:00
										 |  |  |             // TRANS: %s is the group name, %%%%site.name%%%% is the site name,
 | 
					
						
							| 
									
										
										
										
											2010-10-30 14:36:54 +02:00
										 |  |  |             // TRANS: This message contains Markdown links. Ensure they are formatted correctly: [Description](link).
 | 
					
						
							| 
									
										
										
										
											2009-03-19 21:55:03 +00:00
										 |  |  |             $m = sprintf(_('**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service ' . | 
					
						
							| 
									
										
										
										
											2009-08-25 18:16:46 -04:00
										 |  |  |                 'based on the Free Software [StatusNet](http://status.net/) tool. Its members share ' . | 
					
						
							| 
									
										
										
										
											2011-10-10 15:06:39 +02:00
										 |  |  |                 'short messages about their life and interests.'), | 
					
						
							| 
									
										
										
										
											2011-10-10 15:05:43 +02:00
										 |  |  |                      $this->group->getBestName()); | 
					
						
							| 
									
										
										
										
											2009-03-19 21:55:03 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2009-01-23 04:10:40 +00:00
										 |  |  |         $this->elementStart('div', array('id' => 'anon_notice')); | 
					
						
							| 
									
										
										
										
											2009-01-23 04:19:03 +01:00
										 |  |  |         $this->raw(common_markup_to_html($m)); | 
					
						
							| 
									
										
										
										
											2009-01-23 04:31:50 +01:00
										 |  |  |         $this->elementEnd('div'); | 
					
						
							| 
									
										
										
										
											2009-01-23 04:19:03 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2012-01-26 11:02:29 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function extraHead() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if ($this->page != 1) { | 
					
						
							|  |  |  |             $this->element('link', array('rel' => 'canonical', | 
					
						
							|  |  |  |                                          'href' => $this->group->homeUrl())); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-04-05 10:47:07 -04:00
										 |  |  | } |