Skip to content

Commit e1c155a

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 0710abf commit e1c155a

File tree

126 files changed

+589
-593
lines changed

Some content is hidden

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

126 files changed

+589
-593
lines changed

admin/Default/account_edit_processing.php

+11-10
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

+4-4
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

+8-8
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

+1-1
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

+3-3
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

+2-2
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

+6-6
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

+2-2
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

+2-2
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

+3-4
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()) {

admin/Default/manage_post_editors.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121

2222
// Get the list of current editors for the selected game
2323
$currentEditors = array();
24-
foreach (Globals::getGalacticPostEditorIDs($selectedGameID) as $editorID) {
25-
$editor = SmrPlayer::getPlayer($editorID, $selectedGameID);
24+
foreach (Globals::getGalacticPostEditorPlayerIDs($selectedGameID) as $editorPlayerID) {
25+
$editor = SmrPlayer::getPlayer($editorPlayerID, $selectedGameID);
2626
$currentEditors[] = $editor->getDisplayName();
2727
}
2828
$template->assign('CurrentEditors', $currentEditors);

admin/Default/manage_post_editors_processing.php

+2-3
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,21 @@
1111
$action = Request::get('submit');
1212

1313
try {
14-
$selected_player = SmrPlayer::getPlayerByPlayerID($player_id, $game_id);
14+
$selected_player = SmrPlayer::getPlayer($player_id, $game_id);
1515
} catch (PlayerNotFoundException $e) {
1616
$msg = "<span class='red'>ERROR: </span>" . $e->getMessage();
1717
SmrSession::updateVar('processing_msg', $msg);
1818
forward(create_container('skeleton.php', 'manage_post_editors.php', $var));
1919
}
2020

2121
$name = $selected_player->getDisplayName();
22-
$account_id = $selected_player->getAccountID();
2322
$game = $selected_player->getGame()->getDisplayName();
2423

2524
if ($action == "Assign") {
2625
if ($selected_player->isGPEditor()) {
2726
$msg = "<span class='red'>ERROR: </span>$name is already an editor in game $game!";
2827
} else {
29-
$db->query('INSERT INTO galactic_post_writer (account_id, game_id) VALUES (' . $db->escapeNumber($account_id) . ', ' . $db->escapeNumber($game_id) . ')');
28+
$db->query('INSERT INTO galactic_post_writer (player_id, game_id) VALUES (' . $db->escapeNumber($player_id) . ', ' . $db->escapeNumber($game_id) . ')');
3029
}
3130
} elseif ($action == "Remove") {
3231
if (!$selected_player->isGPEditor()) {

admin/Default/notify_reply.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
$container = create_container('notify_reply_processing.php');
77
transfer('game_id');
8-
transfer('offended');
9-
transfer('offender');
8+
transfer('offended_player_id');
9+
transfer('offender_player_id');
1010
$template->assign('NotifyReplyFormHref', SmrSession::getNewHREF($container));
11-
$offender = getMessagePlayer($var['offender'], $var['game_id']);
12-
$offended = getMessagePlayer($var['offended'], $var['game_id']);
11+
$offender = getMessagePlayer($var['offender_player_id'], $var['game_id']);
12+
$offended = getMessagePlayer($var['offended_player_id'], $var['game_id']);
1313
if (is_object($offender)) {
1414
$template->assign('OffenderAccount', $offender->getAccount());
1515
}

admin/Default/notify_reply_processing.php

+6-7
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
$offendedBanPoints = Request::getInt('offendedBanPoints');
66
if (Request::get('action') == 'Preview messages') {
77
$container = create_container('skeleton.php', 'notify_reply.php');
8-
transfer('offender');
9-
transfer('offended');
8+
transfer('offender_player_id');
9+
transfer('offended_player_id');
1010
transfer('game_id');
11-
transfer('sender_id');
1211
$container['PreviewOffender'] = $offenderReply;
1312
$container['OffenderBanPoints'] = $offenderBanPoints;
1413
$container['PreviewOffended'] = $offendedReply;
@@ -18,24 +17,24 @@
1817

1918

2019
if ($offenderReply != '') {
21-
SmrPlayer::sendMessageFromAdmin($var['game_id'], $var['offender'], $offenderReply);
20+
SmrPlayer::sendMessageFromAdmin($var['game_id'], $var['offender_player_id'], $offenderReply);
2221

2322
//do we have points?
2423
if ($offenderBanPoints > 0) {
2524
$suspicion = 'Inappropriate In-Game Message';
26-
$offenderAccount = SmrAccount::getAccount($var['offender']);
25+
$offenderAccount = SmrPlayer::getPlayer($var['offender_player_id'], $var['game_id'])->getAccount();
2726
$offenderAccount->addPoints($offenderBanPoints, $account, BAN_REASON_BAD_BEHAVIOR, $suspicion);
2827
}
2928
}
3029

3130
if ($offendedReply != '') {
3231
//next message
33-
SmrPlayer::sendMessageFromAdmin($var['game_id'], $var['offended'], $offendedReply);
32+
SmrPlayer::sendMessageFromAdmin($var['game_id'], $var['offended_player_id'], $offendedReply);
3433

3534
//do we have points?
3635
if ($offendedBanPoints > 0) {
3736
$suspicion = 'Inappropriate In-Game Message';
38-
$offenderAccount = SmrAccount::getAccount($var['offended']);
37+
$offenderAccount = SmrPlayer::getPlayer($var['offended_player_id'], $var['game_id'])->getAccount();
3938
$offenderAccount->addPoints($offendedBanPoints, $account, BAN_REASON_BAD_BEHAVIOR, $suspicion);
4039
}
4140
}

admin/Default/notify_view.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
$messages = [];
1111
while ($db->nextRecord()) {
1212
$gameID = $db->getInt('game_id');
13-
$sender = getMessagePlayer($db->getInt('from_id'), $gameID);
14-
$receiver = getMessagePlayer($db->getInt('to_id'), $gameID);
13+
$sender = getMessagePlayer($db->getInt('from_player_id'), $gameID);
14+
$receiver = getMessagePlayer($db->getInt('to_player_id'), $gameID);
1515

1616
$container = create_container('skeleton.php', 'notify_reply.php');
17-
$container['offender'] = $db->getInt('from_id');
18-
$container['offended'] = $db->getInt('to_id');
17+
$container['offender_player_id'] = $db->getInt('from_player_id');
18+
$container['offended_player_'] = $db->getInt('to_player_id');
1919
$container['game_id'] = $gameID;
2020

2121
$offender = $sender;

admin/Default/npc_manage.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@
5353
// Get the existing NPC players for the selected game
5454
$db->query('SELECT * FROM player WHERE game_id=' . $db->escapeNumber($selectedGameID) . ' AND npc=' . $db->escapeBoolean(true));
5555
while ($db->nextRecord()) {
56+
$playerID = $db->getInt('player_id');
5657
$accountID = $db->getInt('account_id');
57-
$npcs[$accountID]['player'] = SmrPlayer::getPlayer($accountID, $selectedGameID, false, $db);
58+
$npcs[$accountID]['player'] = SmrPlayer::getPlayer($playerID, $selectedGameID, false, $db);
5859
}
5960

6061
$template->assign('Npcs', $npcs);

admin/Default/npc_manage_processing.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
$alliance = SmrAlliance::getAllianceByName($allianceName, $gameID);
2727
if (is_null($alliance)) {
2828
$alliance = SmrAlliance::createAlliance($gameID, $allianceName);
29-
$alliance->setLeaderID($npcPlayer->getAccountID());
29+
$alliance->setLeaderPlayerID($npcPlayer->getPlayerID());
3030
$alliance->update();
3131
$alliance->createDefaultRoles();
3232
}

admin/Default/ship_check.php

+2-8
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,12 @@
22

33
$template->assign('PageTopic', 'Ship Integrity Check');
44

5-
$db->query('SELECT * FROM ship_type_support_hardware, player, ship_has_hardware, hardware_type ' .
6-
'WHERE ship_type_support_hardware.ship_type_id = player.ship_type_id AND ' .
7-
'player.account_id = ship_has_hardware.account_id AND ' .
8-
'player.game_id = ship_has_hardware.game_id AND ' .
9-
'ship_type_support_hardware.hardware_type_id = ship_has_hardware.hardware_type_id AND ' .
10-
'ship_has_hardware.hardware_type_id = hardware_type.hardware_type_id AND ' .
11-
'amount > max_amount');
5+
$db->query('SELECT * FROM ship_type_support_hardware JOIN hardware_type USING (hardware_type_id) JOIN ship_has_hardware USING (hardware_type_id) JOIN player USING (player_id, game_id, ship_type_id) WHERE amount > max_amount');
126

137
$excessHardware = [];
148
while ($db->nextRecord()) {
159
$container = create_container('ship_check_processing.php');
16-
$container['account_id'] = $db->getInt('account_id');
10+
$container['player_id'] = $db->getInt('player_id');
1711
$container['hardware'] = $db->getInt('hardware_type_id');
1812
$container['game_id'] = $db->getInt('game_id');
1913
$container['max_amount'] = $db->getInt('max_amount');

0 commit comments

Comments
 (0)