diff options
Diffstat (limited to 'www/rss.php')
| -rw-r--r-- | www/rss.php | 121 | 
1 files changed, 121 insertions, 0 deletions
| diff --git a/www/rss.php b/www/rss.php new file mode 100644 index 0000000..3a2b54a --- /dev/null +++ b/www/rss.php @@ -0,0 +1,121 @@ +<?php +/*************************************************************************** + Copyright (C) 2004 - 2006 Scuttle project + http://sourceforge.net/projects/scuttle/ + http://scuttle.org/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA + ***************************************************************************/ + +require_once('header.inc.php'); + +/* Service creation: only useful services are created */ +$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService'); +$cacheservice =& ServiceFactory::getServiceInstance('CacheService'); + + +header('Content-Type: application/xml'); +if(isset($_SERVER['PATH_INFO']) && strlen($_SERVER['PATH_INFO']) >1) { +	list($url, $user, $cat) = explode('/', $_SERVER['PATH_INFO']); +} else { +	$url = ''; +	$user = ''; +	$cat = NULL; +} + +if ($usecache) { +	// Generate hash for caching on +	$hashtext = $_SERVER['REQUEST_URI']; +	if ($userservice->isLoggedOn()) { +		$hashtext .= $userservice->getCurrentUserID(); +		if ($currentUser->getUsername() == $user) { +			$hashtext .= $user; +		} +	} +	$hash = md5($hashtext); + +	// Cache for an hour +	$cacheservice->Start($hash, 3600); +} + +$watchlist = null; +$pagetitle = ''; +if ($user && $user != 'all') { +	if ($user == 'watchlist') { +		$user = $cat; +		$cat = null; +		$watchlist = true; +	} +	if (is_int($user)) { +		$userid = intval($user); +	} else { +		if ($userinfo = $userservice->getUserByUsername($user)) { +			$userid =& $userinfo[$userservice->getFieldName('primary')]; +		} else { +			$tplVars['error'] = sprintf(T_('User with username %s was not found'), $user); +			$templateservice->loadTemplate('error.404.tpl', $tplVars); +			//throw a 404 error +			exit(); +		} +	} +	$pagetitle .= ": ". $user; +} else { +	$userid = NULL; +} + +if ($cat) { +	$pagetitle .= ": ". str_replace('+', ' + ', $cat); +} + +$tplVars['feedtitle'] = filter($GLOBALS['sitename'] . (isset($pagetitle) ? $pagetitle : '')); +$tplVars['feedlink'] = ROOT; +$tplVars['feeddescription'] = sprintf(T_('Recent bookmarks posted to %s'), $GLOBALS['sitename']); + +$bookmarks =& $bookmarkservice->getBookmarks(0, 15, $userid, $cat, NULL, getSortOrder(), $watchlist); + +$bookmarks_tmp =& filter($bookmarks['bookmarks']); + +$bookmarks_tpl = array(); +foreach(array_keys($bookmarks_tmp) as $key) { +	$row =& $bookmarks_tmp[$key]; + +	$_link = $row['bAddress']; +	// Redirection option +	if ($GLOBALS['useredir']) { +		$_link = $GLOBALS['url_redir'] . $_link; +	} +	$_pubdate = gmdate("r", strtotime($row['bDatetime'])); +	// array_walk($row['tags'], 'filter'); + +	$bookmarks_tpl[] = array( +        'title' => $row['bTitle'], +        'link'  => $_link, +        'description' => $row['bDescription'], +        'creator' => $row['username'], +        'pubdate' => $_pubdate, +        'tags' => $row['tags'] +	); +} +unset($bookmarks_tmp); +unset($bookmarks); +$tplVars['bookmarks'] =& $bookmarks_tpl; + +$templateservice->loadTemplate('rss.tpl', $tplVars); + +if ($usecache) { +	// Cache output if existing copy has expired +	$cacheservice->End($hash); +} +?> | 
