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 — master ( f174b5...646f17 )
by Dan
21s queued 18s
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