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 — master (#1094)
by Dan
04:47
created

checkForAttackMessage()   B

Complexity

Conditions 6
Paths 6

Size

Total Lines 25
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
cc 6
eloc 20
c 2
b 1
f 0
nc 6
nop 1
dl 0
loc 25
rs 8.9777
1
<?php declare(strict_types=1);
2
3
$template = Smr\Template::getInstance();
4
$session = Smr\Session::getInstance();
5
$var = $session->getCurrentVar();
6
$player = $session->getPlayer();
7
$sector = $player->getSector();
8
9
// If on a planet, forward to planet_main.php
10
if ($player->isLandedOnPlanet()) {
11
	Page::create('skeleton.php', 'planet_main.php', $var)->go();
12
}
13
14
$template->assign('SpaceView', true);
15
16
$template->assign('PageTopic', 'Current Sector: ' . $player->getSectorID() . ' (' . $sector->getGalaxy()->getDisplayName() . ')');
17
18
Menu::navigation($player);
19
20
21
// *******************************************
22
// *
23
// * Sector List
24
// *
25
// *******************************************
26
27
// Sector links
28
$links = array();
29
$links['Up'] = array('ID'=>$sector->getLinkUp());
30
$links['Right'] = array('ID'=>$sector->getLinkRight());
31
$links['Down'] = array('ID'=>$sector->getLinkDown());
32
$links['Left'] = array('ID'=>$sector->getLinkLeft());
33
$links['Warp'] = array('ID'=>$sector->getWarp());
34
35
$unvisited = array();
36
37
$db = Smr\Database::getInstance();
38
$dbResult = $db->read('SELECT sector_id FROM player_visited_sector WHERE sector_id IN (' . $db->escapeArray($links) . ') AND ' . $player->getSQL());
39
foreach ($dbResult->records() as $dbRecord) {
40
	$unvisited[$dbRecord->getInt('sector_id')] = TRUE;
41
}
42
43
foreach ($links as $key => $linkArray) {
44
	if ($linkArray['ID'] > 0 && $linkArray['ID'] != $player->getSectorID()) {
45
		if ($player->getLastSectorID() == $linkArray['ID']) {
46
			$class = 'lastVisited';
47
		} elseif (isset($unvisited[$linkArray['ID']])) {
48
			$class = 'unvisited';
49
		} else {
50
			$class = 'visited';
51
		}
52
		$links[$key]['Class'] = $class;
53
	}
54
}
55
56
$template->assign('Sectors', $links);
57
58
doTickerAssigns($template, $player, $db);
59
60
if (!isset($var['UnreadMissions'])) {
61
	$unreadMissions = $player->markMissionsRead();
62
	$session->updateVar('UnreadMissions', $unreadMissions);
63
}
64
$template->assign('UnreadMissions', $var['UnreadMissions']);
65
66
// *******************************************
67
// *
68
// * Force and other Results
69
// *
70
// *******************************************
71
$game = SmrGame::getGame($player->getGameID());
72
if (!$game->hasStarted()) {
73
	$turnsMessage = 'The game will start in ' . format_time($game->getStartTime() - Smr\Epoch::time()) . '!';
74
} else {
75
	$turnsMessage = match($player->getTurnsLevel()) {
76
		'NONE' => '<span class="red">WARNING</span>: You have run out of turns!',
77
		'LOW' => '<span class="red">WARNING</span>: You are almost out of turns!',
78
		'MEDIUM' => '<span class="yellow">WARNING</span>: You are running out of turns!',
79
		'HIGH' => '',
80
	};
81
}
82
$template->assign('TurnsMessage', $turnsMessage);
83
84
$protectionMessage = '';
85
if ($player->getNewbieTurns()) {
86
	if ($player->getNewbieTurns() < 25) {
87
		$protectionMessage = '<span class="blue">PROTECTION</span>: You are almost out of <span class="green">NEWBIE</span> protection.';
88
	} else {
89
		$protectionMessage = '<span class="blue">PROTECTION</span>: You are under <span class="green">NEWBIE</span> protection.';
90
	}
91
} elseif ($player->hasFederalProtection()) {
92
	$protectionMessage = '<span class="blue">PROTECTION</span>: You are under <span class="blue">FEDERAL</span> protection.';
93
} elseif ($sector->offersFederalProtection()) {
94
	$protectionMessage = '<span class="blue">PROTECTION</span>: You are <span class="red">NOT</span> under protection.';
95
}
96
97
if (!empty($protectionMessage)) {
98
	$template->assign('ProtectionMessage', $protectionMessage);
99
}
100
101
//enableProtectionDependantRefresh($template,$player);
102
103
$dbResult = $db->read('SELECT * FROM sector_message WHERE ' . $player->getSQL());
104
if ($dbResult->hasRecord()) {
105
	$msg = $dbResult->record()->getString('message');
106
	$db->write('DELETE FROM sector_message WHERE ' . $player->getSQL());
107
	checkForForceRefreshMessage($msg);
108
	checkForAttackMessage($msg);
109
}
110
if (isset($var['AttackMessage'])) {
111
	$msg = $var['AttackMessage'];
112
	checkForAttackMessage($msg);
113
}
114
if (isset($var['MissionMessage'])) {
115
	$template->assign('MissionMessage', $var['MissionMessage']);
116
}
117
if (isset($var['msg'])) {
118
	checkForForceRefreshMessage($var['msg']);
119
	$template->assign('VarMessage', bbifyMessage($var['msg']));
120
}
121
122
//error msgs take precedence
123
if (isset($var['errorMsg'])) {
124
	$template->assign('ErrorMessage', $var['errorMsg']);
125
}
126
127
// *******************************************
128
// *
129
// * Trade Result
130
// *
131
// *******************************************
132
133
if (!empty($var['trade_msg'])) {
134
	$template->assign('TradeMessage', $var['trade_msg']);
135
}
136
137
// *******************************************
138
// *
139
// * Ports
140
// *
141
// *******************************************
142
143
if ($sector->hasPort()) {
144
	$port = $sector->getPort();
145
	$template->assign('PortIsAtWar', $player->getRelation($port->getRaceID()) < RELATIONS_WAR);
146
}
147
148
function checkForForceRefreshMessage(string &$msg) : void {
149
	$contains = 0;
150
	$msg = str_replace('[Force Check]', '', $msg, $contains);
151
	if ($contains > 0) {
152
		$template = Smr\Template::getInstance();
153
		if (!$template->hasTemplateVar('ForceRefreshMessage')) {
154
			$db = Smr\Database::getInstance();
155
			$player = Smr\Session::getInstance()->getPlayer();
156
157
			$forceRefreshMessage = '';
158
			$dbResult = $db->read('SELECT refresh_at FROM sector_has_forces WHERE refresh_at >= ' . $db->escapeNumber(Smr\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');
159
			if ($dbResult->hasRecord()) {
160
				$remainingTime = $dbResult->record()->getInt('refresh_at') - Smr\Epoch::time();
161
				$forceRefreshMessage = '<span class="green">REFRESH</span>: All forces will be refreshed in ' . $remainingTime . ' seconds.';
162
				$db->write('REPLACE INTO sector_message (game_id, account_id, message) VALUES (' . $db->escapeNumber($player->getGameID()) . ', ' . $db->escapeNumber($player->getAccountID()) . ', \'[Force Check]\')');
163
			} else {
164
				$forceRefreshMessage = '<span class="green">REFRESH</span>: All forces have finished refreshing.';
165
			}
166
			$template->assign('ForceRefreshMessage', $forceRefreshMessage);
167
		}
168
	}
169
}
170
171
function checkForAttackMessage(string &$msg) : void {
172
	$contains = 0;
173
	$msg = str_replace('[ATTACK_RESULTS]', '', $msg, $contains);
174
	if ($contains > 0) {
175
		// $msg now contains only the log_id, if there is one
176
		if (!is_numeric($msg)) {
177
			throw new Exception('Improperly formatted attack message: ' . $msg);
178
		}
179
		$logID = (int)$msg;
180
181
		$session = Smr\Session::getInstance();
182
		$session->updateVar('AttackMessage', '[ATTACK_RESULTS]' . $msg);
183
184
		$template = Smr\Template::getInstance();
185
		if (!$template->hasTemplateVar('AttackResults')) {
186
			$db = Smr\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
				$player = $session->getPlayer();
191
				if ($player->getSectorID() == $dbRecord->getInt('sector_id')) {
192
					$results = $dbRecord->getObject('result', true);
193
					$template->assign('AttackResultsType', $dbRecord->getField('type'));
194
					$template->assign('AttackResults', $results);
195
					$template->assign('AttackLogLink', linkCombatLog($logID));
196
				}
197
			}
198
		}
199
	}
200
}
201