<?php

##############################################################################
# bib_news.php3                                                              #
#                                                                            #
# Copyright ViralGames SARL 2000                                             #
##############################################################################

//    include("config.inc.php3");

#compare le resultat d'un match et le pari d'un joueur
function cmp_scores($res, $pari){
    if (ereg("([0-9]{1,2})-([0-9]{1,2})",$res,$regs_res) && ereg("([0-9]{1,2})-([0-9]{1,2})",$pari,$regs_pari)){
	if (($regs_res[1]==$regs_pari[1])&&($regs_res[2]==$regs_pari[2]))
	    return 2; # le score parié est exact
	    if ((($regs_res[1]>$regs_res[2])&&($regs_pari[1]>$regs_pari[2])) ||
		(($regs_res[1]<$regs_res[2])&&($regs_pari[1]<$regs_pari[2])) ||
		(($regs_res[1]==$regs_res[2])&&($regs_pari[1]==$regs_pari[2])))
		return 1; # le score est incorrect mais l'issue du match est ok
	else return 0; #l'issue du match n'a pas ete trouvée
    } else {
	return -1;
    }
}

#calcule les statistiques d'un match donne
function stat_match($matchId){
    global $nb_exact,$nb_gagnant, $nb;
    $nb_exact = 0;
    $nb_gagnant = 0;
    $res = db_fetch_array(main_db_query("SELECT Result FROM Matchs WHERE MatchId=$matchId"));
    $nb = db_fetch_array(main_db_query("SELECT count(*) AS NUMBER FROM Paris WHERE MatchId=$matchId"));
    $rows = main_db_query("SELECT Bet FROM Paris WHERE MatchId=$matchId");
    while($paris = db_fetch_array($rows)){
	$tmp = cmp_scores($res[Result],$paris[Bet]);
	if ($tmp==2) #nb de pari ou le score parié est exact
	    $nb_exact++;
	elseif ($tmp==1) #nb de pari ou le score est incorrect mais l'issue du match est ok
	    $nb_gagnant++;
    }
}

#renvoie une string contenant les 5 meilleures montées et les 5 plus grosses descentes
#alloue les variables $bests et $worsts
function top5($nouv_gazette){
    global $NB_PTS_INSCRIPTION, $bests, $worsts,$nb_matchs;

    if ($nouv_gazette){ #on va comparer les scores au dernier log disponible
	$last = db_fetch_array(main_db_query("SELECT MAX(NewsId) AS Max FROM ScoresLog")); 
	$nb_log = db_fetch_array(main_db_query("SELECT count(*) AS Nb FROM ScoresLog WHERE NewsId='$last[Max]'"));
    } else { #on va comparer les scores à l'avant dernier log 
	$max = db_fetch_array(main_db_query("SELECT MAX(NewsId) AS Max FROM ScoresLog")); 
#	$last = db_fetch_array(main_db_query("SELECT MAX(NewsId) AS Max FROM ScoresLog WHERE NewsId<'$max[Max]'"));
	$last[Max] = $max[Max]-1; #avant dernier log
	if ($last[Max]>0)
	    $nb_log = db_fetch_array(main_db_query("SELECT count(*) AS Nb FROM ScoresLog WHERE NewsId=$last[Max]"));
	else $nb_log[Nb] = 0; # cas ou on veut modifier la 1ere gazette
    }
    
    #calcul des différences de scores
    $joueurs = main_db_query("SELECT Id,Score FROM Players ORDER BY Id ASC");
    for ($i=0;$i<$nb_log[Nb];$i++){ #pour ceux qui etaient deja inscrits lors de la derniere gazette
	$joueur = db_fetch_array($joueurs);
	$log =  db_fetch_array(main_db_query("SELECT * FROM ScoresLog WHERE PlayerId=$joueur[Id] AND NewsId=$last[Max]"));
	$tab_res[$joueur[Id]] = $joueur[Score] - $log[Score];
    }
    while($joueur = db_fetch_array($joueurs)){ #pour les nveaux inscrits
	$tab_res[$joueur[Id]] = $joueur[Score] - $NB_PTS_INSCRIPTION;
    }

    #determiner les 5 top et les 5 flop
    arsort($tab_res); #tri par ordre decroissant avec conservation de l'association

    #allocation de $bests et formatage de la chaine de sortie $resul
    $cpt = 0;
    $resul = "<b>Les 5 meilleurs : </b><br>";
    for (reset ($tab_res); $key = key ($tab_res); next ($tab_res)) {
	$player = db_fetch_array(main_db_query("SELECT NickName,MemberId FROM Players WHERE Id=$key"));
	$email = db_fetch_array(main_db_query("SELECT Email FROM Members WHERE Id=$player[MemberId]"));
	$paris = main_db_query("SELECT * FROM Paris WHERE PlayerId=$key AND Done>=1 ORDER BY Date DESC");
	$cnt = 0;
		
	#on renvoie les $nb_matchs derniers paris (sur des matchs dont on a deja mis a jour les scores) de chaque joueur
	while( ($pari = db_fetch_array($paris))&&($cnt<$nb_matchs)){
	    $cnt++;
	    $match = db_fetch_array(main_db_query("SELECT * FROM Matchs WHERE MatchId=$pari[MatchId]"));
	    $paris_player[$key] .= "<b>$player[NickName]</b> a parié $pari[Amount] pts".
		" sur le score $pari[Bet] pour le match $match[Team1] VS $match[Team2] ($match[Result])<br>\n";
	}

	$bests[$cpt] = array( "NickName" => $player[NickName],
			      "Points" => $tab_res[$key] );
	$resul .= "<br><b>".$bests[$cpt][NickName]."</b> gagne ".$bests[$cpt]["Points"].
	    " pts ** email : $email[Email] <br>$paris_player[$key]";
	$cpt++;
	if ($cpt == 5) #on ne prend que les 5 meilleurs
	    break;
    }

    #allocation de $worsts et formatage de la chaine de sortie $resul
    $cpt = 0;
    $resul .= "<b>Les 5 moins bons : </b><br>";
    for (end($tab_res); $key = key($tab_res); prev($tab_res)) {
	$player = db_fetch_array(main_db_query("SELECT NickName,MemberId FROM Players WHERE Id=$key"));
	$email = db_fetch_array(main_db_query("SELECT Email FROM Members WHERE Id=$player[MemberId]"));
	$paris = main_db_query("SELECT * FROM Paris WHERE PlayerId=$key AND Done>=1 ORDER BY Date DESC");
	$cnt = 0;
	
	#on renvoie les $nb_matchs derniers paris (sur des matchs dont on a deja mis a jour les scores) de chaque joueur
	while( ($pari = db_fetch_array($paris))&&($cnt<$nb_matchs)){
	    $cnt++;
	    $match = db_fetch_array(main_db_query("SELECT * FROM Matchs WHERE MatchId=$pari[MatchId]"));
	    $paris_player[$key] .= "<b>$player[NickName]</b> a parié $pari[Amount] pts".
		" sur le score $pari[Bet] pour le match $match[Team1] VS $match[Team2] ($match[Result])<br>\n";
	}

	$worsts[$cpt] = array( "NickName" => $player[NickName],
			       "Points" => $tab_res[$key] );
	$resul .= "<br><b>".$worsts[$cpt][NickName]."</b> perd ".( - $worsts[$cpt]["Points"]).
	    " pts ** email : $email[Email]<br>$paris_player[$key]\n";
	$cpt++;
	if ($cpt == 5) #on ne prend que les 5 moins bons
	    break;
    }
    return $resul;
}

#genere automatiquement une presentation pr la page de la gazette
function presentation_auto($stats_matchs, $bests, $worsts){
    global $nb_matchs, $IMAGES_DIR,$FIC_STATS;
    include("news.inc");
}

#genere le fichier contenant les stats de facon formatee comme a l'affichage
function gen_fic_stats($stats_matchs, $bests, $worsts){
    global $nb_matchs, $IMAGES_DIR,$FIC_STATS;
    
    $fd = fopen($FIC_STATS, "w");

    # c'est illisible mais le code html n'est qu'un copier/coller du code de news.inc avec remplacement des "echo"
    fwrite($fd,"\n</td><td>&nbsp;</td>\n<td valign=top>\n"); 

    fwrite($fd,"<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\" border=0>\n".
//		"\n<tr>\n<td class=\"whiteBoldTitle\"".
//	   " colspan=3>En hausse/En baisse\n</td></tr>\n");
	"");
	/*	
    fwrite($fd," \n<td class=\"smallDark\" align=\"center\" valign=\"top\">\n&nbsp;<img src=\"$IMAGES_DIR"."FlecheMont.gif\">\n</td>".
	   "<td class=\"smallDark\" valign=top>\n");

    fwrite($fd,$bests[0][NickName]."<br>".$bests[1][NickName]."<br>".$bests[2][NickName]."<br>".
	   $bests[3][NickName]."<br>".$bests[4][NickName]."<br>\n");	

    fwrite($fd,"</td><td align=right class=smallDark valign=top>\n");

    fwrite($fd,"+".$bests[0][Points]."<br>"."+".$bests[1][Points]."<br>"."+".$bests[2][Points]."<br>".
	   "+".$bests[3][Points]."<br>"."+".$bests[4][Points]."<br>\n");

    fwrite($fd,"</td>\n</tr>\n <tr> \n<td class=\"smallDark\" align=\"center\" valign=\"top\">&nbsp;<img src=\"$IMAGES_DIR"."FlecheDesc.gif\">".
	   "\n </td>\n	<td class=\"smallDark\" valign=top>");

    fwrite($fd,$worsts[0][NickName]."<br>".$worsts[1][NickName]."<br>".$worsts[2][NickName]."<br>".
	   $worsts[3][NickName]."<br>".$worsts[4][NickName]."<br>\n");	

    fwrite($fd,"</td><td align=right class=smallDark valign=top>\n");

    fwrite($fd,"-".(-$worsts[0][Points])."<br>"."-".(-$worsts[1][Points])."<br>"."-".(-$worsts[2][Points])."<br>".
	   "-".(-$worsts[3][Points])."<br>"."-".(-$worsts[4][Points])."<br>\n");
*/
//    fwrite($fd,"<br></td></tr><tr><td class=\"whiteBoldTitle\" colspan=3>Statistiques</td> </tr>\n");
    fwrite($fd,"<tr><td class=\"whiteBoldTitle\" colspan=3>Statistiques</td> </tr>\n");

    for ($r=0;$r<$nb_matchs;$r++){
	fwrite($fd,"<tr>\n<td class=boldDark colspan=3>".$stats_matchs[$r][Match]."<br> (".$stats_matchs[$r][Date].")".
	       "</td></tr>\n<tr><td class=smallDark colspan=2 valign=top>\n	Nb paris<br>Nb paris exacts<br>Nb paris gagnants<br>".
	       "</td>\n<td class=smallDark align=right valign=top> ".$stats_matchs[$r][Nbpari]."<br> ".
	       $stats_matchs[$r][Nbexact]."<br>".$stats_matchs[$r][Nbgagnant]."<br>\n<br></td></tr>\n");
    }

    fwrite($fd,"</table>");
    fclose($fd);
}

#maj de la table ScoresLog
function maj_scoresLog($is_new,$date,$newsId){
    if ($is_new) {# nvelle generation de stats 
		main_db_query("INSERT INTO ScoresLog (PlayerId,Score,Date,NewsId) SELECT Id,Score,'$date',$newsId FROM Players ORDER BY Id ASC");
	} else { #  correction => update de scoreslog <=> delete + insert
		main_db_query("DELETE FROM ScoresLog WHERE NewsId=$newsId"); # rappel : $NewsId n'est plus associé au num de gazette
		main_db_query("INSERT INTO ScoresLog (PlayerId,Score,Date,NewsId) SELECT Id,Score,'$date',$newsId FROM Players ORDER BY Id ASC");
    }
    echo "fin de la mise à jour de ScoresLog<br>";
}
?>
