Files
TravianZ/Templates/Alliance/attacks.tpl
T
Catalin Novgorodschi a02be51969 Incremental Refactor Templates
Incremental Refactor Templates
2026-05-06 13:16:54 +03:00

203 lines
6.4 KiB
Smarty

<?php
#################################################################################
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## --------------------------------------------------------------------------- ##
## Project: TravianZ (Refactor incremental) ##
## File: attacks.tpl ##
## Description: Alliance military events ##
## Improvements: ##
## - Secure GET handling ##
## - Reduced duplicated logic ##
## - Cleaner SQL usage ##
## - Safer output (XSS protection) ##
## - Simplified condition branches ##
#################################################################################
// fallback alliance id
if (!isset($aid)) {
$aid = $session->alliance;
}
// load alliance info
$allianceinfo = $database->getAlliance($aid);
// header
echo "<h1>" . htmlspecialchars($allianceinfo['tag'], ENT_QUOTES, 'UTF-8') .
" - " .
htmlspecialchars($allianceinfo['name'], ENT_QUOTES, 'UTF-8') .
"</h1>";
// menu
include("alli_menu.tpl");
// safe filter input
$f = isset($_GET['f']) ? (int)$_GET['f'] : 0;
$t = isset($_GET['t']) ? (int)$_GET['t'] : 0;
?>
<div class="clear"></div>
<h4 class="chartHeadline">Military events</h4>
<div id="submenu">
<!-- DEFENDER -->
<a href="allianz.php?s=3&f=32">
<img src="img/x.gif"
class="<?php echo ($f === 32 ? 'active btn_def' : 'btn_def'); ?>"
alt="Defender" title="Defender" />
</a>
<!-- ATTACKER -->
<a href="allianz.php?s=3&f=31">
<img src="img/x.gif"
class="<?php echo ($f === 31 ? 'active btn_off' : 'btn_off'); ?>"
alt="Attacker" title="Attacker" />
</a>
</div>
<?php
// filtered view
if ($f === 31 || $f === 32) {
include "Templates/Alliance/attack-filtered.tpl";
} else {
// main query
$allyId = (int)$session->alliance;
$sql = mysqli_query(
$database->dblink,
"SELECT * FROM " . TB_PREFIX . "ndata
WHERE ally = $allyId
AND (
ntype < 8
OR (ntype > 17 AND ntype < 22)
OR (ntype = 22 AND ally = $allyId)
OR (ntype = 23 AND ally != $allyId)
)
ORDER BY time DESC
LIMIT 20"
);
$outputList = "";
if (!$sql || mysqli_num_rows($sql) == 0) {
$outputList .= "<tr><td colspan=\"4\" class=\"none\">There are no reports available.</td></tr>";
} else {
while ($row = mysqli_fetch_assoc($sql)) {
$dataarray = explode(",", $row['data']);
$id = (int)$row['id'];
$ally = (int)$row['ally'];
$ntype = (int)$row['ntype'];
$time = (int)$row['time'];
$topic = $row['topic'];
$toWref = (int)$row['toWref'];
// type mapping
$type2 = ($ntype >= 4 && $ntype <= 7) ? 32 : 31;
$type = ($t === 5) ? (int)$row['archive'] : $ntype;
if ($type == 23) {
$type = 22;
}
// scout icon logic
$isScout = ($type >= 18 && $type <= 22);
// attacker / defender
$attackerId = (int)$dataarray[0];
$defenderId = ($type != 22) ? (int)$dataarray[28] : (int)$dataarray[2];
$attackerName = $database->getUserField($attackerId, "username", 0);
$defenderName = $database->getUserField($defenderId, "username", 0);
// alliance resolve (simplified safe fallback)
if ($ntype == 0) {
$isOasis = $database->isVillageOases($toWref);
if ($isOasis == 0) {
$owner = ($toWref != $village->wid)
? $database->getVillageField($toWref, "owner")
: $database->getVillageField($dataarray[1], "owner");
} else {
$owner = ($toWref != $village->wid)
? $database->getOasisField($toWref, "owner")
: $database->getOasisField($dataarray[1], "owner");
}
$getUserAlly = $database->getUserField($owner, "alliance", 0);
} else {
$getUserAlly = $database->getUserField($defenderId, "alliance", 0);
}
$allyName = "-";
if ($getUserAlly) {
$allyName = "<a href=\"allianz.php?aid=" . (int)$getUserAlly . "\">"
. htmlspecialchars($database->getAllianceName($getUserAlly), ENT_QUOTES, 'UTF-8')
. "</a>";
}
// date
$date = $generator->procMtime($time);
// attack/scout label
$nn = ($ntype >= 18 && $ntype <= 21) ? " scouts " : " attacks ";
// render row
$outputList .= "<tr>";
$outputList .= "<td class=\"sub\">";
$outputList .= "<a href=\"allianz.php?s=3&f=$type2\">";
if ($isScout) {
$outputList .= "<img src=\"gpack/travian_default/img/scouts/$type.gif\" title=\"" .
htmlspecialchars($topic, ENT_QUOTES, 'UTF-8') . "\" />";
} else {
$outputList .= "<img src=\"img/x.gif\" class=\"iReport iReport$type\" title=\"" .
htmlspecialchars($topic, ENT_QUOTES, 'UTF-8') . "\">";
}
$outputList .= "</a>";
$outputList .= "<div><a href=\"berichte.php?id=$id&aid=$ally\">";
$outputList .= htmlspecialchars($attackerName, ENT_QUOTES, 'UTF-8');
$outputList .= $nn;
$outputList .= htmlspecialchars($defenderName, ENT_QUOTES, 'UTF-8');
$outputList .= "</a></div></td>";
$outputList .= "<td class=\"al\">" . $allyName . "</td>";
$outputList .= "<td class=\"dat\">" . $date[0] . " " . date('H:i', $time) . "</td>";
$outputList .= "</tr>";
}
}
?>
<table cellpadding="1" cellspacing="1" id="offs">
<thead>
<tr>
<td>Player</td>
<td>Alliance</td>
<td>Date</td>
</tr>
</thead>
<tbody>
<?php echo $outputList; ?>
</tbody>
</table>
<?php } ?>