<?php

/**
 * actualisation.php
 *
 * @version 1
 * @copyright 2008 by Chlorel for XNova
 */

define('INSIDE'  , true);
define('INSTALL' , false);

$ugamela_root_path = './';
include($ugamela_root_path . 'extension.inc');
include($ugamela_root_path . 'common.' . $phpEx);
if($user['username'] == '') header('Location: login.php');


    includeLang('actualisation');

    $StatDate   = time();
    // Rotation des statistiques
    doquery ( "DELETE FROM {{table}} WHERE `stat_code` = '2';" , 'statpoints');
    doquery ( "UPDATE {{table}} SET `stat_code` = `stat_code` + '1';" , 'statpoints');

    $GameUsers  = doquery("SELECT * FROM {{table}} WHERE `authlevel` < '1';", 'users');

    while ($CurUser = mysql_fetch_assoc($GameUsers)) {
        // Recuperation des anciennes statistiques
        $OldStatRecord  = doquery ("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `id_owner` = '".mysql_real_escape_string($CurUser['id'])."';",'statpoints');
        while($o = mysql_fetch_array($OldStatRecord)) {
$OldTotalRank = $o['total_rank'];
$OldTechRank = $o['tech_rank'];
$OldBuildRank = $o['build_rank'];
$OldDefsRank = $o['defs_rank'];
$OldFleetRank = $o['fleet_rank'];
// Suppression de l'ancien enregistrement
doquery ("DELETE FROM {{table}} WHERE `stat_type` = '1' AND `id_owner` = '".mysql_real_escape_string($CurUser['id'])."';",'statpoints');
} 

        // Total des unitées consommée pour la recherche
        $Points         = GetTechnoPoints ( ($CurUser) );
        $TTechCount     = mysql_real_escape_string($Points['TechCount']);
        $TTechPoints    = mysql_real_escape_string(($Points['TechPoint'] / 1000));

        // Totalisation des points accumulés par planete
        $TBuildCount    = 0;
        $TBuildPoints   = 0;
        $TDefsCount     = 0;
        $TDefsPoints    = 0;
        $TFleetCount    = 0;
        $TFleetPoints   = 0;
        $GCount         = mysql_real_escape_string($TTechCount);
        $GPoints        = mysql_real_escape_string($TTechPoints);
        $UsrPlanets     = doquery("SELECT * FROM {{table}} WHERE `id_owner` = '". mysql_real_escape_string($CurUser['id']) ."';", 'planets');
        while ($CurPlanet = mysql_fetch_assoc($UsrPlanets) ) {
            $Points           = GetBuildPoints ( ($CurPlanet) );
            $TBuildCount     += mysql_real_escape_string($Points['BuildCount']);
            $GCount          += mysql_real_escape_string($Points['BuildCount']);
            $PlanetPoints     = (mysql_real_escape_string($Points['BuildPoint']) / 1000);
            $TBuildPoints    += (mysql_real_escape_string($Points['BuildPoint']) / 1000);

            $Points           = GetDefensePoints ( $CurPlanet );
            $TDefsCount      += mysql_real_escape_string($Points['DefenseCount']);
            $GCount          += mysql_real_escape_string($Points['DefenseCount']);
            $PlanetPoints    += (mysql_real_escape_string($Points['DefensePoint']) / 1000);
            $TDefsPoints     += (mysql_real_escape_string($Points['DefensePoint']) / 1000);

            $Points           = GetFleetPoints ( $CurPlanet );
            $TFleetCount     += mysql_real_escape_string($Points['FleetCount']);
            $GCount          += mysql_real_escape_string($Points['FleetCount']);
            $PlanetPoints    += (mysql_real_escape_string($Points['FleetPoint']) / 1000);
            $TFleetPoints    += (mysql_real_escape_string($Points['FleetPoint']) / 1000);

            $GPoints         += mysql_real_escape_string($PlanetPoints);
            $QryUpdatePlanet  = "UPDATE {{table}} SET ";
            $QryUpdatePlanet .= "`points` = '". mysql_real_escape_string($PlanetPoints) ."' ";
            $QryUpdatePlanet .= "WHERE ";
            $QryUpdatePlanet .= "`id` = '". mysql_real_escape_string($CurPlanet['id']) ."';";
            doquery ( $QryUpdatePlanet , 'planets');
        }

        $QryInsertStats  = "INSERT INTO {{table}} SET ";
        $QryInsertStats .= "`id_owner` = '". mysql_real_escape_string($CurUser['id']) ."', ";
        $QryInsertStats .= "`id_ally` = '". mysql_real_escape_string($CurUser['ally_id']) ."', ";
        $QryInsertStats .= "`stat_type` = '1', "; // 1 pour joueur , 2 pour alliance
        $QryInsertStats .= "`stat_code` = '1', "; // de 1 a 2 mis a jour de maniere automatique
        $QryInsertStats .= "`tech_points` = '". mysql_real_escape_string($TTechPoints) ."', ";
        $QryInsertStats .= "`tech_count` = '". mysql_real_escape_string($TTechCount) ."', ";
        $QryInsertStats .= "`tech_old_rank` = '". mysql_real_escape_string($OldTechRank) ."', ";
        $QryInsertStats .= "`build_points` = '". mysql_real_escape_string($TBuildPoints) ."', ";
        $QryInsertStats .= "`build_count` = '". mysql_real_escape_string($TBuildCount) ."', ";
        $QryInsertStats .= "`build_old_rank` = '". mysql_real_escape_string($OldBuildRank) ."', ";
        $QryInsertStats .= "`defs_points` = '". mysql_real_escape_string($TDefsPoints) ."', ";
        $QryInsertStats .= "`defs_count` = '". mysql_real_escape_string($TDefsCount) ."', ";
        $QryInsertStats .= "`defs_old_rank` = '". mysql_real_escape_string($OldDefsRank) ."', ";
        $QryInsertStats .= "`fleet_points` = '". mysql_real_escape_string($TFleetPoints) ."', ";
        $QryInsertStats .= "`fleet_count` = '". mysql_real_escape_string($TFleetCount) ."', ";
        $QryInsertStats .= "`fleet_old_rank` = '". mysql_real_escape_string($OldFleetRank) ."', ";
        $QryInsertStats .= "`total_points` = '". mysql_real_escape_string($GPoints) ."', ";
        $QryInsertStats .= "`total_count` = '". mysql_real_escape_string($GCount) ."', ";
        $QryInsertStats .= "`total_old_rank` = '". mysql_real_escape_string($OldTotalRank) ."', ";
        $QryInsertStats .= "`stat_date` = '". mysql_real_escape_string($StatDate) ."';";
        doquery ( $QryInsertStats , 'statpoints');
    }

    $Rank           = 1;
    $RankQry        = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `tech_points` DESC;", 'statpoints');
    while ($TheRank = mysql_fetch_assoc($RankQry) ) {
        $QryUpdateStats  = "UPDATE {{table}} SET ";
        $QryUpdateStats .= "`tech_rank` = '". mysql_real_escape_string($Rank) ."' ";
        $QryUpdateStats .= "WHERE ";
        $QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". mysql_real_escape_string($TheRank['id_owner']) ."';";
        doquery ( $QryUpdateStats , 'statpoints');
        $Rank++;
    }

    $Rank           = 1;
    $RankQry        = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `build_points` DESC;", 'statpoints');
    while ($TheRank = mysql_fetch_assoc($RankQry) ) {
        $QryUpdateStats  = "UPDATE {{table}} SET ";
        $QryUpdateStats .= "`build_rank` = '". mysql_real_escape_string($Rank) ."' ";
        $QryUpdateStats .= "WHERE ";
        $QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". mysql_real_escape_string($TheRank['id_owner']) ."';";
        doquery ( $QryUpdateStats , 'statpoints');
        $Rank++;
    }

    $Rank           = 1;
    $RankQry        = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `defs_points` DESC;", 'statpoints');
    while ($TheRank = mysql_fetch_assoc($RankQry) ) {
        $QryUpdateStats  = "UPDATE {{table}} SET ";
        $QryUpdateStats .= "`defs_rank` = '". mysql_real_escape_string($Rank) ."' ";
        $QryUpdateStats .= "WHERE ";
        $QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". mysql_real_escape_string($TheRank['id_owner']) ."';";
        doquery ( $QryUpdateStats , 'statpoints');
        $Rank++;
    }

    $Rank           = 1;
    $RankQry        = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `fleet_points` DESC;", 'statpoints');
    while ($TheRank = mysql_fetch_assoc($RankQry) ) {
        $QryUpdateStats  = "UPDATE {{table}} SET ";
        $QryUpdateStats .= "`fleet_rank` = '". mysql_real_escape_string($Rank) ."' ";
        $QryUpdateStats .= "WHERE ";
        $QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". mysql_real_escape_string($TheRank['id_owner']) ."';";
        doquery ( $QryUpdateStats , 'statpoints');
        $Rank++;
    }

    $Rank           = 1;
    $RankQry        = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `total_points` DESC;", 'statpoints');
    while ($TheRank = mysql_fetch_assoc($RankQry) ) {
        $QryUpdateStats  = "UPDATE {{table}} SET ";
        $QryUpdateStats .= "`total_rank` = '". mysql_real_escape_string($Rank) ."' ";
        $QryUpdateStats .= "WHERE ";
        $QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". mysql_real_escape_string($TheRank['id_owner']) ."';";
        doquery ( $QryUpdateStats , 'statpoints');
        $Rank++;
    }

    // Statistiques des alliances ...
    $GameAllys  = doquery("SELECT * FROM {{table}}", 'alliance');

    while ($CurAlly = mysql_fetch_assoc($GameAllys)) {
        // Recuperation des anciennes statistiques
        $OldStatRecord  = doquery ("SELECT * FROM {{table}} WHERE `stat_type` = '2' AND `id_owner` = '".mysql_real_escape_string($CurAlly['id'])."';",'statpoints');
        if ($OldStatRecord) {
            $OldTotalRank = mysql_real_escape_string($OldStatRecord['total_rank']);
            $OldTechRank  = mysql_real_escape_string($OldStatRecord['tech_rank']);
            $OldBuildRank = mysql_real_escape_string($OldStatRecord['build_rank']);
            $OldDefsRank  = mysql_real_escape_string($OldStatRecord['defs_rank']);
            $OldFleetRank = mysql_real_escape_string($OldStatRecord['fleet_rank']);
            // Suppression de l'ancien enregistrement
            doquery ("DELETE FROM {{table}} WHERE `stat_type` = '2' AND `id_owner` = '".mysql_real_escape_string($CurAlly['id'])."';",'statpoints');
        } else {
            $OldTotalRank = 0;
            $OldTechRank  = 0;
            $OldBuildRank = 0;
            $OldDefsRank  = 0;
            $OldFleetRank = 0;
        }

        // Total des unitées consommée pour la recherche
        $QrySumSelect   = "SELECT ";
        $QrySumSelect  .= "SUM(`tech_points`)  as `TechPoint`, ";
        $QrySumSelect  .= "SUM(`tech_count`)   as `TechCount`, ";
        $QrySumSelect  .= "SUM(`build_points`) as `BuildPoint`, ";
        $QrySumSelect  .= "SUM(`build_count`)  as `BuildCount`, ";
        $QrySumSelect  .= "SUM(`defs_points`)  as `DefsPoint`, ";
        $QrySumSelect  .= "SUM(`defs_count`)   as `DefsCount`, ";
        $QrySumSelect  .= "SUM(`fleet_points`) as `FleetPoint`, ";
        $QrySumSelect  .= "SUM(`fleet_count`)  as `FleetCount`, ";
        $QrySumSelect  .= "SUM(`total_points`) as `TotalPoint`, ";
        $QrySumSelect  .= "SUM(`total_count`)  as `TotalCount` ";
        $QrySumSelect  .= "FROM {{table}} ";
        $QrySumSelect  .= "WHERE ";
        $QrySumSelect  .= "`stat_type` = '1' AND ";
        $QrySumSelect  .= "`id_ally` = '". mysql_real_escape_string($CurAlly['id']) ."';";
        $Points         = doquery( mysql_real_escape_string($QrySumSelect), 'statpoints', true);

        $TTechCount     = mysql_real_escape_string($Points['TechCount']);
        $TTechPoints    = mysql_real_escape_string($Points['TechPoint']);
        $TBuildCount    = mysql_real_escape_string($Points['BuildCount']);
        $TBuildPoints   = mysql_real_escape_string($Points['BuildPoint']);
        $TDefsCount     = mysql_real_escape_string($Points['DefsCount']);
        $TDefsPoints    = mysql_real_escape_string($Points['DefsPoint']);
        $TFleetCount    = mysql_real_escape_string($Points['FleetCount']);
        $TFleetPoints   = mysql_real_escape_string($Points['FleetPoint']);
        $GCount         = mysql_real_escape_string($Points['TotalCount']);
        $GPoints        = mysql_real_escape_string($Points['TotalPoint']);

        $QryInsertStats  = "INSERT INTO {{table}} SET ";
        $QryInsertStats .= "`id_owner` = '". mysql_real_escape_string($CurAlly['id']) ."', ";
        $QryInsertStats .= "`id_ally` = '0', ";
        $QryInsertStats .= "`stat_type` = '2', "; // 1 pour joueur , 2 pour alliance
        $QryInsertStats .= "`stat_code` = '1', "; // de 1 a 5 mis a jour de maniere automatique
        $QryInsertStats .= "`tech_points` = '". mysql_real_escape_string($TTechPoints) ."', ";
        $QryInsertStats .= "`tech_count` = '". mysql_real_escape_string($TTechCount) ."', ";
        $QryInsertStats .= "`tech_old_rank` = '". mysql_real_escape_string($OldTechRank) ."', ";
        $QryInsertStats .= "`build_points` = '". mysql_real_escape_string($TBuildPoints) ."', ";
        $QryInsertStats .= "`build_count` = '". mysql_real_escape_string($TBuildCount) ."', ";
        $QryInsertStats .= "`build_old_rank` = '". mysql_real_escape_string($OldBuildRank) ."', ";
        $QryInsertStats .= "`defs_points` = '". mysql_real_escape_string($TDefsPoints) ."', ";
        $QryInsertStats .= "`defs_count` = '". mysql_real_escape_string($TDefsCount) ."', ";
        $QryInsertStats .= "`defs_old_rank` = '". mysql_real_escape_string($OldDefsRank) ."', ";
        $QryInsertStats .= "`fleet_points` = '". mysql_real_escape_string($TFleetPoints) ."', ";
        $QryInsertStats .= "`fleet_count` = '". mysql_real_escape_string($TFleetCount) ."', ";
        $QryInsertStats .= "`fleet_old_rank` = '". mysql_real_escape_string($OldFleetRank) ."', ";
        $QryInsertStats .= "`total_points` = '". mysql_real_escape_string($GPoints) ."', ";
        $QryInsertStats .= "`total_count` = '". mysql_real_escape_string($GCount) ."', ";
        $QryInsertStats .= "`total_old_rank` = '". mysql_real_escape_string($OldTotalRank) ."', ";
        $QryInsertStats .= "`stat_date` = '". mysql_real_escape_string($StatDate) ."';";
        doquery ( $QryInsertStats , 'statpoints');
    }
    message($lang['actualiser'], $lang['Please_Wait'], 'stat.'.$phpEx, "3");
    AdminMessage ( $lang['adm_done'], $lang['adm_stat_title'] );

    function GetTechnoPoints ( $CurrentUser ) {
    global $resource, $pricelist, $reslist;

    $TechCounts = 0;
    $TechPoints = 0;
    foreach ( $reslist['tech'] as $n => $Techno ) {
        if ( $CurrentUser[ $resource[ $Techno ] ] > 0 ) {
            for ( $Level = 1; $Level < $CurrentUser[ $resource[ $Techno ] ]; $Level++ ) {
                $Units       = $pricelist[ $Techno ]['metal'] + $pricelist[ $Techno ]['crystal'] + $pricelist[ $Techno ]['deuterium'];
                $LevelMul    = pow( $pricelist[ $Techno ]['factor'], $Level );
                $TechPoints += ($Units * $LevelMul);
                $TechCounts += 1;
            }
        }
    }
    $RetValue['TechCount'] = mysql_real_escape_string($TechCounts);
    $RetValue['TechPoint'] = mysql_real_escape_string($TechPoints);

    return $RetValue;
}

function GetBuildPoints ( $CurrentPlanet ) {
    global $resource, $pricelist, $reslist;

    $BuildCounts = 0;
    $BuildPoints = 0;
    foreach($reslist['build'] as $n => $Building) {
        if ( $CurrentPlanet[ $resource[ $Building ] ] > 0 ) {
            for ( $Level = 1; $Level < $CurrentPlanet[ $resource[ $Building ] ]; $Level++ ) {
                $Units        = $pricelist[ $Building ]['metal'] + $pricelist[ $Building ]['crystal'] + $pricelist[ $Building ]['deuterium'];
                $LevelMul     = pow( $pricelist[ $Building ]['factor'], $Level );
                $BuildPoints += ($Units * $LevelMul);
                $BuildCounts += 1;
            }
        }
    }
    $RetValue['BuildCount'] = mysql_real_escape_string($BuildCounts);
    $RetValue['BuildPoint'] = mysql_real_escape_string($BuildPoints);

    return $RetValue;
}

function GetDefensePoints ( $CurrentPlanet ) {
    global $resource, $pricelist, $reslist;

    $DefenseCounts = 0;
    $DefensePoints = 0;
    foreach($reslist['defense'] as $n => $Defense) {
        if ($CurrentPlanet[ $resource[ $Defense ] ] > 0) {
            $Units          = $pricelist[ $Defense ]['metal'] + $pricelist[ $Defense ]['crystal'] + $pricelist[ $Defense ]['deuterium'];
            $DefensePoints += ($Units * $CurrentPlanet[ $resource[ $Defense ] ]);
            $DefenseCounts += $CurrentPlanet[ $resource[ $Defense ] ];
        }
    }
    $RetValue['DefenseCount'] = mysql_real_escape_string($DefenseCounts);
    $RetValue['DefensePoint'] = mysql_real_escape_string($DefensePoints);

    return $RetValue;
}

function GetFleetPoints ( $CurrentPlanet ) {
    global $resource, $pricelist, $reslist;

    $FleetCounts = 0;
    $FleetPoints = 0;
    foreach($reslist['fleet'] as $n => $Fleet) {
        if ($CurrentPlanet[ $resource[ $Fleet ] ] > 0) {
            $Units          = $pricelist[ $Fleet ]['metal'] + $pricelist[ $Fleet ]['crystal'] + $pricelist[ $Fleet ]['deuterium'];
            $FleetPoints   += ($Units * $CurrentPlanet[ $resource[ $Fleet ] ]);
            $FleetCounts   += $CurrentPlanet[ $resource[ $Fleet ] ];
        }
    }
    $RetValue['FleetCount'] = mysql_real_escape_string($FleetCounts);
    $RetValue['FleetPoint'] = mysql_real_escape_string($FleetPoints);

    return $RetValue;
}

?>