]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - actions/apigroupshow.php
Merge branch 'master' of gitorious.org:statusnet/mainline into testing
[quix0rs-gnu-social.git] / actions / apigroupshow.php
1 <?php
2 /**
3  * StatusNet, the distributed open-source microblogging tool
4  *
5  * Show information about a group
6  *
7  * PHP version 5
8  *
9  * LICENCE: This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU Affero General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU Affero General Public License for more details.
18  *
19  * You should have received a copy of the GNU Affero General Public License
20  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
21  *
22  * @category  API
23  * @package   StatusNet
24  * @author    Craig Andrews <candrews@integralblue.com>
25  * @author    Evan Prodromou <evan@status.net>
26  * @author    Jeffery To <jeffery.to@gmail.com>
27  * @author    Zach Copley <zach@status.net>
28  * @copyright 2009 StatusNet, Inc.
29  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
30  * @link      http://status.net/
31  */
32
33 if (!defined('STATUSNET')) {
34     exit(1);
35 }
36
37 require_once INSTALLDIR . '/lib/apiprivateauth.php';
38
39 /**
40  * Outputs detailed information about the group specified by ID
41  *
42  * @category API
43  * @package  StatusNet
44  * @author   Craig Andrews <candrews@integralblue.com>
45  * @author   Evan Prodromou <evan@status.net>
46  * @author   Jeffery To <jeffery.to@gmail.com>
47  * @author   Zach Copley <zach@status.net>
48  * @author   Michele <macno@macno.org>
49  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
50  * @link     http://status.net/
51  */
52
53 class ApiGroupShowAction extends ApiPrivateAuthAction
54 {
55     var $group = null;
56
57     /**
58      * Take arguments for running
59      *
60      * @param array $args $_REQUEST args
61      *
62      * @return boolean success flag
63      *
64      */
65
66     function prepare($args)
67     {
68         parent::prepare($args);
69
70         $this->group = $this->getTargetGroup($this->arg('id'));
71
72         if (empty($this->group)) {
73             $alias = Group_alias::staticGet(
74                 'alias',
75                 common_canonical_nickname($this->arg('id'))
76             );
77             if (!empty($alias)) {
78                 $args = array('id' => $alias->group_id, 'format' => $this->format);
79                 common_redirect(common_local_url('ApiGroupShow', $args), 301);
80             } else {
81                 $this->clientError(
82                     _('Group not found.'),
83                     404,
84                     $this->format
85                 );
86             }
87             return;
88         }
89
90         return true;
91     }
92
93     /**
94      * Handle the request
95      *
96      * Check the format and show the user info
97      *
98      * @param array $args $_REQUEST data (unused)
99      *
100      * @return void
101      */
102
103     function handle($args)
104     {
105         parent::handle($args);
106
107         switch($this->format) {
108         case 'xml':
109             $this->showSingleXmlGroup($this->group);
110             break;
111         case 'json':
112             $this->showSingleJsonGroup($this->group);
113             break;
114         default:
115             $this->clientError(_('API method not found.'), 404, $this->format);
116             break;
117         }
118     }
119
120     /**
121      * When was this group last modified?
122      *
123      * @return string datestamp of the latest notice in the stream
124      */
125
126     function lastModified()
127     {
128         if (!empty($this->group)) {
129             return strtotime($this->group->modified);
130         }
131
132         return null;
133     }
134
135     /**
136      * An entity tag for this group
137      *
138      * Returns an Etag based on the action name, language, and
139      * timestamps of the notice
140      *
141      * @return string etag
142      */
143
144     function etag()
145     {
146         if (!empty($this->group)) {
147
148             return '"' . implode(
149                 ':',
150                 array($this->arg('action'),
151                       common_language(),
152                       $this->group->id,
153                       strtotime($this->group->modified))
154             )
155             . '"';
156         }
157
158         return null;
159     }
160
161     /**
162      * Return true if read only.
163      *
164      * MAY override
165      *
166      * @param array $args other arguments
167      *
168      * @return boolean is read only action?
169      */
170
171     function isReadOnly($args)
172     {
173         return true;
174     }
175
176 }