Skip to content

Commit f76e952

Browse files
committed
Redesign database infrastructure
All tables that have an `(account_id, game_id)` primary key will be changed to `(player_id, game_id)`. Pretty much every instance of an account ID is replaced with a player ID in all game-scoped code. This is the first step in a major redesign to associate tables to the most closely-related table, rather than having everything depend on the high-level `account` table. Some features that this change will help facilitate: * Multiple players per account per game (to replace "multi accounts"). * NPCs not needing an associated account. * Free-standing ships/weapons.
1 parent d7448c3 commit f76e952

File tree

124 files changed

+544
-555
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

124 files changed

+544
-555
lines changed

admin/Default/account_edit_processing.php

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,18 @@
139139
if (!empty($delete)) {
140140
foreach ($delete as $game_id => $value) {
141141
if ($value == 'TRUE') {
142+
$deletePlayer = SmrPlayer::getPlayerByAccountID($account_id, $game_id);
143+
$playerID = $deletePlayer->getPlayerID();
144+
$sql = $deletePlayer->getSQL();
145+
142146
// Check for bank transactions into the alliance account
143-
$db->query('SELECT * FROM alliance_bank_transactions WHERE payee_id=' . $db->escapeNumber($account_id) . ' AND game_id=' . $db->escapeNumber($game_id) . ' LIMIT 1');
147+
$db->query('SELECT * FROM alliance_bank_transactions WHERE payee_player_id=' . $db->escapeNumber($playerID) . ' AND game_id=' . $db->escapeNumber($game_id) . ' LIMIT 1');
144148
if ($db->getNumRows() != 0) {
145149
// Can't delete
146150
$actions[] = 'player has made alliance transaction';
147151
continue;
148152
}
149153

150-
$sql = 'account_id=' . $db->escapeNumber($account_id) . ' AND game_id=' . $db->escapeNumber($game_id);
151-
152154
// Check anon accounts for transactions
153155
$db->query('SELECT * FROM anon_bank_transactions WHERE ' . $sql . ' LIMIT 1');
154156
if ($db->getNumRows() != 0) {
@@ -157,18 +159,17 @@
157159
continue;
158160
}
159161

160-
$db->query('DELETE FROM alliance_thread
161-
WHERE sender_id=' . $db->escapeNumber($account_id) . ' AND game_id=' . $db->escapeNumber($game_id));
162+
$db->query('DELETE FROM alliance_thread WHERE ' . $sql);
162163
$db->query('DELETE FROM bounty WHERE ' . $sql);
163164
$db->query('DELETE FROM galactic_post_applications WHERE ' . $sql);
164-
$db->query('DELETE FROM galactic_post_article
165-
WHERE writer_id=' . $db->escapeNumber($account_id) . ' AND game_id=' . $db->escapeNumber($game_id));
165+
$db->query('DELETE FROM galactic_post_article WHERE ' . $sql);
166166
$db->query('DELETE FROM galactic_post_writer WHERE ' . $sql);
167167
$db->query('DELETE FROM message WHERE ' . $sql);
168168
$db->query('DELETE FROM message_notify
169-
WHERE (from_id=' . $db->escapeNumber($account_id) . ' OR to_id=' . $db->escapeNumber($account_id) . ') AND game_id=' . $db->escapeNumber($game_id));
170-
$db->query('UPDATE planet SET owner_id=0,planet_name=\'\',password=\'\',shields=0,drones=0,credits=0,bonds=0
171-
WHERE owner_id=' . $db->escapeNumber($account_id) . ' AND game_id=' . $db->escapeNumber($game_id));
169+
WHERE (from_player_id=' . $db->escapeNumber($playerID) . ' OR to_player_id=' . $db->escapeNumber($playerID) . ') AND game_id=' . $db->escapeNumber($game_id));
170+
$db->query('UPDATE planet SET owner_player_id=0,planet_name=\'\',password=\'\',shields=0,drones=0,credits=0,bonds=0
171+
WHERE ' . $sql);
172+
172173
$db->query('DELETE FROM player_attacks_planet WHERE ' . $sql);
173174
$db->query('DELETE FROM player_attacks_port WHERE ' . $sql);
174175
$db->query('DELETE FROM player_has_alliance_role WHERE ' . $sql);

admin/Default/admin_message_send.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@
1111

1212
if ($gameID != 20000) {
1313
$game = SmrGame::getGame($gameID);
14-
$gamePlayers = [['AccountID' => 0, 'Name' => 'All Players (' . $game->getName() . ')']];
15-
$db->query('SELECT account_id,player_id,player_name FROM player WHERE game_id = ' . $db->escapeNumber($gameID) . ' ORDER BY player_name');
14+
$gamePlayers = [['PlayerID' => 0, 'Name' => 'All Players (' . $game->getName() . ')']];
15+
$db->query('SELECT player_id,player_name FROM player WHERE game_id = ' . $db->escapeNumber($gameID) . ' ORDER BY player_name');
1616
while ($db->nextRecord()) {
1717
$gamePlayers[] = [
18-
'AccountID' => $db->getInt('account_id'),
18+
'PlayerID' => $db->getInt('player_id'),
1919
'Name' => $db->getField('player_name') . ' (' . $db->getInt('player_id') . ')',
2020
];
2121
}
2222
$template->assign('GamePlayers', $gamePlayers);
23-
$template->assign('SelectedAccountID', $var['account_id'] ?? 0);
23+
$template->assign('SelectedPlayerID', $var['player_id'] ?? 0);
2424
}
2525
if (isset($var['preview'])) {
2626
$template->assign('Preview', $var['preview']);

admin/Default/admin_message_send_processing.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
$expire = Request::getFloat('expire');
66
$game_id = $var['SendGameID'];
77
if ($game_id != ALL_GAMES_ID) {
8-
$account_id = Request::getInt('account_id');
8+
$playerID = Request::getInt('player_id');
99
}
1010

1111
if (Request::get('action') == 'Preview message') {
@@ -14,7 +14,7 @@
1414
$container['preview'] = $message;
1515
$container['expire'] = $expire;
1616
if ($game_id != ALL_GAMES_ID) {
17-
$container['account_id'] = $account_id;
17+
$container['player_id'] = $playerID;
1818
}
1919
forward($container);
2020
}
@@ -29,20 +29,20 @@
2929

3030
$receivers = [];
3131
if ($game_id != ALL_GAMES_ID) {
32-
if ($account_id == 0) {
32+
if ($playerID == 0) {
3333
// Send to all players in the requested game
34-
$db->query('SELECT account_id FROM player WHERE game_id = ' . $db->escapeNumber($game_id));
34+
$db->query('SELECT player_id FROM player WHERE game_id = ' . $db->escapeNumber($game_id));
3535
while ($db->nextRecord()) {
36-
$receivers[] = [$game_id, $db->getInt('account_id')];
36+
$receivers[] = [$game_id, $db->getInt('player_id')];
3737
}
3838
} else {
39-
$receivers[] = [$game_id, $account_id];
39+
$receivers[] = [$game_id, $player_id];
4040
}
4141
} else {
4242
//send to all players in games that haven't ended yet
43-
$db->query('SELECT game_id,account_id FROM player JOIN game USING(game_id) WHERE end_time > ' . $db->escapeNumber(TIME));
43+
$db->query('SELECT game_id, player_id FROM player JOIN game USING(game_id) WHERE end_time > ' . $db->escapeNumber(TIME));
4444
while ($db->nextRecord()) {
45-
$receivers[] = [$db->getInt('game_id'), $db->getInt('account_id')];
45+
$receivers[] = [$db->getInt('game_id'), $db->getInt('player_id')];
4646
}
4747
}
4848
// Send the messages

admin/Default/anon_acc_view.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
$db->query('SELECT *
1313
FROM anon_bank_transactions
14-
JOIN player USING(account_id, game_id)
14+
JOIN player USING(player_id, game_id)
1515
WHERE anon_id = '.$db->escapeNumber($anonID) . '
1616
AND game_id = '.$db->escapeNumber($gameID) . '
1717
ORDER BY transaction_id');

admin/Default/box_reply.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66

77
$container = create_container('box_reply_processing.php');
88
transfer('game_id');
9-
transfer('sender_id');
9+
transfer('sender_account_id');
1010
transfer('box_type_id');
1111
$template->assign('BoxReplyFormHref', SmrSession::getNewHREF($container));
12-
$template->assign('Sender', SmrPlayer::getPlayer($var['sender_id'], $var['game_id']));
13-
$template->assign('SenderAccount', SmrAccount::getAccount($var['sender_id']));
12+
$template->assign('Sender', SmrPlayer::getPlayer($var['sender_account_id'], $var['game_id']));
13+
$template->assign('SenderAccount', SmrAccount::getAccount($var['sender_account_id']));
1414
if (isset($var['Preview'])) {
1515
$template->assign('Preview', $var['Preview']);
1616
}

admin/Default/box_reply_processing.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
$container['BanPoints'] = $banPoints;
99
$container['RewardCredits'] = $rewardCredits;
1010
transfer('game_id');
11-
transfer('sender_id');
11+
transfer('sender_account_id');
1212
transfer('box_type_id');
1313
$container['Preview'] = $message;
1414
forward($container);
@@ -19,7 +19,7 @@
1919
//do we have points?
2020
if ($banPoints > 0) {
2121
$suspicion = 'Inappropriate Actions';
22-
$senderAccount = SmrAccount::getAccount($var['sender_id']);
22+
$senderAccount = SmrAccount::getAccount($var['sender_account_id']);
2323
$senderAccount->addPoints($banPoints, $account, BAN_REASON_BAD_BEHAVIOR, $suspicion);
2424
}
2525

admin/Default/box_view.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,17 @@
4141
'ID' => $messageID
4242
);
4343

44-
$senderID = $db->getInt('sender_id');
45-
if ($senderID == 0) {
44+
$senderAccountID = $db->getInt('sender_account_id');
45+
if ($senderAccountID == 0) {
4646
$senderName = 'User not logged in';
4747
} else {
48-
$senderAccount = SmrAccount::getAccount($senderID);
49-
$senderName = $senderAccount->getLogin() . ' (' . $senderID . ')';
48+
$senderAccount = SmrAccount::getAccount($senderAccountID);
49+
$senderName = $senderAccount->getLogin() . ' (' . $senderAccountID . ')';
5050
if ($validGame) {
51-
$senderPlayer = SmrPlayer::getPlayer($senderID, $gameID);
51+
$senderPlayer = SmrPlayer::getPlayerByAccountID($senderAccountID, $gameID);
5252
$senderName .= ' a.k.a ' . $senderPlayer->getDisplayName();
5353
$container = create_container('skeleton.php', 'box_reply.php');
54-
$container['sender_id'] = $senderID;
54+
$container['sender_account_id'] = $senderAccountID;
5555
$container['game_id'] = $gameID;
5656
transfer('box_type_id');
5757
$messages[$messageID]['ReplyHREF'] = SmrSession::getNewHREF($container);

admin/Default/log_anonymous_account.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010

1111
// get all anon bank transactions that are logged in an array
1212
$db->query('SELECT * FROM anon_bank_transactions
13-
JOIN account USING(account_id)
13+
JOIN player USING(player_id)
1414
WHERE account_id IN ('.$db->escapeArray($log_account_ids) . ')
1515
ORDER BY game_id DESC, anon_id ASC');
1616
$anon_logs = [];
1717
while ($db->nextRecord()) {
1818
$transaction = strtolower($db->getField('transaction'));
1919
$anon_logs[$db->getInt('game_id')][$db->getInt('anon_id')][] = [
20-
'login' => $db->getField('login'),
20+
'player_name' => $db->getField('player_name'),
2121
'amount' => number_format($db->getInt('amount')),
2222
'date' => date(DATE_FULL_SHORT, $db->getInt('time')),
2323
'type' => $transaction,

admin/Default/manage_draft_leaders.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@
2121

2222
// Get the list of current draft leaders for the selected game
2323
$currentLeaders = array();
24-
$db->query('SELECT account_id, home_sector_id FROM draft_leaders WHERE game_id=' . $db->escapeNumber($selectedGameID));
24+
$db->query('SELECT player_id, home_sector_id FROM draft_leaders WHERE game_id=' . $db->escapeNumber($selectedGameID));
2525
while ($db->nextRecord()) {
2626
$homeSectorID = $db->getInt('home_sector_id');
27-
$leader = SmrPlayer::getPlayer($db->getInt('account_id'), $selectedGameID);
27+
$leader = SmrPlayer::getPlayer($db->getInt('player_id'), $selectedGameID);
2828
$currentLeaders[] = [
2929
'Name' => $leader->getDisplayName(),
3030
'HomeSectorID' => $homeSectorID === 0 ? 'None' : $homeSectorID,

admin/Default/manage_draft_leaders_processing.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,26 @@
77
SmrSession::updateVar('processing_msg', null);
88

99
// Get the POST variables
10-
$playerId = Request::getInt('player_id');
10+
$playerID = Request::getInt('player_id');
1111
$homeSectorID = Request::getInt('home_sector_id');
1212
$action = Request::get('submit');
1313

1414
try {
15-
$selectedPlayer = SmrPlayer::getPlayerByPlayerID($playerId, $gameId);
15+
$selectedPlayer = SmrPlayer::getPlayer($playerID, $gameId);
1616
} catch (PlayerNotFoundException $e) {
1717
$msg = "<span class='red'>ERROR: </span>" . $e->getMessage();
1818
SmrSession::updateVar('processing_msg', $msg);
1919
forward(create_container('skeleton.php', 'manage_draft_leaders.php', $var));
2020
}
2121

2222
$name = $selectedPlayer->getDisplayName();
23-
$accountId = $selectedPlayer->getAccountID();
2423
$game = $selectedPlayer->getGame()->getDisplayName();
2524

2625
if ($action == "Assign") {
2726
if ($selectedPlayer->isDraftLeader()) {
2827
$msg = "<span class='red'>ERROR: </span>$name is already a draft leader in game $game!";
2928
} else {
30-
$db->query('INSERT INTO draft_leaders (account_id, game_id, home_sector_id) VALUES (' . $db->escapeNumber($accountId) . ', ' . $db->escapeNumber($gameId) . ', ' . $db->escapeNumber($homeSectorID) . ')');
29+
$db->query('INSERT INTO draft_leaders (player_id, game_id, home_sector_id) VALUES (' . $db->escapeNumber($playerID) . ', ' . $db->escapeNumber($gameId) . ', ' . $db->escapeNumber($homeSectorID) . ')');
3130
}
3231
} elseif ($action == "Remove") {
3332
if (!$selectedPlayer->isDraftLeader()) {

0 commit comments

Comments
 (0)