<?php

// 'http://www.1up.com/rss?x=1'

class StaticFxRssFeed {
	
	var $nr_news=10;
	var $rss_channel = array();
	var $currently_writing = "";
	var $main = "";
	var $item_counter = 0;
	var $template;
	function StaticFxRssFeed(&$template) {
		
	}
	
	function startElement($parser, $name, $attrs) {
	   	switch($name) {
	   		case "RSS":
	   		case "RDF:RDF":
	   		case "ITEMS":
	   			$this->$currently_writing = "";
	   			break;
	   		case "CHANNEL":
	   			$this->$main = "CHANNEL";
	   			break;
	   		case "IMAGE":
	   			$this->$main = "IMAGE";
	   			$this->$rss_channel["IMAGE"] = array();
	   			break;
	   		case "ITEM":
	   			$this->$main = "ITEMS";
	   			break;
	   		default:
	   			$this->$currently_writing = $name;
	   			break;
	   	}
	}
	
	function endElement($parser, $name) {
	   	$this->$currently_writing = "";
	   	if ($name == "ITEM") {
	   		$this->$item_counter++;
	   	}
	}
	
	function characterData($parser, $data) {
		if ($this->$currently_writing != "") {
			switch($main) {
				case "ITEMS":
					if (isset($this->$rss_channel[$this->$main][$this->$item_counter][$this->$currently_writing])) {
						$this->$rss_channel[$this->$main][$this->$item_counter][$this->$currently_writing] .= $data;
					} else {
						//print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>");
						$this->$rss_channel[$this->$main][$this->$item_counter][$this->$currently_writing] = $data;
					}
					break;
			}
		}
	}
	
	function runfeed($file) {
				$xml_parser = xml_parser_create();
				xml_set_element_handler($xml_parser, "startElement", "endElement");
				xml_set_character_data_handler($xml_parser, "characterData");
				
				$data=curl_string($file);
				xml_parse($xml_parser,$data);
				xml_parser_free($xml_parser);
				
				// putting in array
				$news=array();
				if (isset($this->$rss_channel["ITEMS"])) 
				{
					if (count($this->$rss_channel["ITEMS"]) > 0) 
						for($i = 0;$i < count($this->$rss_channel["ITEMS"]);$i++) $news[]=$this->$rss_channel["ITEMS"][$i];
				}
				$c=0;
				
				foreach($news as $key=>$val)
				{
					if($c<$nr_news)
					{
						$template->assign_block_vars('oneup', array(
						'LINK' => $val['LINK'],
						'TITLE' => $val['TITLE'],
						'DESC' => $val['DESCRIPTION'])
						);
					}
					$c++;
				}
			}
	
}

function curl_string ($url,$user_agent='Mozilla 4.0'){

       $ch = curl_init();

       curl_setopt ($ch, CURLOPT_URL, $url);
       curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent);
       curl_setopt ($ch, CURLOPT_HEADER, 0);
       curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
       curl_setopt ($ch, CURLOPT_TIMEOUT, 120);
       $result = curl_exec ($ch);
       curl_close($ch);
       return $result;
  
}
?>
