]> projects.mako.cc - scuttle/blob - rss.php
updated readme with information on a series of bugs I know exist
[scuttle] / rss.php
1 <?php
2 /***************************************************************************
3 Copyright (C) 2004 - 2010 Marcus Campbell
4 http://scuttle.org/
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 ***************************************************************************/
20
21 require_once 'header.inc.php';
22
23 $sf = new ServiceFactory();
24 $bookmarkservice =& $sf->getServiceInstance('BookmarkService');
25 $templateservice =& $sf->getServiceInstance('TemplateService');
26 $userservice     =& $sf->getServiceInstance('UserService');
27 $cacheservice    =& $sf->getServiceInstance('CacheService');
28
29 $tplVars = array();
30 header('Content-Type: application/xml');
31 list($url, $user, $cat) = explode('/', $_SERVER['PATH_INFO']);
32
33 if ($usecache) {
34   // Generate hash for caching on
35   $hashtext = $_SERVER['REQUEST_URI'];
36   if ($userservice->isLoggedOn()) {
37     $hashtext .= $userservice->getCurrentUserID();
38     $currentUser = $userservice->getCurrentUser();
39     $currentUsername = $currentUser[$userservice->getFieldName('username')];
40     if ($currentUsername == $user) {
41       $hashtext .= $user;
42     }
43   }
44   $hash = md5($hashtext);
45
46   // Cache for an hour
47   $cacheservice->Start($hash, 3600);
48 }
49
50 $watchlist = NULL;
51 if ($user && $user != 'all') {
52   if ($user == 'watchlist') {
53     $user = $cat;
54     $cat = NULL;
55     $watchlist = TRUE;
56   }
57   if (is_int($user)) {
58     $userid = intval($user);
59   } else {
60     if ($userinfo = $userservice->getUserByUsername($user)) {
61       $userid =& $userinfo[$userservice->getFieldName('primary')];
62     } else {
63       $tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
64       $templateservice->loadTemplate('error.404.tpl', $tplVars);
65       //throw a 404 error
66       exit();
67     }
68   }
69   $pagetitle .= ": ". $user;
70 } else {
71   $userid = NULL;
72 }
73
74 if ($cat) {
75   $pagetitle .= ": ". str_replace('+', ' + ', $cat);
76 }
77
78 $tplVars['feedtitle'] = filter($GLOBALS['sitename'] . (isset($pagetitle) ? $pagetitle : ''));
79 $tplVars['feedlink'] = $GLOBALS['root'];
80 $tplVars['feeddescription'] = sprintf(T_('Recent bookmarks posted to %s'), $GLOBALS['sitename']);
81
82 $bookmarks     =& $bookmarkservice->getBookmarks(0, 15, $userid, $cat, NULL, getSortOrder(), $watchlist);
83 $bookmarks_tmp =& filter($bookmarks['bookmarks']);
84
85 $bookmarks_tpl = array();
86 foreach(array_keys($bookmarks_tmp) as $key) {
87   $row =& $bookmarks_tmp[$key];
88
89   $_link = $row['bAddress'];
90   // Redirection option
91   if ($GLOBALS['useredir']) {
92     $_link = $GLOBALS['url_redir'] . $_link;
93   }
94   $_pubdate = date("r", strtotime($row['bDatetime']));
95
96   $uriparts  = explode('.', $_link);
97   $extension = end($uriparts);
98   unset($uriparts);
99
100   $enclosure = array();
101   if ($keys = multi_array_search($extension, $GLOBALS['filetypes'])) {
102     $enclosure['mime']   = file_get_mimetype($_link);
103     $enclosure['length'] = file_get_filesize($_link);
104   }
105
106   $bookmarks_tpl[] = array(
107     'title'            => $row['bTitle'],
108     'link'             => $_link,
109     'description'      => $row['bDescription'],
110     'creator'          => $row['username'],
111     'pubdate'          => $_pubdate,
112     'tags'             => $row['tags'],
113     'enclosure_mime'   => $enclosure['mime'],
114     'enclosure_length' => $enclosure['length']
115   );
116 }
117 unset($bookmarks_tmp);
118 unset($bookmarks);
119 $tplVars['bookmarks'] =& $bookmarks_tpl;
120
121 $templateservice->loadTemplate('rss.tpl', $tplVars);
122
123 if ($usecache) {
124   // Cache output if existing copy has expired
125   $cacheservice->End($hash);
126 }

Benjamin Mako Hill || Want to submit a patch?