Files
TravianZ/Admin/Templates/admin_log.tpl
T
novgorodschi catalin 337c94b981 Fix Admin Panel view & some PHP 8.1+
Fix Admin Panel view & some PHP 8.1+
2026-06-22 09:20:16 +03:00

206 lines
9.1 KiB
Smarty
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<link rel="shortcut icon" href="favicon.ico"/>
<title><?php echo ($_SESSION['access'] == ADMIN ? 'Admin Control Panel' : 'Multihunter Control Panel'); ?> - TravianZ</title>
<link rel="stylesheet" type="text/css" href="../img/admin/admin.css">
<link rel="stylesheet" type="text/css" href="../img/admin/acp.css">
<link rel="stylesheet" type="text/css" href="../img/../img.css">
<script src="mt-full.js?423cb" type="text/javascript"></script>
<script src="ajax.js" type="text/javascript"></script>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="imagetoolbar" content="no">
<style>
.log-wrap{max-width:100%;margin:12px;font-family:Tahoma,Verdana,Arial,sans-serif;color:#222}
.log-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.log-head h2{margin:0;font-size:16px;display:flex;align-items:center;gap:6px;color:#111}
.log-filters{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:8px}
.log-filters button{padding:4px 10px;font-size:11px;border:1px solid #bbb;border-radius:14px;background:#f5f5f5;cursor:pointer;color:#222}
.log-filters button.active{background:#2c3e50;color:#fff;border-color:#2c3e50}
.log-card{background:#fff;border:1px solid #bbb;border-radius:6px;overflow:hidden;color:#222}
.logTable{width:100%;border-collapse:collapse;font-size:11px;color:#222}
.logTable th{background:#0891b2;color:#fff;padding:5px 6px;text-align:left;font-weight:bold;font-size:10px;white-space:nowrap}
.logTable td{padding:5px 6px;border-bottom:1px solid #eee;vertical-align:top;line-height:14px;color:#111;background:#fff}
.logTable tr:hover{background:#f5f9ff}
.logTable a{color:#004a9f;text-decoration:none}
.logTable a:hover{text-decoration:underline}
.logCat{font-weight:bold;padding:2px 6px;border-radius:3px;color:#fff;font-size:10px;white-space:nowrap}
.cat-ban{background:#FF0000}
.cat-unban{background:#27ae60}
.cat-gold{background:#FFCC00;color:#000}
.cat-plus{background:#33CCFF;color:#003344}
.cat-maint{background:#555}
.cat-village{background:#66CCFF;color:#003344}
.cat-msg{background:#e67e22}
.cat-other{background:#CCFF00;color:#000}
</style>
</head>
<?php
#################################################################################
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## --------------------------------------------------------------------------- ##
## Filename : ademin_log.tpl ##
## Type : Admin Panel Frontend ##
## --------------------------------------------------------------------------- ##
## Developed by : Dzoki (Original) ##
## Refactored by : Shadow ##
## Redesign by : Shadow ##
## --------------------------------------------------------------------------- ##
## Contact : cata7007@gmail.com ##
## Project : TravianZ ##
## GitHub : https://github.com/Shadowss/TravianZ ##
## --------------------------------------------------------------------------- ##
## License : TravianZ Project ##
## Copyright : TravianZ (c) 2010-2025. All rights reserved. ##
## --------------------------------------------------------------------------- ##
#################################################################################
if($_SESSION['access'] < ADMIN) die("Access Denied: You are not Admin!");
$adminLogs = $database->getAdminLog();
$unified = [];
foreach($adminLogs as $l) {
// FIX: sărim peste unban-urile din log-ul vechi, le luăm doar din banlist
if(stripos($l['log'], 'unbanned') !== false || stripos($l['log'], 'unban') !== false) {
continue;
}
$unified[] = [
'id' => $l['id'],
'time' => $l['time'],
'user' => $l['user'],
'type' => 'admin',
'text' => $l['log']
];
}
// Ban-uri și Unban-uri din banlist
$banQ = mysqli_query($GLOBALS["link"], "
SELECT id, uid, name, reason, time, end, admin, active
FROM ".TB_PREFIX."banlist
ORDER BY time DESC
LIMIT 300
");
while($b = mysqli_fetch_assoc($banQ)) {
// BAN
$unified[] = [
'id' => 1000000 + $b['id'],
'time' => $b['time'],
'user' => $b['admin'] ?: 1,
'type' => 'ban',
'text' => "Banned user <a href='admin.php?p=player&uid={$b['uid']}'>{$b['name']}</a> (Reason: {$b['reason']})",
'active' => $b['active']
];
// UNBAN
if($b['active'] == 0 && $b['end'] > $b['time']) {
$unified[] = [
'id' => 2000000 + $b['id'],
'time' => $b['end'],
'user' => $b['admin'] ?: 1,
'type' => 'unban',
'text' => "Unbanned user <a href='admin.php?p=player&uid={$b['uid']}'>{$b['name']}</a>",
'active' => 0
];
}
}
usort($unified, function($a,$b){ return $b['time'] <=> $a['time']; });
$unified = array_slice($unified, 0, 300);
$perPage = 20;
$page = isset($_GET['pg']) ? max(1,intval($_GET['pg'])) : 1;
$total = count($unified);
$totalPages = ceil($total / $perPage);
$offset = ($page-1) * $perPage;
$paged = array_slice($unified, $offset, $perPage);
function logCategory($entry) {
if($entry['type']=='ban') return ['BAN','cat-ban','🔨'];
if($entry['type']=='unban') return ['UNBAN','cat-unban','🔓'];
$t = strtolower(strip_tags($entry['text']));
// FIX: prinde orice unban din text
if (strpos($t,'unban')!==false) return ['UNBAN','cat-unban','🔓'];
if (strpos($t,'mass ban')!==false) return ['BAN','cat-ban','🔨'];
if (strpos($t,'gold')!==false) return ['GOLD','cat-gold','💰'];
if (strpos($t,'plus')!==false && strpos($t,'bonus')===false) return ['PLUS','cat-plus','⭐'];
if (strpos($t,'bonus')!==false) return ['BONUS','cat-plus','📈'];
if (strpos($t,'reset')!==false) return ['RESET','cat-maint','⚙'];
if (strpos($t,'village')!==false || strpos($t,'buildings')!==false || strpos($t,'renamed')!==false) return ['VILLAGE','cat-village','🏘'];
if (strpos($t,'message')!==false) return ['MESSAGE','cat-msg','✉'];
return ['OTHER','cat-other','📝'];
}
?>
<div class="log-wrap">
<div class="log-head">
<h2>📋 Unified Admin Log last 300 actions</h2>
</div>
<div class="log-filters" id="logFilters">
<button class="active" data-filter="all">All</button>
<button data-filter="BAN">🔨 Ban</button>
<button data-filter="UNBAN">🔓 Unban</button>
<button data-filter="GOLD">💰 Gold</button>
<button data-filter="PLUS">⭐ Plus</button>
<button data-filter="BONUS">📈 Bonus</button>
<button data-filter="VILLAGE">🏘 Village</button>
<button data-filter="MESSAGE">✉ Message</button>
<button data-filter="RESET">⚙ Reset</button>
<button data-filter="OTHER">📝 Other</button>
</div>
<div class="log-card">
<table class="logTable" id="logTable">
<thead>
<tr>
<th width="50">ID</th>
<th width="120">Admin</th>
<th width="100">Categorie</th>
<th>Detalii</th>
<th width="140">Data</th>
</tr>
</thead>
<tbody>
<?php
foreach($paged as $e) {
$admid = (int)$e['user'];
$username = $database->getUserField($admid, "username", 0);
$adminLink = $username ? '<a href="admin.php?p=player&uid='.$admid.'">'.htmlspecialchars($username).'</a>' : '<b>SYSTEM</b>';
if($username == 'Multihunter') $adminLink = '<b style="color:#c00">CONTROL PANEL</b>';
list($cat,$class,$icon) = logCategory($e);
$date = date("d.m.Y H:i:s", $e['time'] + 3600*2);
$details = $e['text'];
?>
<tr data-cat="<?php echo $cat; ?>">
<td>#<?php echo $e['id'] % 1000000; ?></td>
<td><?php echo $adminLink; ?></td>
<td><span class="logCat <?php echo $class; ?>"><?php echo $icon.' '.$cat; ?></span></td>
<td><?php echo $details; ?></td>
<td><?php echo $date; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
<div style="text-align:center;margin:8px 0;font-size:11px">
<?php if($page>1){ ?><a href="?p=admin_log&pg=<?php echo $page-1;?>" style="padding:3px 8px;border:1px solid #bbb;background:#f5f5f5;text-decoration:none;margin:0 2px">« Prev</a><?php } ?>
<span style="padding:3px 8px;background:#3a4f63;color:#fff;margin:0 2px"><?php echo $page;?> / <?php echo $totalPages;?></span>
<?php if($page<$totalPages){ ?><a href="?p=admin_log&pg=<?php echo $page+1;?>" style="padding:3px 8px;border:1px solid #bbb;background:#f5f5f5;text-decoration:none;margin:0 2px">Next »</a><?php } ?>
</div>
</div>
</div>
<script>
(function(){
var btns = document.querySelectorAll('#logFilters button');
var rows = document.querySelectorAll('#logTable tbody tr');
btns.forEach(function(b){
b.onclick = function(){
btns.forEach(x=>x.classList.remove('active'));
b.classList.add('active');
var f = b.getAttribute('data-filter');
rows.forEach(function(r){
r.style.display = (f==='all' || r.getAttribute('data-cat')===f) ? '' : 'none';
});
};
});
})();
</script>