Skip to content

Instantly share code, notes, and snippets.

@slawkens
Created January 17, 2025 21:33
Show Gist options
  • Save slawkens/838f11d6ca640531970740903818c1ea to your computer and use it in GitHub Desktop.
Save slawkens/838f11d6ca640531970740903818c1ea to your computer and use it in GitHub Desktop.
OnlineTime from Gesior for MyAAC 0.8 and 1.0
<?php
defined('MYAAC') or die('Direct access not allowed!');
$limit = 50;
$type = $_REQUEST['type'] ?? '';
function hours_and_minutes($value, $color = 1)
{
$hours = floor($value / 3600);
$value = $value - $hours * 3600;
$minutes = floor($value / 60);
if($color != 1)
return '<font color="black">'.$hours.'h '.$minutes.'m</font>';
else
if($hours >= 12)
return '<font color="red">'.$hours.'h '.$minutes.'m</font>';
elseif($hours >= 6)
return '<font color="black">'.$hours.'h '.$minutes.'m</font>';
else
return '<font color="green">'.$hours.'h '.$minutes.'m</font>';
}
$playersOnline = [];
if($db->hasTable('players_online')) {
$query = $db->query('SELECT `player_id` FROM `players_online`')->fetchAll(PDO::FETCH_ASSOC);
foreach ($query as $player) {
$playersOnline[$player['player_id']] = true;
}
}
$deleted = 'deleted';
if($db->hasColumn('players', 'deletion'))
$deleted = 'deletion';
$addWhere = 'players.id NOT IN (' . implode(', ', $config['highscores_ids_hidden']) . ') AND players.' . $deleted . ' = 0 AND players.group_id < '.$config['highscores_groups_hidden'];
if(empty($type))
$players = $db->query('SELECT * FROM ' . $db->tableName('players') . ' WHERE ' . $addWhere . ' ORDER BY ' . $db->fieldName('onlinetimetoday') . ' DESC LIMIT ' . $limit)->fetchAll();
elseif($type == "sum")
$players = $db->query('SELECT * FROM ' . $db->tableName('players') . ' WHERE ' . $addWhere . ' ORDER BY ' . $db->fieldName('onlinetime1') . '+' . $db->fieldName('onlinetime2') . '+' . $db->fieldName('onlinetime3') . '+' . $db->fieldName('onlinetime4') . '+' . $db->fieldName('onlinetime5') . '+' . $db->fieldName('onlinetime6') . '+' . $db->fieldName('onlinetime7') . '+' . $db->fieldName('onlinetimetoday') . ' DESC LIMIT ' . $limit)->fetchAll();
elseif($type >= 1 && $type <= 7)
$players = $db->query('SELECT * FROM ' . $db->tableName('players') . ' WHERE ' . $addWhere . ' ORDER BY ' . $db->fieldName('onlinetime' . (int) $type) . ' DESC LIMIT ' . $limit)->fetchAll();
echo '<CENTER><H2>Ranking of no lifers</H2></CENTER><BR><TABLE BORDER="0" CELLPADDING="4" CELLSPACING="1" WIDTH="100%"><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD style="color:white"><B>Rank</B></TD><TD style="color:white"><B>Name</B></TD>';
if($type == "sum")
echo '<TD bgcolor="red"><b><center><a href="?subtopic=onlinetime&type=sum">All online time</a></center></B></TD>';
else
echo '<TD bgcolor="yellow"><b><center><a href="?subtopic=onlinetime&type=sum">All online time</a></center></B></TD>';
for($i = 7; $i >= 2; $i--)
{
if($type == $i)
echo '<TD bgcolor="red"><b><center><a href="?subtopic=onlinetime&type='.$i.'">'.$i.' Days Ago</a></center></B></TD>';
else
echo '<TD bgcolor="yellow"><b><center><a href="?subtopic=onlinetime&type='.$i.'">'.$i.' Days Ago</a></center></B></TD>';
}
if($type == 1)
echo '<TD bgcolor="red"><b><center><a href="?subtopic=onlinetime&type=1">1 Day Ago</a></center></B></TD>';
else
echo '<TD bgcolor="yellow"><b><center><a href="?subtopic=onlinetime&type=1">1 Day Ago</a></center></B></TD>';
if(empty($type))
echo '<TD bgcolor="red"><b><center><a href="?subtopic=onlinetime">Today</a></center></B></TD>';
else
echo '<TD bgcolor="yellow"><b><center><a href="?subtopic=onlinetime">Today</a></center></B></TD>';
echo '</TR>';
$number_of_rows = 0;
foreach($players as $player)
{
if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++;
echo '<tr bgcolor="'.$bgcolor.'"><td align="center">'.$number_of_rows.'. </td>';
if(isPlayerOnline($player))
echo '<td><a href="'.getPlayerLink($player['name'], false).'"><b><font color="green">'.htmlspecialchars($player['name']).'</font></b></a>';
else
echo '<td><a href="'.getPlayerLink($player['name'], false).'"><b><font color="red">'.htmlspecialchars($player['name']).'</font></b></a>';
echo '<br />'.$player['level'].' '.htmlspecialchars($config['vocations'][$player['vocation']]).'</td><td align="right">'.hours_and_minutes($player['onlinetime1'] + $player['onlinetime2'] + $player['onlinetime3'] + $player['onlinetime4'] + $player['onlinetime5'] + $player['onlinetime6'] + $player['onlinetime7'] + $player['onlinetimetoday'], 0).'</td>';
echo '<td align="right">'.hours_and_minutes($player['onlinetime7']).'</td><td align="right">'.hours_and_minutes($player['onlinetime6']).'</td><td align="right">'.hours_and_minutes($player['onlinetime5']).'</td><td align="right">'.hours_and_minutes($player['onlinetime4']).'</td><td align="right">'.hours_and_minutes($player['onlinetime3']).'</td><td align="right">'.hours_and_minutes($player['onlinetime2']).'</td><td align="right">'.hours_and_minutes($player['onlinetime1']).'</td><td align="right">'.hours_and_minutes($player['onlinetimetoday']).'</td></tr>';
}
echo '</TABLE>';
function isPlayerOnline($player) {
global $db, $playersOnline;
if($db->hasTable('players_online')) {
return isset($playersOnline[$player['id']]);
}
return $player['online'] == 1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment