<?php
####################
# CONSTANTS
####################
# correspond à deux mois (60 jours)
$REGISTRATION_PERIOD = 5184000;

####################
# Start functions
####################

# fonction de comparaison de 2 nombres
# IN : a et b
# OUT : 0 si a=b, 1 si a>b, 2 si a<b
function cmp_score($a,$b)
{
	if ($a==$b)
		return 0;
	
	if ($a>$b)
		return 1;
	else
		return 2;
}

####################
# fonction de calcule d'un gain en comparant deux résultats
# de format X-Y
####################
/*
IN : 
	Result : un résultat de match au format X-Y
	Bet : le pari, au format A-B
	Amount : la somme misée
	rate1 : taux quand X-Y == A-B (pari exact)
	rate2 : taux quand X-Y <=> A-B (pari gagnant)

OUT :
	on récupere le somme gagnée qui peut etre négative
*/
function calcule_gain_prono($Result,$Bet,$Amount,$rate1,$rate2)
{
	# si on a le meme resultat, score exact, on sort avec rate1
	if ($Result == $Bet)
	{
		return $Amount*$rate1;
	}
	
	# on etudie le result
	$tabResult = explode("-",$Result);
	$ResultType = cmp_score($tabResult[0],$tabResult[1]);

	# on etudie le Bet
	$tabBet = explode("-",$Bet);
	$BetType = cmp_score($tabBet[0],$tabBet[1]);

	# s'il a le gagnant, on sort avec rate2
	# sinon il perd $Amount
	if ($BetType==$ResultType)
		return $Amount*$rate2;
	else
		return $Amount*(-1);
}

####################
####################
/*
IN :
	MatchId : id du match dont on veut les gains de chaque joueur ayant participé
	Result : résultat du match
OUT :
	un tableau associatif PlayerId->Gain
*/
function getTab_gainProno($MatchId,$Result,&$tabGainAll)
{
	global $KF_PERFECT, $KF_CORRECT;
	
	if (count($tabGainAll)>0)
		reset($tabGainAll);
		
	# recup du match concerné
	$match = db_fetch_array(main_db_query("SELECT * FROM Matchs WHERE MatchId='".$MatchId."'"));

	# récup de tous les paris sur le match MatchId
	$bets = main_db_query("SELECT * FROM Paris WHERE MatchId='".$MatchId."' AND Bet != '0'");

	# on parcourt chaque paris, on remplit alors PlayerId->gain
	while($bet = db_fetch_array($bets))
	{
		$gainKF = 0;
		$tabGainAll[$bet['PlayerId']][$MatchId]['gainProno'] = calcule_gain_prono($Result,$bet['Bet'],$bet['Amount'],$match['Rate1'],$match['Rate2']);
		$gainKF = calcule_gain_prono($Result,$bet['Bet'],1,$KF_PERFECT,$KF_CORRECT);
		$tabGainAll[$bet['PlayerId']][$MatchId]['gainKF'] = ($gainKF == -1)?0:$gainKF;
		$tabGainAll[$bet['PlayerId']][$MatchId]['Bet'] = $bet['Bet'];
		$tabGainAll[$bet['PlayerId']][$MatchId]['Amount'] = $bet['Amount'];
	}				
}

	
####################
# fonction retournant le tableau associatif PlayerId->gain de ses filleuls
# cette fonction retourne pour un match donné, pour chaque joueur les gains
# en prono de ses filleuls.
####################
/*
IN :
	MatchId : id du match dont on veut les gains prono des filleuls de chaque joueur ayant participé
	rate : pourcentage que le parrain va récuperer
	tabGainProno : tableau des gains en pronostics de chaque joueur
OUT :
	un tableau associatif PlayerId->Gain des filleuls
*/
function getTab_gainFilleuls($MatchId,$rate,&$tabGainAll)
{
	global $REGISTRATION_PERIOD;
	
	# date avant laquelle les points des filleuls ne comptent plus
	$registrationTime=date("Y-m-d H:i:s",my_local_time()-$REGISTRATION_PERIOD);

	# on a les gains des joueurs ayant pariés à ce match
	# on va maintenant ajouter les gains des filleuls
	# on recup les joueurs qui ont joué au match
	$all_players = main_db_query("SELECT PlayerId FROM Paris WHERE MatchId='".$MatchId."'");

	if (count($tabGainAll)>0)
		reset($tabGainAll);

	while($all_player = db_fetch_array($all_players))
	{
		$playerId = $all_player['PlayerId'];

		# on recupere les PId des filleuls de playerId
		# on ne va récuperer que ceux dont la date d'inscription est inférieure à n mois !
		$filleuls = main_db_query("SELECT Id FROM Players WHERE FatherPId='".$playerId."'".
		" AND Time>'".$registrationTime."'");

		# parmi ces filleuls, on fait la somme des gains non nuls, on les ajoute a gainFilleul
		while($filleul = db_fetch_array($filleuls))
		{
			$tmp = $tabGainAll[$filleul[Id]][$MatchId][gainProno];
			if ($tmp>0)
			{
				$tabGainAll[$playerId][$MatchId][gainFilleul]+=intval($tmp);
			}
		}

		$tmp = $tabGainAll[$playerId][$MatchId][gainFilleul];
		if ($tmp=="")
			$tmp=0;
		
		# le parrain ne récupere qu'un pourcentage des points des filleuls
		$tabGainAll[$playerId][$MatchId][gainFilleul] = $tmp*$rate/100;
	}
}


####################
# fonction retournant le tableau associatif PlayerId->gain total
# ie la somme des gains prono + gains filleuls
####################
/*
IN :
	gainProno : tableau associatif des gain en prono
	gainFilleuls : tableau associatif des gain des filleuls
OUT :
	un tableau associatif PlayerId->Gain total
*/
function getTab_gainTotal($MatchId,&$tabGainAll)
{
	# le tableau gainFilleuls contient tous les joueurs de la base
	# on construit le tableau de gain total = gain pronos + gain filleuls
	if (count($tabGainAll)>0)
		reset($tabGainAll);

	$i=0;
	while(list($playerId,$matchs) = each($tabGainAll))
	{
		# les joueurs qui n'ont pas joué au match donné ne gagnent pas les 
		# points de leurs filleuls
		if (strlen($matchs[$MatchId][gainProno])>0)
			$tabGainAll[$playerId][$MatchId][gainTotal] = $matchs[$MatchId][gainProno] + $matchs[$MatchId][gainFilleul];
		else
			$tabGainAll[$playerId][$MatchId][gainTotal] = 0;
		
		//echo "<br>".($i++);
		flush();
	}
}
####################
# End function
####################

?>
