]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - actions/publicrss.php
ee127b51aca1ddcaa0d0c03bf5317c1c5ba4ede8
[quix0rs-gnu-social.git] / actions / publicrss.php
1 <?php
2 /**
3  * Public RSS action class.
4  *
5  * PHP version 5
6  *
7  * @category Action
8  * @package  StatusNet
9  * @author   Evan Prodromou <evan@status.net>
10  * @author   Robin Millette <millette@status.net>
11  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
12  * @link     http://status.net/
13  *
14  * StatusNet - the distributed open-source microblogging tool
15  * Copyright (C) 2008, 2009, StatusNet, Inc.
16  *
17  * This program is free software: you can redistribute it and/or modify
18  * it under the terms of the GNU Affero General Public License as published by
19  * the Free Software Foundation, either version 3 of the License, or
20  * (at your option) any later version.
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25  * GNU Affero General Public License for more details.
26  *
27  * You should have received a copy of the GNU Affero General Public License
28  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
29  */
30
31 if (!defined('STATUSNET') && !defined('LACONICA')) {
32     exit(1);
33 }
34
35 require_once INSTALLDIR.'/lib/rssaction.php';
36
37 /**
38  * RSS feed for public timeline.
39  *
40  * Formatting of RSS handled by Rss10Action
41  *
42  * @category Action
43  * @package  StatusNet
44  * @author   Evan Prodromou <evan@status.net>
45  * @author   Robin Millette <millette@status.net>
46  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
47  * @link     http://status.net/
48  */
49 class PublicrssAction extends Rss10Action
50 {
51     /**
52      * Read arguments and initialize members
53      *
54      * @param array $args Arguments from $_REQUEST
55      * @return boolean success
56      */
57     function prepare(array $args=array())
58     {
59         parent::prepare($args);
60         $this->notices = $this->getNotices($this->limit);
61         return true;
62     }
63
64     /**
65      * Initialization.
66      *
67      * @return boolean true
68      */
69     function init()
70     {
71         return true;
72     }
73
74     /**
75      * Get notices
76      *
77      * @param integer $limit max number of notices to return
78      *
79      * @return array notices
80      */
81     function getNotices($limit=0)
82     {
83         $notices = array();
84         $notice  = Notice::publicStream(0, ($limit == 0) ? 48 : $limit);
85         while ($notice->fetch()) {
86             $notices[] = clone($notice);
87         }
88
89         return $notices;
90     }
91
92      /**
93      * Get channel.
94      *
95      * @return array associative array on channel information
96      */
97     function getChannel()
98     {
99         $sitename = common_config('site', 'name');
100         $c = array(
101               'url' => common_local_url('publicrss'),
102             // TRANS: Public RSS feed title. %s is the StatusNet site name.
103               'title' => sprintf(_('%s public timeline'), $sitename),
104               'link' => common_local_url('public'),
105             // TRANS: Public RSS feed description. %s is the StatusNet site name.
106               'description' => sprintf(_('%s updates from everyone.'), $sitename));
107         return $c;
108     }
109
110     /**
111      * Get image.
112      *
113      * @return nothing
114      */
115     function getImage()
116     {
117         // nop
118     }
119
120     function isReadOnly(array $args=array())
121     {
122         return true;
123     }
124 }