function scheduler_process() { global $config, $user, $debug, $lang; $is_admin_request = false; $ts_var_stat_update = strtotime($config->db_loadItem('var_stat_update')); $ts_scheduled_update = sys_schedule_get_prev_run($config->db_loadItem('stats_schedule'), $config->var_stat_update); if (sys_get_param_int('admin_update')) { define('USER_LEVEL', isset($user['authlevel']) ? $user['authlevel'] : -1); if (USER_LEVEL > 0) { $is_admin_request = true; $ts_scheduled_update = SN_TIME_NOW; } } if ($ts_scheduled_update > $ts_var_stat_update) { lng_include('admin'); sn_db_transaction_start(); $ts_var_stat_update_end = strtotime($config->db_loadItem('var_stat_update_end')); if (SN_TIME_NOW > $ts_var_stat_update_end) { $old_server_status = $config->db_loadItem('game_disable'); $config->db_saveItem('game_disable', GAME_DISABLE_STAT); $config->db_saveItem('var_stat_update_end', date(FMT_DATE_TIME_SQL, SN_TIME_NOW + ($config->db_loadItem('stats_minimal_interval') ? $config->stats_minimal_interval : 600))); $config->db_saveItem('var_stat_update_msg', 'Update started'); sn_db_transaction_commit(); $msg = $is_admin_request ? 'admin request' : 'scheduler'; $next_run = date(FMT_DATE_TIME_SQL, sys_schedule_get_prev_run($config->stats_schedule, $config->var_stat_update, true)); $msg = "Running stat updates: {$msg}. Config->var_stat_update = " . $config->var_stat_update . ', $ts_scheduled_update = ' . date(FMT_DATE_TIME_SQL, $ts_scheduled_update) . ', next_stat_update = ' . $next_run; $debug->warning($msg, 'Stat update', LOG_INFO_STAT_PROCESS); $total_time = microtime(true); // require_once('../includes/sys_stat.php'); require_once SN_ROOT_PHYSICAL . 'includes/includes/sys_stat.php'; sys_stat_calculate(); $total_time = microtime(true) - $total_time; $msg = "Stat update complete in {$total_time} seconds."; $debug->warning($msg, 'Stat update', LOG_INFO_STAT_PROCESS); $msg = "{$lang['adm_done']}: {$total_time} {$lang['sys_sec']}."; // . date(FMT_DATE_TIME, $ts_scheduled_update) . ' ' . date(FMT_DATE_TIME, $config->var_stat_update); // TODO: Analyze maintenance result. Add record to log if error. Add record to log if OK $maintenance_result = sys_maintenance(); $config->db_saveItem('var_stat_update', SN_TIME_SQL); $config->db_saveItem('var_stat_update_msg', $msg); $config->db_saveItem('var_stat_update_next', $next_run); $config->db_saveItem('var_stat_update_admin_forced', SN_TIME_SQL); $config->db_saveItem('var_stat_update_end', SN_TIME_SQL); $config->db_saveItem('game_disable', $old_server_status); } elseif ($ts_scheduled_update > $ts_var_stat_update) { $timeout = strtotime($config->db_loadItem('var_stat_update_end')) - SN_TIME_NOW; $msg = $config->db_loadItem('var_stat_update_msg'); $msg = "{$msg} ETA {$timeout} seconds. Please wait..."; } sn_db_transaction_rollback(); } elseif ($is_admin_request) { $msg = 'Stat is up to date'; } return $msg; }
$pages[$first_element] = array('header' => "{$first_element}-{$last_element}"); } $range = $range > $record_count ? $record_count : $range; stat_tpl_assign($template, $range, 'range', $pages, $sn_group_stat_common); while ($row = db_fetch($query)) { $row_stat = array('ID' => $row['id'], 'RANK' => $row['rank'], 'RANK_CHANGE' => $row['rank_old'] ? $row['rank_old'] - $row['rank'] : 0, 'POINTS' => pretty_number($row['points'])); //pdump($row); if ($who == 1) { $row_stat['ALLY_NAME'] = $row['ally_name']; $row_stat['ALLY_ID'] = $row['ally_id']; empty($row['username']) ? $row['username'] = $row['name'] : false; $row_stat['NAME'] = player_nick_render_to_html($row, array('icons' => empty($source), 'color' => empty($source))); // $row_stat['NAME'] = player_nick_render_to_html(array( // 'id' => $row['id'], // // TODO - Добавлять реальное имя игрока на Блице для закрытого раунда // 'username' => $row['name'], // 'gender' => isset($row['gender']) ? $row['gender'] : GENDER_UNKNOWN, // // 'gender', // // 'race', // // 'ally_tag', // ), array('icons' => empty($source), 'color' => empty($source))); } else { $row_stat['MEMBERS'] = $row['ally_members']; $row_stat['POINTS_PER_MEMBER'] = pretty_number(floor($row['points'] / $row['ally_members'])); $row_stat['NAME'] = $row['name']; } $template->assign_block_vars('stat', $row_stat); } $next_run = sys_schedule_get_prev_run($config->stats_schedule, $config->var_stat_update, true); $template->assign_vars(array('REFRESH_DATE' => $config->var_stat_update ? date(FMT_DATE_TIME, strtotime($config->var_stat_update) + SN_CLIENT_TIME_DIFF) : '', 'NEXT_DATE' => $next_run ? date(FMT_DATE_TIME, $next_run + SN_CLIENT_TIME_DIFF) : '', 'RANGE' => $range, 'SUBJECT' => $who, 'TYPE' => $type, 'USER_ALLY' => $user['ally_id'], 'USER_ID' => $source ? 0 : $user['id'], 'SOURCE' => $source, 'STATS_HIDE_PM_LINK' => $config->stats_hide_pm_link || $source)); display($template, $lang['stat_header'], !empty($user), '', false, !empty($user));