supernova-ws /
SuperNova
| 1 | <?php |
||||||
| 2 | |||||||
| 3 | /** |
||||||
| 4 | * imperator.php |
||||||
| 5 | * |
||||||
| 6 | * Player's information |
||||||
| 7 | * |
||||||
| 8 | * @copyright (c) 2010-2017 by Gorlum for http://supernova.ws |
||||||
| 9 | */ |
||||||
| 10 | |||||||
| 11 | function sn_imperator_view($template = null) { |
||||||
| 12 | global $template_result, $config, $lang, $user; |
||||||
| 13 | |||||||
| 14 | $stat_fields = array( |
||||||
| 15 | 'stat_date' => 'STAT_DATE', |
||||||
| 16 | |||||||
| 17 | // 'stat_code' => 'STAT_CODE', |
||||||
| 18 | 'total_rank' => 'TOTAL_RANK', |
||||||
| 19 | 'total_points' => 'TOTAL_POINTS', |
||||||
| 20 | //'total_count' => 'TOTAL_COUNT', |
||||||
| 21 | 'tech_rank' => 'TECH_RANK', |
||||||
| 22 | 'tech_points' => 'TECH_POINTS', |
||||||
| 23 | //'tech_count' => 'TECH_COUNT', |
||||||
| 24 | 'build_rank' => 'BUILD_RANK', |
||||||
| 25 | 'build_points' => 'BUILD_POINTS', |
||||||
| 26 | //'build_count' => 'BUILD_COUNT', |
||||||
| 27 | 'defs_rank' => 'DEFS_RANK', |
||||||
| 28 | 'defs_points' => 'DEFS_POINTS', |
||||||
| 29 | //'defs_count' => 'DEFS_COUNT', |
||||||
| 30 | 'fleet_rank' => 'FLEET_RANK', |
||||||
| 31 | 'fleet_points' => 'FLEET_POINTS', |
||||||
| 32 | //'fleet_count' => 'FLEET_COUNT', |
||||||
| 33 | 'res_rank' => 'RES_RANK', |
||||||
| 34 | 'res_points' => 'RES_POINTS', |
||||||
| 35 | // 'res_count' => 'RES_COUNT', |
||||||
| 36 | ); |
||||||
| 37 | |||||||
| 38 | $user_id = sys_get_param_id('int_user_id', $user['id']); |
||||||
| 39 | |||||||
| 40 | $user_data = ($same_user = $user_id == $user['id']) ? $user : db_user_by_id($user_id); |
||||||
|
0 ignored issues
–
show
Deprecated Code
introduced
by
Loading history...
It seems like
$user_id can also be of type double and string; however, parameter $user_id_unsafe of db_user_by_id() does only seem to accept integer, maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||
| 41 | |||||||
| 42 | // if($user_id == $user['id']) { |
||||||
| 43 | // $user_data = &$user; |
||||||
| 44 | // $same_user = true; |
||||||
| 45 | // } else { |
||||||
| 46 | // $user_data = db_user_by_id($user_id); |
||||||
| 47 | // $same_user = false; |
||||||
| 48 | // } |
||||||
| 49 | |||||||
| 50 | if(!$user_data) { |
||||||
| 51 | SnTemplate::messageBox($lang['imp_imperator_none'], $lang['sys_error'], 'index.php', 10); |
||||||
| 52 | die(); |
||||||
|
0 ignored issues
–
show
|
|||||||
| 53 | } |
||||||
| 54 | |||||||
| 55 | $template = SnTemplate::gettemplate('imperator', $template); |
||||||
| 56 | $StatRecord = doquery("SELECT * FROM {{statpoints}} WHERE `stat_type` = 1 AND `stat_code` = 1 AND `id_owner` = {$user_id};", true); |
||||||
|
0 ignored issues
–
show
The function
doquery() has been deprecated.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
true of type true is incompatible with the type string expected by parameter $table of doquery().
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||
| 57 | |||||||
| 58 | $stat_array = array(); |
||||||
| 59 | $query = doquery("SELECT * FROM {{statpoints}} WHERE `stat_type` = 1 AND `id_owner` = {$user_id} ORDER BY `stat_code` DESC;"); |
||||||
|
0 ignored issues
–
show
The function
doquery() has been deprecated.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||
| 60 | $stat_count = SN::$db->db_affected_rows(); |
||||||
| 61 | while($row = db_fetch($query)) { |
||||||
|
0 ignored issues
–
show
The function
db_fetch() has been deprecated.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||
| 62 | foreach($stat_fields as $field_db_name => $field_template_name) { |
||||||
| 63 | // $stat_count - $row['stat_code'] - для реверсирования ID статы в JS |
||||||
| 64 | $stat_array[$field_template_name]['DATA'][$stat_count - $row['stat_code']] = $row[$field_db_name]; |
||||||
| 65 | } |
||||||
| 66 | } |
||||||
| 67 | |||||||
| 68 | $stat_array_date = $stat_array['STAT_DATE']; |
||||||
| 69 | empty($stat_array_date['DATA']) ? $stat_array_date['DATA'] = array() : false; |
||||||
| 70 | foreach($stat_array_date['DATA'] as $key => $value) { |
||||||
| 71 | $template->assign_block_vars('stat_date', array( |
||||||
| 72 | 'ID' => $key, |
||||||
| 73 | 'VALUE' => $value, |
||||||
| 74 | 'TEXT' => date(FMT_DATE_TIME, $value), |
||||||
| 75 | )); |
||||||
| 76 | } |
||||||
| 77 | |||||||
| 78 | unset($stat_array['STAT_DATE']); |
||||||
| 79 | $template_data = array(); |
||||||
| 80 | foreach($stat_array as $stat_type => &$stat_type_data) { |
||||||
| 81 | $reverse_min_max = strpos($stat_type, '_RANK') !== false; |
||||||
| 82 | $stat_type_data['MIN'] = $reverse_min_max ? max($stat_type_data['DATA']) : min($stat_type_data['DATA']); |
||||||
| 83 | $stat_type_data['MAX'] = $reverse_min_max ? min($stat_type_data['DATA']) : max($stat_type_data['DATA']); |
||||||
| 84 | $stat_type_data['AVG'] = avg($stat_type_data['DATA']); |
||||||
| 85 | foreach($stat_type_data['DATA'] as $key => $value) { |
||||||
| 86 | $stat_type_data['PERCENT'][$key] = ($stat_type_data['MAX'] - $value ? ($value - $stat_type_data['MIN']) / ($stat_type_data['MAX'] - $stat_type_data['MIN']) : 1) * 100; |
||||||
| 87 | $template_data[$stat_type][$key]['ID'] = $key; |
||||||
| 88 | $template_data[$stat_type][$key]['VALUE'] = $value; |
||||||
| 89 | $template_data[$stat_type][$key]['DELTA'] = ($reverse_min_max ? $stat_type_data['MIN'] - $value : $value - $stat_type_data['MAX']); |
||||||
| 90 | $template_data[$stat_type][$key]['PERCENT'] = $stat_type_data['PERCENT'][$key]; |
||||||
| 91 | } |
||||||
| 92 | } |
||||||
| 93 | |||||||
| 94 | foreach($template_data as $stat_type => $stat_type_data) { |
||||||
| 95 | $template->assign_block_vars('stat', array( |
||||||
| 96 | 'TYPE' => $stat_type, |
||||||
| 97 | 'TEXT' => $lang['imp_stat_types'][$stat_type], |
||||||
| 98 | 'MIN' => $stat_array[$stat_type]['MIN'], |
||||||
| 99 | 'MAX' => $stat_array[$stat_type]['MAX'], |
||||||
| 100 | 'AVG' => $stat_array[$stat_type]['AVG'], |
||||||
| 101 | )); |
||||||
| 102 | foreach($stat_type_data as $stat_entry) { |
||||||
| 103 | $template->assign_block_vars('stat.entry', $stat_entry); |
||||||
| 104 | } |
||||||
| 105 | } |
||||||
| 106 | |||||||
| 107 | |||||||
| 108 | if($same_user) { |
||||||
| 109 | rpg_level_up($user, RPG_STRUCTURE); |
||||||
| 110 | rpg_level_up($user, RPG_RAID); |
||||||
| 111 | rpg_level_up($user, RPG_TECH); |
||||||
| 112 | rpg_level_up($user, RPG_EXPLORE); |
||||||
| 113 | |||||||
| 114 | |||||||
| 115 | /* |
||||||
| 116 | // ----------------------------------------------------------------------------------------------- |
||||||
| 117 | // News Frame ... |
||||||
| 118 | if ($config->game_news_overview) |
||||||
| 119 | { |
||||||
| 120 | nws_render($template, "WHERE UNIX_TIMESTAMP(`tsTimeStamp`)<=" . SN_TIME_NOW . "", $config->game_news_overview); |
||||||
| 121 | } |
||||||
| 122 | */ |
||||||
| 123 | } |
||||||
| 124 | |||||||
| 125 | |||||||
| 126 | $template->assign_vars(array( |
||||||
| 127 | 'USERS_TOTAL' => $config->users_amount, |
||||||
| 128 | |||||||
| 129 | 'USER_ID' => $user_id, |
||||||
| 130 | 'user_username' => player_nick_render_to_html($user_data, true), |
||||||
| 131 | // 'user_gender' => $user_data['gender'] == 'F' ? 'female' : 'male', |
||||||
| 132 | 'USER_AVATAR' => $user_data['avatar'], |
||||||
| 133 | 'VACATION' => $user_data['vacation'], |
||||||
| 134 | 'GENDER_TEXT' => $lang['sys_gender_list'][$user_data['gender']], |
||||||
| 135 | |||||||
| 136 | 'PLAYER_RANK_NUMBER' => $playerRank = SN::$gc->playerLevelHelper->getPointLevel($user_data['total_points'], $user_data['authlevel']), |
||||||
| 137 | 'PLAYER_RANK_NAME' => $lang['ranks'][$playerRank], |
||||||
| 138 | |||||||
| 139 | 'NEW_MESSAGES' => $user_data['new_message'], |
||||||
| 140 | 'REGISTRATION_DATE' => date(FMT_DATE_TIME, $user_data['register_time']), |
||||||
| 141 | |||||||
| 142 | 'builder_xp' => HelperString::numberFloorAndFormat($user_data['xpminier']), |
||||||
| 143 | 'builder_lvl' => HelperString::numberFloorAndFormat($user_data['lvl_minier']), |
||||||
| 144 | 'builder_lvl_st' => HelperString::numberFloorAndFormat(rpg_get_miner_xp($user_data['lvl_minier'])), |
||||||
| 145 | 'builder_lvl_up' => HelperString::numberFloorAndFormat(rpg_get_miner_xp($user_data['lvl_minier']+1)), |
||||||
| 146 | 'raid_xp' => HelperString::numberFloorAndFormat($user_data['xpraid']), |
||||||
| 147 | 'raid_lvl' => HelperString::numberFloorAndFormat($user_data['lvl_raid']), |
||||||
| 148 | 'raid_lvl_up' => HelperString::numberFloorAndFormat(rpg_get_raider_xp($user_data['lvl_raid']+1)), |
||||||
| 149 | 'raids' => HelperString::numberFloorAndFormat($user_data['raids']), |
||||||
| 150 | 'raidswin' => HelperString::numberFloorAndFormat($user_data['raidswin']), |
||||||
| 151 | 'raidsloose' => HelperString::numberFloorAndFormat($user_data['raidsloose']), |
||||||
| 152 | 'tech_xp' => HelperString::numberFloorAndFormat($user_data['player_rpg_tech_xp']), |
||||||
| 153 | 'tech_lvl' => HelperString::numberFloorAndFormat($user_data['player_rpg_tech_level']), |
||||||
| 154 | 'tech_lvl_st' => HelperString::numberFloorAndFormat(rpg_get_tech_xp($user_data['player_rpg_tech_level'])), |
||||||
| 155 | 'tech_lvl_up' => HelperString::numberFloorAndFormat(rpg_get_tech_xp($user_data['player_rpg_tech_level']+1)), |
||||||
| 156 | |||||||
| 157 | 'explore_xp' => HelperString::numberFloorAndFormat($user_data['player_rpg_explore_xp']), |
||||||
| 158 | 'explore_lvl' => HelperString::numberFloorAndFormat($user_data['player_rpg_explore_level']), |
||||||
| 159 | 'explore_lvl_st' => HelperString::numberFloorAndFormat(rpg_get_explore_xp($user_data['player_rpg_explore_level'])), |
||||||
| 160 | 'explore_lvl_up' => HelperString::numberFloorAndFormat(rpg_get_explore_xp($user_data['player_rpg_explore_level']+1)), |
||||||
| 161 | |||||||
| 162 | 'build_points' => HelperString::numberFloorAndFormat( $StatRecord['build_points'] ), |
||||||
| 163 | 'tech_points' => HelperString::numberFloorAndFormat( $StatRecord['tech_points'] ), |
||||||
| 164 | 'fleet_points' => HelperString::numberFloorAndFormat( $StatRecord['fleet_points'] ), |
||||||
| 165 | 'defs_points' => HelperString::numberFloorAndFormat( $StatRecord['defs_points'] ), |
||||||
| 166 | 'res_points' => HelperString::numberFloorAndFormat( $StatRecord['res_points'] ), |
||||||
| 167 | 'total_points' => HelperString::numberFloorAndFormat( $StatRecord['total_points'] ), |
||||||
| 168 | 'user_rank' => $StatRecord['total_rank'], |
||||||
| 169 | 'RANK_DIFF' => $StatRecord['total_old_rank'] - $StatRecord['total_rank'], |
||||||
| 170 | |||||||
| 171 | 'STAT_COUNT' => $stat_count, |
||||||
| 172 | 'STAT_SPAN' => $stat_count + 1, |
||||||
| 173 | |||||||
| 174 | // 'GAME_NEWS_OVERVIEW' => $config->game_news_overview, |
||||||
| 175 | |||||||
| 176 | 'SAME_USER' => $same_user, |
||||||
| 177 | )); |
||||||
| 178 | |||||||
| 179 | return $template; |
||||||
| 180 | } |
||||||
| 181 |