<?
/**
 * DealSurf Feed Parser 
 * Yannick 5/31/10
 * Version 1.0
 *
 * @Array   All parameter should be passed in an array
 * Array[KEY]=>[VALUE]
 */

############ USAGE #########
# 	
#	$data = array("location" => "Los Angeles", "keyword" => "cars");
#	$DealNews = DealSurfSearch($data);
#
##############################

include_once 'lib/php/feed/dealnews.php';

	class DealsSurfCache extends Memcache {
    static private $instance = null;
    static private $port = 11211;
    static function DealsSurfmGet() {
        if (self::$instance == null) {
            self::$instance = new Memcache;
			self::$instance->addServer("192.168.30.51", self::$port);
        }
        return self::$instance;
		}
	}

function DealSurfSearch($Input)
{
	############ Deals News #########
	$data = array("limit" => "10");
	$Deals = DealNewsSearch($data);
	return $Deals;
	
	
	##### FETCH INPUT
	$Input['format'] = 'xml';
	$Input['apikey'] = '8902337d76a199b7818b11f6a5efd221';
	
	if (isset($Input['location'])){
		if(!$CityCode = getCityCode($Input['location'])){
			return null;
		}
	} else {
		return null;
	}
	
	###### INIT DOM XML #####
	$Feed = new DomDocument();
	$FeedUrl = "http://api.dealsurf.com/deals/list.xml?apikey=".$Input['apikey']."&city=".$CityCode;

	if ($Input['keyword'])
		$FeedUrl .= '&keyword='.$Input['keyword'];
	if($_GET['debug'] == 'msa123')
		echo '<hr>'.$FeedUrl;

	$expire = 3600;
	$mkey = "deals-surf_".md5($FeedUrl);

	if (!$Data = DealsSurfCache::DealsSurfmGet()->get($mkey)) {

		###### CURL & PARSE XML #####
		$CurlData = array(	"url" => $FeedUrl,
							"timeout" => '7');

		$filedata = curl_get_contents($CurlData);
		
		$Feed->loadXML($filedata);
		
		####### PARSING XML ####
		for($i = 0; $Feed->getElementsByTagName("deal")->item($i); $i++)
		{
			$Data[$i]['id'] = $Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("id")->item(0)->nodeValue;
			$Data[$i]['end_date'] = $Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("end_date")->item(0)->nodeValue;
			$Data[$i]['title'] = $Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("title")->item(0)->nodeValue;
			$Data[$i]['description'] = html_entity_decode  ($Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("description")->item(0)->nodeValue);
			$Data[$i]['link'] = $Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("url")->item(0)->nodeValue;
			$Data[$i]['images'] = $Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("picture")->item(0)->nodeValue;
			$Data[$i]['value'] = '$'.$Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("value")->item(0)->nodeValue;
			$Data[$i]['original_value'] = '$'.$Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("original_value")->item(0)->nodeValue;
			$Data[$i]['discount'] = $Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("discount")->item(0)->nodeValue.'%';
			$Data[$i]['savings'] = '$'.($Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("original_value")->item(0)->nodeValue - $Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("value")->item(0)->nodeValue);
			$Data[$i]['time_left'] = $Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("time_left")->item(0)->nodeValue;
			$Data[$i]['merchant'] = $Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("merchant")->item(0)->nodeValue;
			$Data[$i]['provider'] = $Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("provider")->item(0)->nodeValue;
			$Data[$i]['city_code'] = $Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("city_code")->item(0)->nodeValue;
			$Data[$i]['currency'] = $Feed->getElementsByTagName("deal")->item($i)->getElementsByTagName("currency")->item(0)->nodeValue;
		}
		if (is_array($Data) && count($Data) > 0){
			DealsSurfCache::DealsSurfmGet()->set($mkey, $Data, 0, $expire);
		} else {
			DealsSurfCache::DealsSurfmGet()->set($mkey, array(), 0, $expire);
		}
	} 
	return $Data;
}

function getCityCode($City)
{
	$dealSurfArray = array( 'ABQ'=> 'Albuquerque', 'ADL'=> 'Adelaide'
    , 'AIXX'=> 'Aix-en-Provence'
    , 'ALB'=> 'Albany'
    , 'ATL'=> 'Atlanta'
    , 'AU'=> 'National Australia'
    , 'AUS'=> 'Austin'
    , 'BAK'=> 'Bakersfield'
    , 'BHM'=> 'Birmingham'
    , 'BHX'=> 'Birmingham'
    , 'BKL'=> 'Brooklyn'
    , 'BNA'=> 'Nashville'
    , 'BNE'=> 'Brisbane'
    , 'BOD'=> 'Bordeaux'
    , 'BOI'=> 'Boise'
    , 'BOS'=> 'Boston'
    , 'BRS'=> 'Bristol'
    , 'BSH'=> 'Brighton'
    , 'BUF'=> 'Buffalo'
    , 'BWI'=> 'Baltimore'
    , 'CAK'=> 'Akron'
    , 'CDG'=> 'Paris'
    , 'CEQ'=> 'Cannes'
    , 'CHI'=> 'Chicago'
    , 'CHS'=> 'Charleston'
    , 'CLE'=> 'Cleveland'
    , 'CLT'=> 'Charlotte'
    , 'CMH'=> 'Columbus'
    , 'COS'=> 'Colorado Springs'
    , 'CVG'=> 'Cincinnati'
    , 'CWL'=> 'Cardiff'
    , 'DAL'=> 'Dallas'
    , 'DAY'=> 'Dayton'
    , 'DCA'=> 'Washington'
    , 'DEN'=> 'Denver'
    , 'DET'=> 'Detroit'
    , 'DFW'=> 'Fort Worth'
    , 'DSM'=> 'Des Moines'
    , 'DUB'=> 'Dublin'
    , 'FAT'=> 'Fresno'
    , 'FLL'=> 'Fort Lauderdale'
    , 'FR'=> 'National France'
    , 'FSD'=> 'Sioux Falls'
    , 'FWA'=> 'Fort Wayne'
    , 'GLA'=> 'Glasgow'
    , 'GNB'=> 'Grenoble'
    , 'GRR'=> 'Grand Rapids'
    , 'GSO'=> 'Greensboro'
    , 'HAR'=> 'Hampton Roads'
    , 'HNL'=> 'Honolulu'
    , 'HOU'=> 'Houston'
    , 'ICT'=> 'Wichita'
    , 'IND'=> 'Indianapolis'
    , 'JAX'=> 'Jacksonville'
    , 'JBK'=> 'Berkeley'
    , 'JFK'=> 'Queens'
    , 'LAS'=> 'Las Vegas'
    , 'LAX'=> 'Los Angeles'
    , 'LBA'=> 'Leeds'
    , 'LHR'=> 'London'
    , 'LIDX'=> 'Long Island'
    , 'LIL'=> 'Lille'
    , 'LPL'=> 'Liverpool'
    , 'LYN'=> 'Lyon'
    , 'MAN'=> 'Manchester'
    , 'MCI'=> 'Kansas City'
    , 'MCO'=> 'Orlando'
    , 'MEM'=> 'Memphis'
    , 'MIA'=> 'Miami'
    , 'MKE'=> 'Milwaukee'
    , 'MLB'=> 'Melbourne'
    , 'MPL'=> 'Montpellier'
    , 'MRS'=> 'Marseille'
    , 'MSN'=> 'Madison'
    , 'MSP'=> 'Minneapolis'
    , 'MSY'=> 'New Orleans'
    , 'NCE'=> 'Nice'
    , 'NCL'=> 'Newcastle'
    , 'NJYX'=> 'North Jersey'
    , 'NTE'=> 'Nantes'
    , 'NYC'=> 'New York'
    , 'OKC'=> 'Oklahoma City'
    , 'OMA'=> 'Omaha'
    , 'OOL'=> 'Gold Coast'
    , 'PDX'=> 'Portland'
    , 'PER'=> 'Perth'
    , 'PHL'=> 'Philadelphia'
    , 'PHX'=> 'Phoenix'
    , 'PIT'=> 'Pittsburgh'
    , 'PVD'=> 'Providence'
    , 'RDU'=> 'Raleigh-Durham'
    , 'RNS'=> 'Rennes'
    , 'SAN'=> 'San Diego'
    , 'SAT'=> 'San Antonio'
    , 'SDF'=> 'Louisville'
    , 'SEA'=> 'Seattle'
    , 'SFO'=> 'San Francisco'
    , 'SJC'=> 'San Jose'
    , 'SLC'=> 'Salt Lake City'
    , 'SMF'=> 'Sacramento'
    , 'SNA'=> 'Orange County'
    , 'STL'=> 'St Louis'
    , 'SXB'=> 'Strasbourg'
    , 'SYD'=> 'Sydney'
    , 'TLS'=> 'Toulouse'
    , 'TPA'=> 'Tampa'
    , 'TUL'=> 'Tulsa'
    , 'TUS'=> 'Tucson'
    , 'UK'=> 'National UK'
    , 'URO'=> 'Rouen'
    , 'US'=> 'National USA'
    , 'YEG'=> 'Edmonton'
    , 'YVR'=> 'Vancouver'
    , 'YYC'=> 'Calgary'
    , 'YYZ'=> 'Toronto' );

 
$key = array_search($City, $dealSurfArray);

	return ($key);	
}

############### DEBUG ###############
/*	include('lib/php/include/lib.php');	

	$data = array("location" => "National USA");
	$DealNews = DealSurfSearch($data);
	var_dump($DealNews);
*/
?>
