<?php
require_once './lib.php' ;

/* Do not update cache unless called with parameter force_update=1 */
if ($_GET['force_update']==1) {
	define('MAGPIE_CACHE_AGE',1) ;
} 

/* Function used to sort rss items in chronological order */
function date_cmp($a, $b) {
   if ($a['date_timestamp'] == $b['date_timestamp'] ) {
		#descending order
		return ( strcmp($a['title'], $b['title']) == 1 ) ? -1 : 1; 
   }    
   return ($a['date_timestamp'] > $b['date_timestamp'] ) ? -1 : 1;
}

$TIMERANGE = ( $_REQUEST['hours'] ? $_REQUEST['hours']*3600 : 3600*24*64 ) ;

$data = file_get_contents($DATAFILE) ;
$data = unserialize( base64_decode($data) ) ;

$items = array();

// load times
if (file_exists($TIMEFILE)) {
	$time_table = file_get_contents($TIMEFILE) ;
	$time_table = unserialize($time_table) ;
} else {
	$time_table = array();
}

for($i=0;$i<count($data['feeds']);$i++) {
   $rss = fetch_rss( $data['feeds'][$i] );
   if (!$rss) continue;
   if ($rss->image && $rss->image['url']) {
      $ico = $rss->image['url'] ;
   } else {
      $ico=channelFavicon($rss->channel['link']) ;
   }
   for ($j=0;$j<count($rss->items);$j++) {
      $one_item = $rss->items[$j] ;
      $one_item['channel_title'] = $rss->channel['title'];
      $one_item['channel_url'] = $rss->channel['link'] ;
      $one_item['favicon'] = $ico ;
      if ($one_item['date_timestamp'] == '')
         $one_item['date_timestamp'] = create_time($one_item['title'] . $one_item['link']);
      $items[] = $one_item ;
   }
}

include("./inc/feedcreator.class.php");

$rss_out = new UniversalFeedCreator();
$rss_out->useCached(); // use cached version if age<1 hour
$rss_out->title = $SITETITLE;
$rss_out->description = "$BASEURL";

//optional
$rss_out->descriptionTruncSize = 500;
$rss_out->descriptionHtmlSyndicated = true;

$rss_out->link = "$BASEURL";
$rss_out->syndicationURL = "$BASEURL".$_SERVER["PHP_SELF"];

//$image = new FeedImage();
//$image->title = "$SITETITLE";
//$image->url = "$BASEURL/i/logo.gif";
//$image->link = "$BASEURL";
//$image->description = "$SITETITLE";

//optional
//$image->descriptionTruncSize = 500;
//$image->descriptionHtmlSyndicated = true;

//$rss_out->image = $image;

usort($items, 'date_cmp');
for($i=0;$i<count($items);$i++) {

   $item = $items[$i] ;

   $item_out = new FeedItem();
   
   $item_out->title = $item['title'];
   $item_out->link = $item['link'];
   $item_out->source = $items->channel_title;
   $item_out->description = $item['summary'];
	$item_out->date = date('D d F, Y', $item['date_timestamp'] ) ;

   //item->descriptionTruncSize = 500;
   $item_out->descriptionHtmlSyndicated = true;

   $rss_out->addItem($item_out);
}

// valid format strings are: RSS0.91, RSS1.0, RSS2.0, PIE0.1 (deprecated),
// MBOX, OPML, ATOM, ATOM0.3, HTML, JS
echo $rss_out->saveFeed("RSS2.0", "feed/feed.xml");

// save times
$ttime = serialize($time_table);
$fp = fopen($TIMEFILE,'w') ;
fputs($fp, $ttime) ;
fclose($fp) ;

?>
