<?
include_once("db.php");

class TrendingKeywordsCache extends Memcache {
	static private $instance = null;
	static private $port = 11211;
	static function mGet() {
		if (self::$instance == null) {
			self::$instance = new Memcache;
			// self::$instance->addServer("192.168.30.51", self::$port);
			self::$instance->addServer("127.0.0.1", self::$port);
		}
		return self::$instance;
		}
}

function getTrendingKeywords($hour, $site = '')
{
	
	$ttl = 60 * 60 * 4; // 4 hours

	$tableName = "rep_infospace_keywords";
	$randLimit = 350000;
	if($site == 'clubmother')
	{
		$tableName = "rep_clubm_keywords";
		$randLimit = 10000;
	}
	else if($site == 'leisure')
	{
		$tableName = "rep_leisure_keywords";
		$randLimit = 29000;
	}
	else if($site == 'items' || $site == 'clearmotive' || $site == 'customercompany' || $site == 'jubo' || $site == 'shoppingandbuying' || $site == 'shopresources' || $site == 'smartsnap' || $site == 'top10eshopping')
	{
		$tableName = "rep_items_keywords_new";
		$randLimit = 174000;
	}
	else if($site == 'cured')
	{
		$tableName = "rep_cured_keywords";
		$randLimit = 247000;
	}
	else if($site == 'sportsreviews')
	{
		$tableName = "rep_sportsreviews_keywords";
		$randLimit = 15000;
	}

	$results = array('td_results'=>array(), 'tu_results'=>array(), 'curr_results'=>array());
	
	if($hour == 23)
	{
		$tu_hour = 0;
		$tu_date = date("Ymd", strtotime("+1 day"));
	}
	else
	{
		$tu_hour = ($hour+1);
		$tu_date = date("Ymd");
	}

	if($hour == 0)
	{
		$td_hour = 23;
		$td_date = date("Ymd", strtotime("-1 day"));
	}
	else
	{
		$td_hour = ($hour-1);
		$td_date = date("Ymd");
	}

	$td_key = md5('getTrendingKeywords6_'.$site.'_'.$td_date.'_'.$td_hour);
	$td_results = TrendingKeywordsCache::mGet()->get($td_key);
	if($td_results && is_array($td_results))
		$results['td_results'] = $td_results;
	
	$tu_key = md5('getTrendingKeywords6_'.$site.'_'.$tu_date.'_'.$tu_hour);
	$tu_results = TrendingKeywordsCache::mGet()->get($tu_key);
	if($tu_results === false) {
		$rand = rand(0, $randLimit);
		$db = ConnectToRead();
		$res = mysql_query("select keyword from {$tableName} where length(keyword) > 5 limit {$rand}, 500 ", $db);
		
		while($row = mysql_fetch_assoc($res)){
			if(strpos($row['keyword'], ".") === false)
				$tu_results[] = urldecode(trim($row['keyword']));
		}
		shuffle($tu_results);
		$tu_results = array_slice($tu_results, 0, 20);
		
		TrendingKeywordsCache::mGet()->set($tu_key, $tu_results, 0, $ttl);
		$results['tu_results'] = $tu_results;
		mysql_close($db);
	}
	else
		$results['tu_results'] = $tu_results;
	
	$curr_key = md5('getTrendingKeywords6_'.$site.'_'.date("Ymd").'_'.$hour);
	$curr_results = TrendingKeywordsCache::mGet()->get($curr_key);
	if($curr_results === false) {
		$rand = rand(0, $randLimit);
		$db = ConnectToRead();
		$res = mysql_query("select keyword from {$tableName} where length(keyword) > 5 limit {$rand}, 500 ", $db);
		
		while($row = mysql_fetch_assoc($res)){
			if(strpos($row['keyword'], ".") === false)
				$curr_results[] = urldecode(trim($row['keyword']));
		}
		shuffle($curr_results);
		$curr_results = array_slice($curr_results, 0, 20);

		TrendingKeywordsCache::mGet()->set($curr_key, $curr_results, 0, $ttl);
		$results['curr_results'] = $curr_results;
		mysql_close($db);
	}
	else
		$results['curr_results'] = $curr_results;

	return $results;
}

?>