. * * @category GNUSocial * @package StatusNet * @author Shashi Gowda * @copyright 2009, 2010, StatusNet, Inc. * @copyright 2010, Free Software Foundation, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://daisycha.in */ if (!defined('STATUSNET')) { exit(1); } require_once INSTALLDIR . '/actions/showgroup.php'; class SocialObjectGroupAction extends ShowgroupAction { var $slug_plural = null; function title() { return $this->name_plural . ' in ' . parent::title(); } function prepare($args) { parent::prepare($args); $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; $nickname_arg = $this->arg('group'); $nickname = common_canonical_nickname($nickname_arg); // Permanent redirect on non-canonical nickname if ($nickname_arg != $nickname) { $args = array('group' => $nickname); if ($this->page != 1) { $args['page'] = $this->page; } common_redirect(common_local_url('group'.$this->slug_plural, $args), 301); return false; } if (!$nickname) { $this->clientError(_('No nickname.'), 404); return false; } $local = Local_group::staticGet('nickname', $nickname); if (!$local) { $alias = Group_alias::staticGet('alias', $nickname); if ($alias) { $local = Local_group::staticGet('id', $alias->group_id); $args = array('group' => $local->nickname); if ($this->page != 1) { $args['page'] = $this->page; } common_redirect(common_local_url('group'.$this->slug_plural, $args), 301); return false; } else { common_log(LOG_NOTICE, "Couldn't find local group for nickname '$nickname'"); $this->clientError(_('No such group.'), 404); return false; } } $this->group = User_group::staticGet('id', $local->group_id); if (!$this->group) { $this->clientError(_('No such group.'), 404); return false; } common_set_returnto($this->selfUrl()); return true; } function showGroupNotices() { list($notice, $objects) = "{$this->dbclass}"::groupStream(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); $nl = new SocialObjectList($notice, $objects, $this); $cnt = $nl->show(); $this->pagination($this->page > 1, $cnt > NOTICES_PER_PAGE, $this->page, 'group'.$this->slug_plural, array('nickname' => $this->group->nickname)); } }