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
Pull Request — main (#1487)
by Dan
06:01
created

checkForForceRefreshMessage()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 23
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 19
c 0
b 0
f 0
nc 4
nop 1
dl 0
loc 23
rs 9.6333

1 Method

Rating   Name   Duplication   Size   Complexity  
A getForceRefreshMessage() 0 10 2
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