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

362 lines
9.5 KiB
Smarty

<?php
#################################################################################
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## --------------------------------------------------------------------------- ##
## Project: TravianZ ##
## Version: 06.05.2026 ##
## Filename overview.tpl ##
## Refactored by Shadow ##
## License: TravianZ Project ##
## Copyright: TravianZ (c) 2010-2026. All rights reserved. ##
## URLs: http://travian.shadowss.ro ##
## Source code: http://github.com/Shadowss/TravianZ/ ##
## ##
#################################################################################
// =========================
// SECURITY: sanitize UID
// =========================
$uid = isset($_GET['uid']) ? (int)$_GET['uid'] : (int)$session->uid;
// =========================
// RANK PROCESS
// =========================
$ranking->procRankReq($_GET);
// ensure safe overwrite
$_GET['uid'] = $uid;
// =========================
// USER DATA
// =========================
$displayarray = $database->getUserArray($uid, 1);
$varmedal = $database->getProfileMedal($uid);
// =========================
// PROFILE SAFE MERGE
// =========================
// marker legacy (păstrat pentru compatibilitate DB)
$profileSeparator = md5('skJkev3');
// păstrăm exact formatul original (IMPORTANT pentru medal.php)
$profiel = $displayarray['desc1'] . $profileSeparator . $displayarray['desc2'];
// medal.php se ocupă de procesare (NU îi strica inputul)
require("medal.php");
// split DUPĂ medal processing
$profiel = explode($profileSeparator, $profiel);
// safety fallback
if (!isset($profiel[0])) $profiel[0] = '';
if (!isset($profiel[1])) $profiel[1] = '';
// =========================
// VILLAGES + POPULATION
// =========================
$varray = $database->getProfileVillages($uid);
$totalpop = 0;
foreach ($varray as $vil) {
$totalpop += (int)$vil['pop'];
}
?>
<h1>Player profile</h1>
<?php
// =========================
// MENU SWITCH (SELF vs SIT)
// =========================
if ($uid == $session->uid) {
if ($session->sit == 0) {
include("menu.tpl");
} else {
include("menu2.tpl");
}
}
?>
<table id="profile" cellpadding="1" cellspacing="1">
<thead>
<tr>
<th colspan="2">
Player <?php echo htmlspecialchars($displayarray['username'], ENT_QUOTES, 'UTF-8'); ?>
</th>
</tr>
<?php
// =========================
// STATUS FLAGS
// =========================
if ($displayarray['access'] == ADMIN)
echo "<tr><th colspan='2'><font color='Red'><center><b>This player is Admin.</b></center></font></th></tr>";
if ($displayarray['access'] == MULTIHUNTER)
echo "<tr><th colspan='2'><font color='Blue'><center><b>This player is Multihunter.</b></center></font></th></tr>";
if ($displayarray['access'] == BANNED)
echo "<tr><th colspan='2'><font color='Green'><center><b>This player is BANNED.</b></center></font></th></tr>";
if ($displayarray['vac_mode'] == 1)
echo "<tr><th colspan='2'><font color='Maroon'><center><b>This player is on VACATION.</b></center></font></th></tr>";
?>
<tr>
<td>Details</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td class="empty"></td>
<td class="empty"></td>
</tr>
<tr>
<td class="details">
<table cellpadding="0" cellspacing="0">
<?php
if ($displayarray['access'] == BANNED) {
echo "<tr><td colspan='2'><center><b>Banned</b></center></td></tr>";
}
?>
<tr>
<th>Rank</th>
<td><?php echo $ranking->getUserRank($displayarray['id']); ?></td>
</tr>
<tr>
<th>Tribe</th>
<td>
<?php
$tribeArrays = [TRIBE1, TRIBE2, TRIBE3, TRIBE4, TRIBE5];
echo $tribeArrays[$displayarray['tribe'] - 1];
?>
</td>
</tr>
<tr>
<th>Alliance</th>
<td>
<?php
if ($displayarray['alliance'] == 0) {
echo "-";
} else {
$displayalliance = $database->getAllianceName($displayarray['alliance']);
echo '<a href="allianz.php?aid=' . (int)$displayarray['alliance'] . '">' .
htmlspecialchars($displayalliance, ENT_QUOTES, 'UTF-8') .
'</a>';
}
?>
</td>
</tr>
<tr>
<th>Villages</th>
<td><?php echo count($varray); ?></td>
</tr>
<tr>
<th>Population</th>
<td><?php echo (int)$totalpop; ?></td>
</tr>
<?php
// =========================
// AGE
// =========================
if (!empty($displayarray['birthday'])) {
$age = date('Y') - substr($displayarray['birthday'], 0, 4);
if ((date('m') - substr($displayarray['birthday'], 5, 2)) < 0) $age--;
elseif ((date('m') - substr($displayarray['birthday'], 5, 2)) == 0) {
if (date('d') < substr($displayarray['birthday'], 8, 2)) $age--;
}
echo "<tr><th>Age</th><td>$age</td></tr>";
}
// =========================
// GENDER
// =========================
if (!empty($displayarray['gender'])) {
$gender = ($displayarray['gender'] == 1) ? "Male" : "Female";
echo "<tr><th>Gender</th><td>$gender</td></tr>";
}
// =========================
// LOCATION
// =========================
if (!empty($displayarray['location'])) {
echo "<tr><th>Location</th><td>" .
htmlspecialchars($displayarray['location'], ENT_QUOTES, 'UTF-8') .
"</td></tr>";
}
?>
<tr>
<td colspan="2" class="empty"></td>
</tr>
<tr>
<?php
// =========================
// ACTION BUTTONS
// =========================
// Natar tribe (de obicei 5 în Travian-like setups)
$isNatar = (isset($displayarray['tribe']) && $displayarray['tribe'] == 5);
// Nature special account (fixed UID = 2)
$isNature = ($uid == 2);
if ($uid == $session->uid) {
// =========================
// OWN PROFILE ACTION
// =========================
if ($session->sit == 0) {
echo '<td colspan="2"><a href="spieler.php?s=1">&raquo; Change profile</a></td>';
} else {
echo '<td colspan="2"><span class="none"><b>&raquo; Change profile</b></span></td>';
}
} else {
// =========================
// BLOCK SYSTEM ACCOUNTS
// =========================
if ($isNatar || $isNature) {
echo '<td colspan="2"><span class="none"><b>&raquo; Write message not available</b></span></td>';
} else {
echo '<td colspan="2"><a href="nachrichten.php?t=1&amp;id=' . (int)$uid . '">&raquo; Write message</a></td>';
}
}
?>
</tr>
<tr>
<td colspan="2" class="desc2">
<div class="desc2div">
<?php echo nl2br($profiel[0]); ?>
</div>
</td>
</tr>
</table>
</td>
<td class="desc1">
<div class="desc1div">
<?php echo nl2br($profiel[1]); ?>
</div>
</td>
</tr>
</tbody>
</table>
<!-- ========================= VILLAGES ========================= -->
<table cellpadding="1" cellspacing="1" id="villages">
<thead>
<tr>
<th colspan="<?php echo (defined('NEW_FUNCTIONS_OASIS') && NEW_FUNCTIONS_OASIS) ? 4 : 3; ?>">
Villages
</th>
</tr>
<tr>
<td>Name</td>
<?php if (defined('NEW_FUNCTIONS_OASIS') && NEW_FUNCTIONS_OASIS) { ?>
<td>Oasis</td>
<?php } ?>
<td>Inhabitants</td>
<td>Coordinates</td>
</tr>
</thead>
<tbody>
<?php
foreach ($varray as $vil) {
$hasArtifact = $database->villageHasArtefact($vil['wref']);
$coor = $database->getCoor($vil['wref']);
echo "<tr><td class=\"nam\">
<a href=\"karte.php?d=" . (int)$vil['wref'] . "&amp;c=" . $generator->getMapCheck($vil['wref']) . "\">"
. htmlspecialchars($vil['name'], ENT_QUOTES, 'UTF-8') .
"</a>";
if ($vil['capital'] == 1) echo "<span class=\"none3\"> (Capital)</span>";
if (defined('NEW_FUNCTIONS_DISPLAY_ARTIFACT') && NEW_FUNCTIONS_DISPLAY_ARTIFACT) {
if ($hasArtifact) echo "<span class=\"none3\"> (Artifact)</span>";
}
if (defined('NEW_FUNCTIONS_DISPLAY_WONDER') && NEW_FUNCTIONS_DISPLAY_WONDER) {
if ($vil['natar'] == 1) echo "<span class=\"none3\"> (WoW)</span>";
}
// OASIS
if (defined('NEW_FUNCTIONS_OASIS') && NEW_FUNCTIONS_OASIS) {
echo "<td class=\"hab\">";
$oases = $database->getOasis($vil['wref']);
foreach ($oases as $oasis) {
switch ($oasis['type']) {
case 1:
case 2: echo "<img class='r100' src='img/x.gif' title='+25% Lumber'> "; break;
case 3: echo "<img class='r200' src='img/x.gif' title='+25% Lumber +25% Crop'> "; break;
case 4:
case 5: echo "<img class='r400' src='img/x.gif' title='+25% Clay'> "; break;
case 6: echo "<img class='r500' src='img/x.gif' title='+25% Clay +25% Crop'> "; break;
case 7:
case 8: echo "<img class='r700' src='img/x.gif' title='+25% Iron'> "; break;
case 9: echo "<img class='r800' src='img/x.gif' title='+25% Iron +25% Crop'> "; break;
case 10:
case 11: echo "<img class='r1000' src='img/x.gif' title='+25% Crop'> "; break;
case 12: echo "<img class='r1100' src='img/x.gif' title='+50% Crop'> "; break;
}
}
echo "</td>";
}
echo "<td class=\"hab\">" . (int)$vil['pop'] . "</td>
<td class=\"aligned_coords\">
<div class=\"cox\">(" . $coor['x'] . "</div>
<div class=\"pi\">|</div>
<div class=\"coy\">" . $coor['y'] . ")</div></td></tr>";
}
?>
</tbody>
</table>