1
|
|
|
<?php declare(strict_types=1); |
2
|
|
|
|
3
|
|
|
namespace Smr\Pages\Account\HistoryGames; |
4
|
|
|
|
5
|
|
|
use Smr\Database; |
6
|
|
|
use Smr\Template; |
7
|
|
|
use SmrAccount; |
8
|
|
|
|
9
|
|
|
class Summary extends HistoryPage { |
10
|
|
|
|
11
|
|
|
public string $file = 'history_games.php'; |
12
|
|
|
|
13
|
|
|
protected function buildHistory(SmrAccount $account, Template $template): void { |
14
|
|
|
//topic |
15
|
|
|
$game_name = $this->historyGameName; |
16
|
|
|
$game_id = $this->historyGameID; |
17
|
|
|
$template->assign('PageTopic', 'Old SMR Game : ' . $game_name); |
18
|
|
|
$this->addMenu($template); |
19
|
|
|
|
20
|
|
|
$db = Database::getInstance(); |
21
|
|
|
$dbResult = $db->read('SELECT start_date, type, end_date, game_name, speed, game_id ' . |
22
|
|
|
'FROM game WHERE game_id = ' . $db->escapeNumber($game_id)); |
23
|
|
|
$dbRecord = $dbResult->record(); |
24
|
|
|
$template->assign('GameName', $game_name); |
25
|
|
|
$template->assign('Start', date($account->getDateFormat(), $dbRecord->getInt('start_date'))); |
26
|
|
|
$template->assign('End', date($account->getDateFormat(), $dbRecord->getInt('end_date'))); |
27
|
|
|
$template->assign('Type', $dbRecord->getString('type')); |
28
|
|
|
$template->assign('Speed', $dbRecord->getFloat('speed')); |
29
|
|
|
|
30
|
|
|
$dbResult = $db->read('SELECT count(*), max(experience), max(alignment), min(alignment), max(kills) FROM player WHERE game_id = ' . $db->escapeNumber($game_id)); |
31
|
|
|
if ($dbResult->hasRecord()) { |
32
|
|
|
$dbRecord = $dbResult->record(); |
33
|
|
|
$template->assign('NumPlayers', $dbRecord->getInt('count(*)')); |
34
|
|
|
$template->assign('MaxExp', $dbRecord->getInt('max(experience)')); |
35
|
|
|
$template->assign('MaxAlign', $dbRecord->getInt('max(alignment)')); |
36
|
|
|
$template->assign('MinAlign', $dbRecord->getInt('min(alignment)')); |
37
|
|
|
$template->assign('MaxKills', $dbRecord->getInt('max(kills)')); |
38
|
|
|
} |
39
|
|
|
$dbResult = $db->read('SELECT count(*) FROM alliance WHERE game_id = ' . $db->escapeNumber($game_id)); |
40
|
|
|
$template->assign('NumAlliances', $dbResult->record()->getInt('count(*)')); |
41
|
|
|
|
42
|
|
|
// Get linked player information, if available |
43
|
|
|
$oldAccountID = $account->getOldAccountID($this->historyDatabase); |
44
|
|
|
$dbResult = $db->read('SELECT alliance_id FROM player WHERE game_id = ' . $db->escapeNumber($game_id) . ' AND account_id = ' . $db->escapeNumber($oldAccountID)); |
45
|
|
|
$oldAllianceID = $dbResult->hasRecord() ? $dbResult->record()->getInt('alliance_id') : 0; |
46
|
|
|
|
47
|
|
|
$playerExp = []; |
48
|
|
|
$dbResult = $db->read('SELECT * FROM player WHERE game_id = ' . $db->escapeNumber($game_id) . ' ORDER BY experience DESC LIMIT 10'); |
49
|
|
|
foreach ($dbResult->records() as $dbRecord) { |
50
|
|
|
$playerExp[] = [ |
51
|
|
|
'bold' => $dbRecord->getInt('account_id') == $oldAccountID ? 'class="bold"' : '', |
52
|
|
|
'exp' => $dbRecord->getInt('experience'), |
53
|
|
|
'name' => $dbRecord->getString('player_name'), |
54
|
|
|
]; |
55
|
|
|
} |
56
|
|
|
$template->assign('PlayerExp', $playerExp); |
57
|
|
|
|
58
|
|
|
$playerKills = []; |
59
|
|
|
$dbResult = $db->read('SELECT * FROM player WHERE game_id = ' . $db->escapeNumber($game_id) . ' ORDER BY kills DESC LIMIT 10'); |
60
|
|
|
foreach ($dbResult->records() as $dbRecord) { |
61
|
|
|
$playerKills[] = [ |
62
|
|
|
'bold' => $dbRecord->getInt('account_id') == $oldAccountID ? 'class="bold"' : '', |
63
|
|
|
'kills' => $dbRecord->getInt('kills'), |
64
|
|
|
'name' => $dbRecord->getString('player_name'), |
65
|
|
|
]; |
66
|
|
|
} |
67
|
|
|
$template->assign('PlayerKills', $playerKills); |
68
|
|
|
|
69
|
|
|
//now for the alliance stuff |
70
|
|
|
$allianceExp = []; |
71
|
|
|
$dbResult = $db->read('SELECT SUM(experience) as exp, alliance_name, alliance_id |
72
|
|
|
FROM player JOIN alliance USING (game_id, alliance_id) |
73
|
|
|
WHERE game_id = ' . $db->escapeNumber($game_id) . ' GROUP BY alliance_id ORDER BY exp DESC LIMIT 10'); |
74
|
|
|
foreach ($dbResult->records() as $dbRecord) { |
75
|
|
|
$alliance = htmlentities($dbRecord->getString('alliance_name')); |
76
|
|
|
$id = $dbRecord->getInt('alliance_id'); |
77
|
|
|
$container = new AllianceDetail($this->historyDatabase, $this->historyGameID, $this->historyGameName, $id, $this); |
78
|
|
|
$allianceExp[] = [ |
79
|
|
|
'bold' => $dbRecord->getInt('alliance_id') == $oldAllianceID ? 'class="bold"' : '', |
80
|
|
|
'exp' => $dbRecord->getInt('exp'), |
81
|
|
|
'link' => create_link($container, $alliance), |
82
|
|
|
]; |
83
|
|
|
} |
84
|
|
|
$template->assign('AllianceExp', $allianceExp); |
85
|
|
|
|
86
|
|
|
$allianceKills = []; |
87
|
|
|
$dbResult = $db->read('SELECT kills, alliance_name, alliance_id FROM alliance WHERE game_id = ' . $db->escapeNumber($game_id) . ' ORDER BY kills DESC LIMIT 10'); |
88
|
|
|
foreach ($dbResult->records() as $dbRecord) { |
89
|
|
|
$alliance = htmlentities($dbRecord->getString('alliance_name')); |
90
|
|
|
$id = $dbRecord->getInt('alliance_id'); |
91
|
|
|
$container = new AllianceDetail($this->historyDatabase, $this->historyGameID, $this->historyGameName, $id, $this); |
92
|
|
|
$allianceKills[] = [ |
93
|
|
|
'bold' => $dbRecord->getInt('alliance_id') == $oldAllianceID ? 'class="bold"' : '', |
94
|
|
|
'kills' => $dbRecord->getInt('kills'), |
95
|
|
|
'link' => create_link($container, $alliance), |
96
|
|
|
]; |
97
|
|
|
} |
98
|
|
|
$template->assign('AllianceKills', $allianceKills); |
99
|
|
|
} |
100
|
|
|
|
101
|
|
|
} |
102
|
|
|
|