]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
added group rss action
authorRobin Millette <millette@controlyourself.ca>
Sun, 25 Jan 2009 19:16:19 +0000 (19:16 +0000)
committerRobin Millette <millette@plantard.controlezvous.ca>
Sun, 25 Jan 2009 19:16:19 +0000 (19:16 +0000)
actions/grouprss.php [new file with mode: 0644]

diff --git a/actions/grouprss.php b/actions/grouprss.php
new file mode 100644 (file)
index 0000000..1a7b858
--- /dev/null
@@ -0,0 +1,153 @@
+<?php
+/**
+ * Laconica, the distributed open-source microblogging tool
+ *
+ * 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
+ * @package   Laconica
+ * @author    Evan Prodromou <evan@controlyourself.ca>
+ * @author    Sarven Capadisli <csarven@controlyourself.ca>
+ * @copyright 2008-2009 Control Yourself, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://laconi.ca/
+ */
+
+if (!defined('LACONICA')) {
+    exit(1);
+}
+
+require_once INSTALLDIR.'/lib/rssaction.php';
+
+define('MEMBERS_PER_SECTION', 81);
+
+/**
+ * Group RSS feed
+ *
+ * @category Group
+ * @package  Laconica
+ * @author   Evan Prodromou <evan@controlyourself.ca>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://laconi.ca/
+ */
+
+class groupRssAction extends Rss10Action
+{
+    /** group we're viewing. */
+    var $group = null;
+
+    /**
+     * Is this page read-only?
+     *
+     * @return boolean true
+     */
+
+    function isReadOnly()
+    {
+        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);
+
+        if (!common_config('inboxes','enabled')) {
+            $this->serverError(_('Inboxes must be enabled for groups to work'));
+            return false;
+        }
+
+        $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) {
+            $this->clientError(_('No nickname'), 404);
+            return false;
+        }
+
+        $this->group = User_group::staticGet('nickname', $nickname);
+
+        if (!$this->group) {
+            $this->clientError(_('No such group'), 404);
+            return false;
+        }
+
+        return true;
+    }
+
+    function getNotices($limit=0)
+    {
+
+        $group = $this->group;
+        
+        if (is_null($group)) {
+            return null;
+        }
+        
+        $notice = $group->getNotices(0, ($limit == 0) ? NOTICES_PER_PAGE : $limit);
+        
+        while ($notice->fetch()) {
+            $notices[] = clone($notice);
+        }
+
+        return $notices;
+    }
+
+    function getChannel()
+    {
+        $group = $this->group;
+        $c = array('url' => common_local_url('grouprss',
+                                             array('nickname' =>
+                                                   $group->nickname)),
+                   'title' => $group->nickname,
+                   'link' => common_local_url('showgroup', array('nickname' => $group->nickname)),
+                   'description' => sprintf(_('Microblog by %s group'), $group->nickname));
+        return $c;
+    }
+
+    function getImage()
+    {
+        return $this->group->homepage_logo;
+    }
+
+    # override parent to add X-SUP-ID URL
+    
+    function initRss($limit=0)
+    {
+        $url = common_local_url('sup', null, $this->group->id);
+        header('X-SUP-ID: '.$url);
+        parent::initRss($limit);
+    }
+}