Scrutinizer GitHub App not installed

We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.

Install GitHub App

Failed Conditions
Push — main ( 2c9538...02418a )
by Dan
38s queued 18s
created

checkForAttackMessage()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 17
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 14
nc 4
nop 2
dl 0
loc 17
rs 9.7998
c 1
b 0
f 0
1
<?php declare(strict_types=1);
2
3
use Smr\Database;
4
use Smr\Epoch;
5
6
$template = Smr\Template::getInstance();
7
$session = Smr\Session::getInstance();
8
$var = $session->getCurrentVar();
9
$player = $session->getPlayer();
10
$sector = $player->getSector();
11
12
// If on a planet, forward to planet_main.php
13
if ($player->isLandedOnPlanet()) {
14
	Page::create('planet_main.php', $var)->go();
15
}
16
17
$template->assign('SpaceView', true);
18
19
$template->assign('PageTopic', 'Current Sector: ' . $player->getSectorID() . ' (' . $sector->getGalaxy()->getDisplayName() . ')');
20
21
Menu::navigation($player);
22
23
24
// *******************************************
25
// *
26
// * Sector List
27
// *
28
// *******************************************
29
30
// Sector links
31
$links = [];
32
$links['Up'] = ['ID' => $sector->getLinkUp()];
33
$links['Right'] = ['ID' => $sector->getLinkRight()];
34
$links['Down'] = ['ID' => $sector->getLinkDown()];
35
$links['Left'] = ['ID' => $sector->getLinkLeft()];
36
$links['Warp'] = ['ID' => $sector->getWarp()];
37
38
$unvisited = [];
39
40
$db = Database::getInstance();
41
$dbResult = $db->read('SELECT sector_id FROM player_visited_sector WHERE sector_id IN (' . $db->escapeArray($links) . ') AND ' . $player->getSQL());
42
foreach ($dbResult->records() as $dbRecord) {
43
	$unvisited[$dbRecord->getInt('sector_id')] = true;
44
}
45
46
foreach ($links as $key => $linkArray) {
47
	if ($linkArray['ID'] > 0 && $linkArray['ID'] != $player->getSectorID()) {
48
		if ($player->getLastSectorID() == $linkArray['ID']) {
49
			$class = 'lastVisited';
50
		} elseif (isset($unvisited[$linkArray['ID']])) {
51
			$class = 'unvisited';
52
		} else {
53
			$class = 'visited';
54
		}
55
		$links[$key]['Class'] = $class;
56
	}
57
}
58
59
$template->assign('Sectors', $links);
60
61
doTickerAssigns($template, $player, $db);
62
63
if (!isset($var['UnreadMissions'])) {
64
	$var['UnreadMissions'] = $player->markMissionsRead();
65
}
66
$template->assign('UnreadMissions', $var['UnreadMissions']);
67
68
// *******************************************
69
// *
70
// * Force and other Results
71
// *
72
// *******************************************
73
$game = SmrGame::getGame($player->getGameID());
74
if (!$game->hasStarted()) {
75
	$turnsMessage = 'The game will start in ' . format_time($game->getStartTime() - Epoch::time()) . '!';
76
} else {
77
	$turnsMessage = $player->getTurnsLevel()->message();
78
}
79
$template->assign('TurnsMessage', $turnsMessage);
80
81
$protectionMessage = '';
82
if ($player->getNewbieTurns()) {
83
	if ($player->getNewbieTurns() < 25) {
84
		$protectionMessage = '<span class="blue">PROTECTION</span>: You are almost out of <span class="green">NEWBIE</span> protection.';
85
	} else {
86
		$protectionMessage = '<span class="blue">PROTECTION</span>: You are under <span class="green">NEWBIE</span> protection.';
87
	}
88
} elseif ($player->hasFederalProtection()) {
89
	$protectionMessage = '<span class="blue">PROTECTION</span>: You are under <span class="blue">FEDERAL</span> protection.';
90
} elseif ($sector->offersFederalProtection()) {
91
	$protectionMessage = '<span class="blue">PROTECTION</span>: You are <span class="red">NOT</span> under protection.';
92
}
93
94
if (!empty($protectionMessage)) {
95
	$template->assign('ProtectionMessage', $protectionMessage);
96
}
97
98
//enableProtectionDependantRefresh($template,$player);
99
100
// Do we have an unseen attack message to store in this var?
101
$dbResult = $db->read('SELECT * FROM sector_message WHERE ' . $player->getSQL());
102
if ($dbResult->hasRecord()) {
103
	$var['AttackMessage'] = $dbResult->record()->getString('message');
104
	$db->write('DELETE FROM sector_message WHERE ' . $player->getSQL());
105
}
106
107
if (isset($var['AttackMessage'])) {
108
	checkForAttackMessage($var['AttackMessage'], $player);
109
}
110
if (isset($var['showForceRefreshMessage'])) {
111
	$template->assign('ForceRefreshMessage', getForceRefreshMessage($player));
112
}
113
if (isset($var['MissionMessage'])) {
114
	$template->assign('MissionMessage', $var['MissionMessage']);
115
}
116
if (isset($var['msg'])) {
117
	$template->assign('VarMessage', bbifyMessage($var['msg']));
118
}
119
120
//error msgs take precedence
121
if (isset($var['errorMsg'])) {
122
	$template->assign('ErrorMessage', $var['errorMsg']);
123
}
124
125
// *******************************************
126
// *
127
// * Trade Result
128
// *
129
// *******************************************
130
131
if (!empty($var['trade_msg'])) {
132
	$template->assign('TradeMessage', $var['trade_msg']);
133
}
134
135
// *******************************************
136
// *
137
// * Ports
138
// *
139
// *******************************************
140
141
if ($sector->hasPort()) {
142
	$port = $sector->getPort();
143
	$template->assign('PortIsAtWar', $player->getRelation($port->getRaceID()) < RELATIONS_WAR);
144
}
145
146
// *******************************************
147
// *
148
// * Ships
149
// *
150
// *******************************************
151
$otherPlayers = $sector->getOtherTraders($player);
152
$visiblePlayers = [];
153
$cloakedPlayers = [];
154
foreach ($otherPlayers as $accountID => $otherPlayer) {
155
	if ($player->canSee($otherPlayer)) {
156
		$visiblePlayers[$accountID] = $otherPlayer;
157
	} else {
158
		$cloakedPlayers[$accountID] = $otherPlayer;
159
	}
160
}
161
$template->assign('VisiblePlayers', $visiblePlayers);
162
$template->assign('CloakedPlayers', $cloakedPlayers);
163
$template->assign('SectorPlayersLabel', 'Ships');
164
165
166
function getForceRefreshMessage(AbstractSmrPlayer $player): string {
167
	$db = Database::getInstance();
168
	$dbResult = $db->read('SELECT refresh_at FROM sector_has_forces WHERE refresh_at > ' . $db->escapeNumber(Epoch::time()) . ' AND sector_id = ' . $db->escapeNumber($player->getSectorID()) . ' AND game_id = ' . $db->escapeNumber($player->getGameID()) . ' AND refresher = ' . $db->escapeNumber($player->getAccountID()) . ' ORDER BY refresh_at DESC LIMIT 1');
169
	if ($dbResult->hasRecord()) {
170
		$remainingTime = $dbResult->record()->getInt('refresh_at') - Epoch::time();
171
		$forceRefreshMessage = '<span class="green">REFRESH</span>: All forces will be refreshed in ' . $remainingTime . ' seconds.';
172
	} else {
173
		$forceRefreshMessage = '<span class="green">REFRESH</span>: All forces have finished refreshing.';
174
	}
175
	return $forceRefreshMessage;
176
}
177
178
function checkForAttackMessage(string $msg, AbstractSmrPlayer $player): void {
179
	$contains = 0;
180
	$msg = str_replace('[ATTACK_RESULTS]', '', $msg, $contains);
181
	if ($contains > 0) {
182
		// $msg now contains only the log_id, if there is one
183
		$logID = str2int($msg);
0 ignored issues
show
Bug introduced by
The function str2int was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

183
		$logID = /** @scrutinizer ignore-call */ str2int($msg);
Loading history...
184
185
		$template = Smr\Template::getInstance();
186
		$db = Database::getInstance();
187
		$dbResult = $db->read('SELECT sector_id,result,type FROM combat_logs WHERE log_id=' . $db->escapeNumber($logID) . ' LIMIT 1');
188
		if ($dbResult->hasRecord()) {
189
			$dbRecord = $dbResult->record();
190
			if ($player->getSectorID() == $dbRecord->getInt('sector_id')) {
191
				$results = $dbRecord->getObject('result', true);
192
				$template->assign('AttackResultsType', $dbRecord->getString('type'));
193
				$template->assign('AttackResults', $results);
194
				$template->assign('AttackLogLink', linkCombatLog($logID));
195
			}
196
		}
197
	}
198
}
199