- Updated default filetypes used for system tags
[scuttle] / rss.php
diff --git a/rss.php b/rss.php
index cf10478fa0c946e7eab6d3e04411532e7828b756..533bf4cd3185b94d760881fde96a017b47494d7d 100644 (file)
--- a/rss.php
+++ b/rss.php
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
-Copyright (C) 2004 - 2006 Marcus Campbell
+Copyright (C) 2004 - 2010 Marcus Campbell
 http://scuttle.org/
 
 This program is free software; you can redistribute it and/or modify
@@ -19,87 +19,99 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 ***************************************************************************/
 
 require_once 'header.inc.php';
+
 $bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
-$cacheservice =& ServiceFactory::getServiceInstance('CacheService');
+$cacheservice    =& ServiceFactory::getServiceInstance('CacheService');
 $templateservice =& ServiceFactory::getServiceInstance('TemplateService');
-$userservice =& ServiceFactory::getServiceInstance('UserService');
+$userservice     =& ServiceFactory::getServiceInstance('UserService');
 
 $tplVars = array();
 header('Content-Type: application/xml');
 list($url, $user, $cat) = explode('/', $_SERVER['PATH_INFO']);
 
 if ($usecache) {
-    // Generate hash for caching on
-    $hashtext = $_SERVER['REQUEST_URI'];
-    if ($userservice->isLoggedOn()) {
-        $hashtext .= $userservice->getCurrentUserID();
-        $currentUser = $userservice->getCurrentUser();
-        $currentUsername = $currentUser[$userservice->getFieldName('username')];
-        if ($currentUsername == $user) {
-            $hashtext .= $user;
-        }
+  // Generate hash for caching on
+  $hashtext = $_SERVER['REQUEST_URI'];
+  if ($userservice->isLoggedOn()) {
+    $hashtext .= $userservice->getCurrentUserID();
+    $currentUser = $userservice->getCurrentUser();
+    $currentUsername = $currentUser[$userservice->getFieldName('username')];
+    if ($currentUsername == $user) {
+      $hashtext .= $user;
     }
-    $hash = md5($hashtext);
+  }
+  $hash = md5($hashtext);
 
-    // Cache for an hour
-    $cacheservice->Start($hash, 3600);
+  // Cache for an hour
+  $cacheservice->Start($hash, 3600);
 }
 
-$watchlist = null;
+$watchlist = NULL;
 if ($user && $user != 'all') {
-    if ($user == 'watchlist') {
-        $user = $cat;
-        $cat = null;
-        $watchlist = true;
-    }
-    if (is_int($user)) {
-        $userid = intval($user);
+  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 {
-        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();
-        }
+      $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;
+  }
+  $pagetitle .= ": ". $user;
 } else {
-    $userid = NULL;
+  $userid = NULL;
 }
 
 if ($cat) {
-    $pagetitle .= ": ". str_replace('+', ' + ', $cat);
+  $pagetitle .= ": ". str_replace('+', ' + ', $cat);
 }
 
 $tplVars['feedtitle'] = filter($GLOBALS['sitename'] . (isset($pagetitle) ? $pagetitle : ''));
 $tplVars['feedlink'] = $GLOBALS['root'];
 $tplVars['feeddescription'] = sprintf(T_('Recent bookmarks posted to %s'), $GLOBALS['sitename']);
 
-$bookmarks =& $bookmarkservice->getBookmarks(0, 15, $userid, $cat, NULL, getSortOrder(), $watchlist);
+$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 = date("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']
-    );
+  $row =& $bookmarks_tmp[$key];
+
+  $_link = $row['bAddress'];
+  // Redirection option
+  if ($GLOBALS['useredir']) {
+    $_link = $GLOBALS['url_redir'] . $_link;
+  }
+  $_pubdate = date("r", strtotime($row['bDatetime']));
+
+  $uriparts  = explode('.', $_link);
+  $extension = end($uriparts);
+  unset($uriparts);
+
+  $enclosure = array();
+  if ($keys = multi_array_search($extension, $GLOBALS['filetypes'])) {
+    $enclosure['mime']   = file_get_mimetype($_link);
+    $enclosure['length'] = file_get_filesize($_link);
+  }
+
+  $bookmarks_tpl[] = array(
+    'title'            => $row['bTitle'],
+    'link'             => $_link,
+    'description'      => $row['bDescription'],
+    'creator'          => $row['username'],
+    'pubdate'          => $_pubdate,
+    'tags'             => $row['tags'],
+    'enclosure_mime'   => $enclosure['mime'],
+    'enclosure_length' => $enclosure['length']
+  );
 }
 unset($bookmarks_tmp);
 unset($bookmarks);
@@ -108,7 +120,6 @@ $tplVars['bookmarks'] =& $bookmarks_tpl;
 $templateservice->loadTemplate('rss.tpl', $tplVars);
 
 if ($usecache) {
-    // Cache output if existing copy has expired
-    $cacheservice->End($hash);
+  // Cache output if existing copy has expired
+  $cacheservice->End($hash);
 }
-?>

Benjamin Mako Hill || Want to submit a patch?