git.gnu.io has moved to IP address 209.51.188.249 -- please double check where you are logging in.

grouprss.php 4.02 KB
Newer Older
Robin Millette's avatar
Robin Millette committed
1 2
<?php
/**
3
 * StatusNet, the distributed open-source microblogging tool
Robin Millette's avatar
Robin Millette committed
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
 *
 * 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/>.
 *
 * @category  Group
23
 * @package   StatusNet
24 25
 * @author    Evan Prodromou <evan@status.net>
 * @author    Sarven Capadisli <csarven@status.net>
26
 * @copyright 2008-2009 StatusNet, Inc.
Robin Millette's avatar
Robin Millette committed
27
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
28
 * @link      http://status.net/
Robin Millette's avatar
Robin Millette committed
29 30
 */

31
if (!defined('STATUSNET') && !defined('LACONICA')) {
Robin Millette's avatar
Robin Millette committed
32 33 34 35 36
    exit(1);
}

require_once INSTALLDIR.'/lib/rssaction.php';

37
define('MEMBERS_PER_SECTION', 27);
Robin Millette's avatar
Robin Millette committed
38 39 40 41 42

/**
 * Group RSS feed
 *
 * @category Group
43
 * @package  StatusNet
44
 * @author   Evan Prodromou <evan@status.net>
Robin Millette's avatar
Robin Millette committed
45
 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
46
 * @link     http://status.net/
Robin Millette's avatar
Robin Millette committed
47 48 49 50 51 52 53 54 55 56 57 58 59
 */

class groupRssAction extends Rss10Action
{
    /** group we're viewing. */
    var $group = null;

    /**
     * Is this page read-only?
     *
     * @return boolean true
     */

60
    function isReadOnly($args)
Robin Millette's avatar
Robin Millette committed
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
    {
        return true;
    }

    /**
     * Prepare the action
     *
     * Reads and validates arguments and instantiates the attributes.
     *
     * @param array $args $_REQUEST args
     *
     * @return boolean success flag
     */

    function prepare($args)
    {
        parent::prepare($args);

        $nickname_arg = $this->arg('nickname');
        $nickname = common_canonical_nickname($nickname_arg);

        // Permanent redirect on non-canonical nickname

        if ($nickname_arg != $nickname) {
            $args = array('nickname' => $nickname);
            common_redirect(common_local_url('showgroup', $args), 301);
            return false;
        }

        if (!$nickname) {
91
            $this->clientError(_('No nickname.'), 404);
Robin Millette's avatar
Robin Millette committed
92 93 94
            return false;
        }

95 96 97 98 99 100 101 102
        $local = Local_group::staticGet('nickname', $nickname);

        if (!$local) {
            $this->clientError(_('No such group.'), 404);
            return false;
        }

        $this->group = User_group::staticGet('id', $local->group_id);
Robin Millette's avatar
Robin Millette committed
103 104

        if (!$this->group) {
105
            $this->clientError(_('No such group.'), 404);
Robin Millette's avatar
Robin Millette committed
106 107 108
            return false;
        }

109
        $this->notices = $this->getNotices($this->limit);
Robin Millette's avatar
Robin Millette committed
110 111 112 113 114 115 116
        return true;
    }

    function getNotices($limit=0)
    {

        $group = $this->group;
117

Robin Millette's avatar
Robin Millette committed
118 119 120
        if (is_null($group)) {
            return null;
        }
121

122
        $notices = array();
Robin Millette's avatar
Robin Millette committed
123
        $notice = $group->getNotices(0, ($limit == 0) ? NOTICES_PER_PAGE : $limit);
124

Robin Millette's avatar
Robin Millette committed
125 126 127 128 129 130 131 132 133 134 135 136 137
        while ($notice->fetch()) {
            $notices[] = clone($notice);
        }

        return $notices;
    }

    function getChannel()
    {
        $group = $this->group;
        $c = array('url' => common_local_url('grouprss',
                                             array('nickname' =>
                                                   $group->nickname)),
138
                   'title' => sprintf(_('%s timeline'), $group->nickname),
Robin Millette's avatar
Robin Millette committed
139
                   'link' => common_local_url('showgroup', array('nickname' => $group->nickname)),
140 141
                   'description' => sprintf(_('Updates from members of %1$s on %2$s!'),
                                            $group->nickname, common_config('site', 'name')));
Robin Millette's avatar
Robin Millette committed
142 143 144 145 146 147 148 149
        return $c;
    }

    function getImage()
    {
        return $this->group->homepage_logo;
    }
}