Файл: adm/statfunctions.php
Строк: 819
<?php
##############################################################################
# * #
# * XG PROYECT #
# * #
# * @copyright Copyright (C) 2008 - 2009 By lucky from xgproyect.net #
# * #
# * #
# * This program is free software: you can redistribute it and/or modify #
# * it under the terms of the GNU General Public License as published by #
# * the Free Software Foundation, either version 3 of the License, or #
# * (at your option) any later version. #
# * #
# * This program is distributed in the hope that it will be useful, #
# * but WITHOUT ANY WARRANTY; without even the implied warranty of #
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# * GNU General Public License for more details. #
# * #
##############################################################################
function GetTechnoPoints ( $CurrentUser ) {
global $resource, $pricelist, $reslist;
$TechCounts = 0;
$TechPoints = 0;
foreach ( $reslist['tech'] as $n => $Techno )
{
if ( $CurrentUser[ $resource[ $Techno ] ] > 0 ) {
for ( $Level = 0; $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'] = $TechCounts;
$RetValue['TechPoint'] = $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 = 0; $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'] = $BuildCounts;
$RetValue['BuildPoint'] = $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'] = $DefenseCounts;
$RetValue['DefensePoint'] = $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'] = $FleetCounts;
$RetValue['FleetPoint'] = $FleetPoints;
return $RetValue;
}
// INICIO FIX ACTUALIZACION PUNTOS CON FLOTA VOLANDO
function GetFlyingFleetPoints($fleet_array)
{global $resource, $pricelist, $reslist;
// PADA FUNCTION
// USE AT YOUR OWN RISK :3
$FleetRec = explode(";", $fleet_array);
if(is_array($FleetRec))
{
foreach($FleetRec as $Item => $Group)
{
if ($Group != '')
{
$Ship = explode(",", $Group);
$Units = $pricelist[ $Ship[0] ]['metal'] + $pricelist[ $Ship[0] ]['crystal'] + $pricelist[ $Ship[0] ]['deuterium'];
$FleetPoints += ($Units * $Ship[1]);
$FleetCounts += $Ship[1];
}
}
}
$RetValue['FleetCount'] = $FleetCounts;
$RetValue['FleetPoint'] = $FleetPoints;
return $RetValue;
}
//FIN FIX ACTUALIZACION PUNTOS CON FLOTA VOLANDO
function MakeStats()
{
global $resource, $pricelist, $reslist, $game_config, $xgp_root, $phpEx;
$CheckUserQuery = false;
$CheckAllyQuery = false;
// Initial Time
$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
$starttime = $mtime;
//Initial Memory
$result['initial_memory']= array(round(memory_get_usage() / 1024,1),round(memory_get_usage(1) / 1024,1));
//Change the last stats time
$stats_time = time();
//Delete old messages
$del_before = time() - (60 * 60 * 24); // 1 День - это время хранения мессаг и отчетов
$del_inactive = time() - (60 * 60 * 24 * 30); // 1 Месяц - это вот хранение аккауннтов со дня последнего посещения
$del_deleted = time() - (60 * 60 * 24 * 7); // 1 Неделя это удаление аккаунта в опциях
$ChooseToDelete = doquery("SELECT `id` FROM `{{table}}` WHERE (`db_deaktjava` < '".$del_deleted."' AND `db_deaktjava` <> 0) OR (`onlinetime` < '".$del_inactive."' AND `authlevel` <> 3)", 'users');
if($ChooseToDelete)
{
include_once($xgp_root . 'includes/functions/DeleteSelectedUser.' . $phpEx);
while($delete = mysql_fetch_array($ChooseToDelete))
{
DeleteSelectedUser($delete[id]);
}
}
doquery ("DELETE FROM {{table}} WHERE `message_time` < '". $del_before ."' ;", 'messages');
doquery ("DELETE FROM {{table}} WHERE `time` < '". $del_before ."' ;", 'rw');
//STATS FOR USERS....
//Here we make the select query, with this all the custom stuff with be included
$select_defenses = '';
foreach($reslist['defense'] as $n => $Defense)
{
if ($resource[ $Defense ] != 'small_protection_shield' && $resource[ $Defense ] != 'big_protection_shield')
{
$select_defenses .= " SUM(p.".$resource[ $Defense ].") AS ".$resource[ $Defense ].",";
}
}
$select_buildings = '';
foreach($reslist['build'] as $n => $Building)
{
$select_buildings .= " p.".$resource[ $Building ].",";
}
$selected_tech = '';
foreach($reslist['tech'] as $n => $Techno)
{
$selected_tech .= " u.".$resource[ $Techno ].",";
}
$select_fleets = '';
foreach($reslist['fleet'] as $n => $Fleet)
{
$select_fleets .= " SUM(p.".$resource[ $Fleet ].") AS ".$resource[ $Fleet ].",";
}
//If you have some data type enmu is better if you put it here, because that data give a error in the SUM function.
$selected_enum = "p.small_protection_shield, p.big_protection_shield";//For now...
$select_planet = "p.id_owner,";
//For Stats table..
$select_old_ranks = "id_owner, stat_type,tech_rank AS old_tech_rank, build_rank AS old_build_rank, defs_rank AS old_defs_rank, fleet_rank AS old_fleet_rank, total_rank AS old_total_rank";
//For users table
$select_user = " u.id, u.ally_id, u.authlevel ";
//We check how many users are for not overload the server...
$total_users = doquery("SELECT COUNT(*) AS `count` FROM {{table}} WHERE 1;", 'users', true);
//We will make query every $game_config['stat_amount'] users
//Min amount = 10, if it is less than 10, it is not a good system
$game_config['stat_amount'] = (($game_config['stat_amount']>=10)?$game_config['stat_amount']:10);
$amount_per_block = (($game_config['stat_amount']<$game_config['users_amount'])?$game_config['users_amount']:$game_config['stat_amount']);
if ($total_users['count'] > $amount_per_block)
{
$LastQuery = roundUp($total_users['count'] / $amount_per_block);
}
else
{
$LastQuery = 1;
}
for ($Query=1;$Query<=$LastQuery;$Query++)
{
if ($Query==1)
{//based on:http://www.desarrolloweb.com/articulos/1035.php
$start = 0;
}
else
{
$start = ($Query - 1) * $amount_per_block;
}
$minmax_sql = 'SELECT Max(id) AS `max`, Min(id) AS `min` FROM
(SELECT id FROM {{table}}users ORDER BY id ASC LIMIT
'. $start.','. ($amount_per_block) .') AS A';
$minmax = doquery($minmax_sql, '',true);
$sql_parcial = 'SELECT '.$select_buildings .$select_planet . $selected_enum.', p.id FROM {{table}}planets as p WHERE p.id_owner <='. $minmax['max'].' AND p.id_owner >= ' .$minmax['min'].';';
//We delete now the old stats of the users
$sql_old_stats = 'SELECT '.$select_old_ranks.' FROM {{table}} WHERE stat_type = 1 AND stat_code = 1 AND id_owner <= '.$minmax['max'].' AND id_owner >= '.$minmax['min'].';';
//Here we make the array with the planets buildings array and the user id and planet id for use in the next step...
//Here we excecute all the querys
$parcial_data = doquery($sql_parcial, '');//Here we obtained the stuff that can not be SUM
while ($CurPlanet = mysql_fetch_assoc($parcial_data))
{
$Buildings_array[$CurPlanet['id_owner']][$CurPlanet['id']] = $CurPlanet;//We made a array with the content of the query
}
unset($CurPlanet, $parcial_data);
$old_stats = doquery($sql_old_stats, 'statpoints');
while ($CurStats = mysql_fetch_assoc($old_stats))
{
$old_stats_array[$CurStats['id_owner']] = $CurStats;
}
unset($CurStats, $old_stats);
//We take the data of flying fleets if stat_flying is =1 in game config
//If you have trouble with the RAM and CPU usage, please set stat_flying = 0 and a low value of stat_amount (25, 15...)
if($game_config['stat_flying'] == 1)
{
$sql_flying_fleets = 'SELECT fleet_array, fleet_owner, fleet_id FROM {{table}} WHERE fleet_owner <= '. $minmax['max'].' AND fleet_owner >= '. $minmax['min'].';';
$flying_fleets = doquery($sql_flying_fleets, 'fleets');
while ($CurFleets = mysql_fetch_assoc($flying_fleets))
{
$flying_fleets_array[$CurFleets['fleet_owner']][$CurFleets['fleet_id']] = $CurFleets['fleet_array'];
}
unset($CurFleets, $flying_fleets);
}
//This query will have a LOT of data...
$sql = 'SELECT '.$select_planet .$select_defenses .$selected_tech .$select_fleets .$select_user.
'FROM {{table}}planets as p
INNER JOIN {{table}}users as u ON u.id = p.id_owner
WHERE p.id_owner <= '.$minmax['max'].' AND p.id_owner >= '.$minmax['min'].'
GROUP BY p.id_owner, u.id, u.authlevel;';
$total_data = doquery ($sql,'');
unset($sql,$sql_old_stats,$sql_parcial);
doquery ("DELETE FROM {{table}} WHERE stat_type = 1 AND stat_code = 1 AND id_owner <= ". $minmax['max']." AND id_owner >= ". $minmax['min'].";",'statpoints');
$insert_user_query = "INSERT INTO {{table}}
(`id_owner`, `id_ally`, `stat_type`, `stat_code`,
`tech_old_rank`, `tech_points`, `tech_count`,
`build_old_rank`, `build_points`, `build_count`,
`defs_old_rank`, `defs_points`, `defs_count`,
`fleet_old_rank`, `fleet_points`, `fleet_count`,
`total_old_rank`, `total_points`, `total_count`, `stat_date`) VALUES ";
//Here we start the update...
while ($CurUser = mysql_fetch_assoc($total_data))
{
$u_OldTotalRank = (($old_stats_array[$CurUser['id']]['old_total_rank'])? $old_stats_array[$CurUser['id']]['old_total_rank']:0);
$u_OldTechRank = (($old_stats_array[$CurUser['id']]['old_tech_rank'])? $old_stats_array[$CurUser['id']]['old_tech_rank']:0);
$u_OldBuildRank = (($old_stats_array[$CurUser['id']]['old_build_rank'])? $old_stats_array[$CurUser['id']]['old_build_rank']:0);
$u_OldDefsRank = (($old_stats_array[$CurUser['id']]['old_defs_rank'])? $old_stats_array[$CurUser['id']]['old_defs_rank']:0);
$u_OldFleetRank = (($old_stats_array[$CurUser['id']]['old_fleet_rank'])? $old_stats_array[$CurUser['id']]['old_fleet_rank']:0);
//We dont need this anymore...
unset($old_stats_array[$CurUser['id']]);
//1 point= $game_config['stat_settings'] ressources
//Make the tech points XD
$u_points = GetTechnoPoints ( $CurUser );
$u_TTechCount = $u_points['TechCount'];
$u_TTechPoints = ($u_points['TechPoint'] / $game_config['stat_settings']);
//Make the defense points
$u_points = GetDefensePoints ( $CurUser );
$u_TDefsCount = $u_points['DefenseCount'];
$u_TDefsPoints = ($u_points['DefensePoint'] / $game_config['stat_settings']);
//Make the fleets points (without the flying fleets...
$u_points = GetFleetPoints ( $CurUser );
$u_TFleetCount = $u_points['FleetCount'];
$u_TFleetPoints = ($u_points['FleetPoint'] / $game_config['stat_settings']);
//Now we add the flying fleets points
//This is used if($game_config['stat_flying'] == 1)
if($game_config['stat_flying'] == 1)
{
if($flying_fleets_array[$CurUser['id']])
{
foreach($flying_fleets_array[$CurUser['id']] as $fleet_id => $fleet_array)
{
$u_points = GetFlyingFleetPoints ( $fleet_array );
$u_TFleetCount += $u_points['FleetCount'];
$u_TFleetPoints += ($u_points['FleetPoint'] / $game_config['stat_settings']);
}
}
//We dont need this anymore...
unset($flying_fleets_array[$CurUser['id']],$fleet_array,$fleet_id);
}
else
{//We take one query per fleet in flying, with this we increase the time and the querys, but we decrease the cpu load...
$OwnFleets = doquery("SELECT fleet_array, fleet_id FROM {{table}} WHERE `fleet_owner` = '". $CurUser['id'] ."';", 'fleets');
while ($FleetRow = mysql_fetch_array($OwnFleets))
{
$u_points = GetFlyingFleetPoints ( $FleetRow['fleet_array'] );
$u_TFleetCount += $u_points['FleetCount'];
$u_TFleetPoints += ($u_points['FleetPoint'] / $game_config['stat_settings']);
}
//We dont need this anymore...
unset($OwnFleets, $FleetRow);
}
$u_TBuildCount = 0;
$u_TBuildPoints = 0;
if($Buildings_array[$CurUser['id']])
{
foreach($Buildings_array[$CurUser['id']] as $planet_id => $building)
{
$u_points = GetBuildPoints ( $building );
$u_TBuildCount += $u_points['BuildCount'];
$u_TBuildPoints += ($u_points['BuildPoint'] / $game_config['stat_settings']);
//We add the shields points (this way is a temporary way...)
$u_points = GetDefensePoints ( $building );
$u_TDefsCount += $u_points['DefenseCount'];
$u_TDefsPoints += ($u_points['DefensePoint'] / $game_config['stat_settings']);
}
//We dont need this anymore...
unset($Buildings_array[$CurUser['id']],$planet_id,$building);
}
else
{
//Here we will send a error message....print_r("<br>usuario sin planeta: ". $CurUser['id']);
}
$u_GCount = $u_TDefsCount + $u_TTechCount + $u_TFleetCount + $u_TBuildCount;
$u_GPoints = $u_TTechPoints + $u_TDefsPoints + $u_TFleetPoints + $u_TBuildPoints;
if (($CurUser['authlevel'] >= $game_config['stat_level']&& $game_config['stat']==1 ) || $CurUser['bana']==1)
{
$insert_user_query .= '('.$CurUser['id'].','.$CurUser['ally_id'].',1,1,'.$u_OldTechRank.',
0,0,'.$u_OldBuildRank.',0,0,'.$u_OldDefsRank.',0,0,'.$u_OldFleetRank.',
0,0,'.$u_OldTotalRank.',0,0,'.$stats_time.'),' ;
}
else
{
$insert_user_query .= '('.$CurUser['id'].','.$CurUser['ally_id'].',1,1,'.$u_OldTechRank.',
'.$u_TTechPoints.','.$u_TTechCount.','.$u_OldBuildRank.','.$u_TBuildPoints.',
'.$u_TBuildCount.','.$u_OldDefsRank.','.$u_TDefsPoints.','.$u_TDefsCount.',
'.$u_OldFleetRank.','.$u_TFleetPoints.','.$u_TFleetCount.','.$u_OldTotalRank.',
'.$u_GPoints.','.$u_GCount.','.$stats_time.'),' ;
}
unset_vars( 'u_' );
$CheckUserQuery = true;
}
//TODO, make a end string check in case that insert_user_query end in VALUE...
//Here we change the end of the query for ;
if($CheckUserQuery == true)
{
$insert_user_query = substr_replace($insert_user_query, ';', -1);
doquery ( $insert_user_query , 'statpoints');
}
unset($insert_user_query, $total_data, $CurUser, $old_stats_array, $Buildings_array, $flying_fleets_array);
}
//STATS FOR ALLYS
//Delet invalid allys
doquery("DELETE FROM {{table}} WHERE ally_members='0'", "alliance");
//We create this just for make a check of the ally
$ally_check = doquery("SELECT * FROM {{table}}", 'alliance');
$total_ally =0;
while ($CurAlly = mysql_fetch_assoc($ally_check))
{
++$total_ally;
$ally_check_value[$CurAlly['id']]=1;
}
unset($ally_check);
unset($start,$QueryValue,$Query,$LastQuery);
if ($total_ally > 0)//We only update allys if at least 1 ally exist...
{
//Min amount = 10, if it is less than 10, it is not a good system
$game_config['stat_amount']= (($game_config['stat_amount']>=10)?$game_config['stat_amount']:10);
$amount_per_block = (($game_config['stat_amount']<$game_config['users_amount'])?$game_config['users_amount']:$game_config['stat_amount']);
if ($total_ally > $amount_per_block)
{
$LastQuery = roundUp($total_ally / $amount_per_block);
}
else
{
$LastQuery = 1;
}
for ($Query=1;$Query<=$LastQuery;$Query++)
{
if ($Query==1)
{//based on:http://www.desarrolloweb.com/articulos/1035.php
$start = 0;
}
else
{
$start = ($Query - 1) * $amount_per_block;
}
$minmax_sql = 'SELECT Max(id) AS `max`, Min(id) AS `min` FROM
(SELECT id FROM {{table}}alliance ORDER BY id ASC LIMIT
'. $start.','. $amount_per_block.') AS A';
$minmax = doquery($minmax_sql, '',true);
$select_old_a_ranks = "s.id_owner , s.stat_type, s.tech_rank AS old_tech_rank,
s.build_rank AS old_build_rank, s.defs_rank AS old_defs_rank, s.fleet_rank AS old_fleet_rank,
s.total_rank AS old_total_rank";
$select_ally = " a.id ";
$sql_ally = 'SELECT '.$select_ally.', '.$select_old_a_ranks.'
FROM {{table}}alliance AS a
INNER JOIN {{table}}statpoints AS s ON a.id = s.id_owner AND s.stat_type = 2
WHERE a.id <= '.$minmax['max'].' AND a.id >= '.$minmax['min'].'
ORDER BY a.id;';
$ally_data = doquery ($sql_ally,'');
$ally_sql_points ='SELECT
s.stat_type, s.id_ally, Sum(s.tech_points) AS TechPoint,
Sum(s.tech_count) AS TechCount, Sum(s.build_points) AS BuildPoint,
Sum(s.build_count) AS BuildCount, Sum(s.defs_points) AS DefsPoint,
Sum(s.defs_count) AS DefsCount, Sum(s.fleet_points) AS FleetPoint,
Sum(s.fleet_count) AS FleetCount, Sum(s.total_points) AS TotalPoint,
Sum(s.total_count) AS TotalCount
FROM
{{table}}statpoints AS s
WHERE s.stat_type = 1 AND s.id_ally > 0
AND s.id_ally <= '.$minmax['max'].' AND s.id_ally >= '.$minmax['min'].'
GROUP BY s.id_ally;';
$ally_points = doquery ($ally_sql_points,'');
//We delete now the old stats of the allys
doquery ('DELETE FROM {{table}} WHERE `stat_type` = 2 AND id_owner <= '.$minmax['max'].' AND id_owner >= '.$minmax['min'].';','statpoints');
while ($CurAlly = mysql_fetch_assoc($ally_data))
{
$ally_old_data[$CurAlly['id']]=$CurAlly;
}
unset($CurAlly, $ally_data);
$insert_ally_query = "INSERT INTO {{table}}
(`id_owner`, `id_ally`, `stat_type`, `stat_code`,
`tech_old_rank`, `tech_points`, `tech_count`,
`build_old_rank`, `build_points`, `build_count`,
`defs_old_rank`, `defs_points`, `defs_count`,
`fleet_old_rank`, `fleet_points`, `fleet_count`,
`total_old_rank`, `total_points`, `total_count`, `stat_date`) VALUES ";
while ($CurAlly = mysql_fetch_assoc($ally_points))
{
if ($ally_check_value[$CurAlly['id_ally']] == 1)
{
$u_OldTotalRank = (($ally_old_data[$CurAlly['id_ally']]['old_total_rank'])? $ally_old_data[$CurAlly['id_ally']]['old_total_rank']:0);
$u_OldTechRank = (($ally_old_data[$CurAlly['id_ally']]['old_tech_rank'])? $ally_old_data[$CurAlly['id_ally']]['old_tech_rank']:0);
$u_OldBuildRank = (($ally_old_data[$CurAlly['id_ally']]['old_build_rank'])? $ally_old_data[$CurAlly['id_ally']]['old_build_rank']:0);
$u_OldDefsRank = (($ally_old_data[$CurAlly['id_ally']]['old_defs_rank'])? $ally_old_data[$CurAlly['id_ally']]['old_defs_rank']:0);
$u_OldFleetRank = (($ally_old_data[$CurAlly['id_ally']]['old_fleet_rank'])? $ally_old_data[$CurAlly['id_ally']]['old_fleet_rank']:0);
$u_TTechCount = $CurAlly['TechCount'];
$u_TTechPoints = $CurAlly['TechPoint'];
$u_TBuildCount = $CurAlly['BuildCount'];
$u_TBuildPoints = $CurAlly['BuildPoint'];
$u_TDefsCount = $CurAlly['DefsCount'];
$u_TDefsPoints = $CurAlly['DefsPoint'];
$u_TFleetCount = $CurAlly['FleetCount'];
$u_TFleetPoints = $CurAlly['FleetPoint'];
$u_GCount = $CurAlly['TotalCount'];
$u_GPoints = $CurAlly['TotalPoint'];
$insert_ally_query .= '('.$CurAlly['id_ally'].',0,2,1,'.$u_OldTechRank.',
'.$u_TTechPoints.','.$u_TTechCount.','.$u_OldBuildRank.','.$u_TBuildPoints.',
'.$u_TBuildCount.','.$u_OldDefsRank.','.$u_TDefsPoints.','.$u_TDefsCount.',
'.$u_OldFleetRank.','.$u_TFleetPoints.','.$u_TFleetCount.','.$u_OldTotalRank.',
'.$u_GPoints.','.$u_GCount.','.$stats_time.'),' ;
unset($CurAlly);
unset_vars( 'u_' );
}
else
{
doquery ( "UPDATE {{table}} SET `ally_id`=0, `ally_name` = '', `ally_register_time`= 0, `ally_rank_id`= 0 WHERE `ally_id`='{$CurAlly['id_ally']}'", "users");
}
$CheckAllyQuery = true;
}
//Here we change the end of the query for ;
if($CheckAllyQuery == true)
{
$insert_ally_query = substr_replace($insert_ally_query, ';', -1);
doquery ( $insert_ally_query , 'statpoints');
}
unset($insert_ally_query, $ally_old_data, $CurAlly, $ally_points);
}
unset($ally_check_value);
//We update the ranks of the allys
MakeNewRanks(2);
}
//We update the ranks of the users
MakeNewRanks(1);
// Calcul de la duree de traitement (calcul)
$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
$endtime = $mtime;
$result['stats_time'] = $stats_time;
$result['totaltime'] = ($endtime - $starttime);
$result['memory_peak'] = array(round(memory_get_peak_usage() / 1024,1),round(memory_get_peak_usage(1) / 1024,1));
$result['end_memory'] = array(round(memory_get_usage() / 1024,1),round(memory_get_usage(1) / 1024,1));
$result['amount_per_block'] =$amount_per_block;
return $result;
}
//TODO: Find a best way to make this ranks... with a little less querys
function MakeNewRanks($stat_type)
{
$Rank = 1;
$RankQry = doquery("SELECT `id_owner` FROM {{table}} WHERE `stat_type` = '".$stat_type."' AND `stat_code` = '1' ORDER BY `tech_points` DESC;", 'statpoints');
while ($CurUser = mysql_fetch_assoc($RankQry) )
{
$tech[$CurUser['id_owner']] = $Rank;
$Rank++;
}
unset($Rank,$RankQry,$QryUpdateStats,$CurUser);
$Rank = 1;
$RankQry = doquery("SELECT `id_owner` FROM {{table}} WHERE `stat_type` = '".$stat_type."' AND `stat_code` = '1' ORDER BY `build_points` DESC;", 'statpoints');
while ($CurUser = mysql_fetch_assoc($RankQry) )
{
$build[$CurUser['id_owner']] = $Rank;
$Rank++;
}
unset($Rank,$RankQry,$QryUpdateStats,$CurUser);
$Rank = 1;
$RankQry = doquery("SELECT `id_owner` FROM {{table}} WHERE `stat_type` = '".$stat_type."' AND `stat_code` = '1' ORDER BY `defs_points` DESC;", 'statpoints');
while ($CurUser = mysql_fetch_assoc($RankQry) )
{
$defs[$CurUser['id_owner']] = $Rank;
$Rank++;
}
unset($Rank,$RankQry,$QryUpdateStats,$CurUser);
$Rank = 1;
$RankQry = doquery("SELECT `id_owner` FROM {{table}} WHERE `stat_type` = '".$stat_type."' AND `stat_code` = '1' ORDER BY `fleet_points` DESC;", 'statpoints');
while ($CurUser = mysql_fetch_assoc($RankQry) )
{
$fleet[$CurUser['id_owner']] = $Rank;
$Rank++;
}
unset($Rank,$RankQry,$QryUpdateStats,$CurUser);
$Rank = 1;
$RankQry = doquery("SELECT `id_owner` FROM {{table}} WHERE `stat_type` = '".$stat_type."' AND `stat_code` = '1' ORDER BY `total_points` DESC;", 'statpoints');
while ($CurUser = mysql_fetch_assoc($RankQry) )
{
$QryUpdateStats = "UPDATE {{table}} SET ";
$QryUpdateStats .= "`tech_rank` = '". $tech[$CurUser['id_owner']] ."' ,";
$QryUpdateStats .= "`build_rank` = '". $build[$CurUser['id_owner']] ."' ,";
$QryUpdateStats .= "`defs_rank` = '". $defs[$CurUser['id_owner']] ."' ,";
$QryUpdateStats .= "`fleet_rank` = '". $fleet[$CurUser['id_owner']] ."' ,";
$QryUpdateStats .= "`total_rank` = '". $Rank ."' ";
$QryUpdateStats .= "WHERE ";
$QryUpdateStats .= " `stat_type` = '".$stat_type."' AND `stat_code` = '1' AND `id_owner` = '". $CurUser['id_owner'] ."';";
doquery ( $QryUpdateStats , 'statpoints');
unset($tech[$CurUser['id_owner']],$build[$CurUser['id_owner']],$defs[$CurUser['id_owner']],$fleet[$CurUser['id_owner']]);
$Rank++;
}
unset($Rank,$RankQry,$QryUpdateStats,$CurUser);
doquery ( "DELETE FROM {{table}} WHERE `stat_code` = '2';" , 'statpoints');
}
?>