<?php

$order_by = (isset($_GET['order'])) ? $db->real_escape_string($_GET['order']) : 'name';
$dir = (isset($_GET['dir'])) ? $db->real_escape_string($_GET['dir']) : 'down';
$order_dir = ($dir == 'up') ? 'ASC' :'DESC';
$dir = ($dir == 'down') ? 'up' : 'down';
$dir_img = ($dir == 'down') ? '<img src="'.$html->Link('/imgs/inc/up.gif').'" alt="vzestupně" />' : '<img src="'.$html->Link('/imgs/inc/down.gif').'" alt="sestupně"/>';

function MakeLink($show, $sort)
{
  global $dir, $dir_img, $html;
  
  if(isset($_GET['order']) and $_GET['order'] == $sort)
  {
    $arrow = $dir_img;
  }
  else
  {
    $arrow = '';
  }
  return($arrow.'<a href="'.$html->Link('/online-hraci/?order='.$sort.'&amp;dir='.$dir).'">'.$show.'</a>');
}

echo('<h3 class="PageTitle">Online hráči</h3>');

if(array_key_exists('RealmIndex', $_COOKIE))
{
  $Realm = new Realm($System, $_COOKIE['RealmIndex']);
  echo('<div style="text-align: center">Celkem '.$Realm->OnlineCharactersCount().' hráčů.</div>'.
  '<table class="BaseTable">
  <tr>
    <th align="center">Frakce</th>
    <th align="center">'.MakeLink('Jméno', 'name').'</th>
    <th align="center">'.MakeLink('Rasa', 'race').'</th>
    <th align="center">'.MakeLink('Třída', 'class').'</th>
    <th align="center">'.MakeLink('Úroveň', 'level').'</th>
    <th align="center">'.MakeLink('Mapa', 'map').'</th>
    <th align="center">'.MakeLink('Body cti', 'highest_rank').'<br />'.
    MakeLink('Body arén', 'arena_points').'</th></tr>');

  $sql = $Realm->CharactersDatabase->query('SELECT guid, name, race, class, zone, map, '.
  'CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, " ", '.$Config['Mangos']['CharacterDataOffset']['HonorPoints'].'+1), " ", -1) AS UNSIGNED) AS highest_rank, '.
  'CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, " ", '.$Config['Mangos']['CharacterDataOffset']['Level'].' + 1), " ", -1) AS UNSIGNED) AS level, '.
  'CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, " ", '.$Config['Mangos']['CharacterDataOffset']['ArenaPoints'].' + 1), " ", -1) AS UNSIGNED) AS arena_points, '.
  'mid(lpad( hex( CAST(substring_index(substring_index(data, " ", '.$Config['Mangos']['CharacterDataOffset']['Gender'].' + 1), " ", -1) as unsigned) ), 8, 0), 4, 1) AS gender '.
  'FROM `characters` WHERE `online`= 1 ORDER BY `'.$order_by.'` '.$order_dir);
  while($row = $sql->fetch_assoc())
  {
    $aliance = array(1, 3, 4, 7, 11);
    $frakce = (in_array($row['race'], $aliance)) ? '<img src="'.$html->Link('/imgs/inc/a.gif').'" alt="aliance"/>' : '<img src="'.$html->Link('/imgs/inc/h.gif').'" alt="horda" />';
    $gender = ($row['gender'] == 0) ? '0' : '1';
    echo('<tr>
      <td align="center">'.$frakce.'</td>
      <td align="center">'.$row['name'].'</td>
      <td align="center"><img src="'.$html->Link('/imgs/icons/'.$row['race'].'-'.$gender.'.gif').'" alt="rasa" /></td>
      <td align="center"><img src="'.$html->Link('/imgs/icons/'.$row['class'].'.gif').'" alt="třída" /></td>
      <td align="center">'.$row['level'].'</td>
      <td align="center">'.$server->MapName($row['map']).'<br />('.$server->ZoneName($row['zone']).')</td>
      <td align="center">'.$row['highest_rank'].'<br />'.$row['arena_points'].'</td></tr>');
  }
  echo('</table>');
} else
{
  $PlayerList = array();
  $DbResult2 = $System->Database->query('SELECT * FROM Realm WHERE Enabled =1');  
  while($DbRealm = $DbResult2->fetch_assoc())
  {
    $Realm = new Realm($System, $DbRealm['Id']);
    $sql = $Realm->CharactersDatabase->query('SELECT guid, name, race, class, zone, map, '.
  'CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, " ", '.$Config['Mangos']['CharacterDataOffset']['HonorPoints'].'+1), " ", -1) AS UNSIGNED) AS highest_rank, '.
  'CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, " ", '.$Config['Mangos']['CharacterDataOffset']['Level'].' + 1), " ", -1) AS UNSIGNED) AS level, '.
  'CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, " ", '.$Config['Mangos']['CharacterDataOffset']['ArenaPoints'].' + 1), " ", -1) AS UNSIGNED) AS arena_points, '.
  'mid(lpad( hex( CAST(substring_index(substring_index(data, " ", '.$Config['Mangos']['CharacterDataOffset']['Gender'].' + 1), " ", -1) as unsigned) ), 8, 0), 4, 1) AS gender '.
  'FROM `characters` WHERE `online`= 1');
    $I = 0;
    while($DbRow = $sql->fetch_assoc())
    {
      $DbRow['svet'] = $DbRealm['Name'];
      $PlayerList[$DbRow[$order_by].$I] = $DbRow;
      $I++;
    }
  }
  
  echo('<div style="text-align: center">Celkem '.count($PlayerList).' hráčů ve všech světech.</div>'.
  '<table class="BaseTable">
  <tr>'.
    '<th align="center">Frakce</th>'.
    '<th align="center">'.MakeLink('Jméno', 'name').'</th>'.
    '<th align="center">'.MakeLink('Rasa', 'race').'</th>'.
    '<th align="center">'.MakeLink('Třída', 'class').'</th>'.
    '<th align="center">'.MakeLink('Úroveň', 'level').'</th>'.
    '<th align="center">'.MakeLink('Svět', 'svet').'</th>'.
    '</tr>');
    
  if($order_dir == 'ASC') ksort($PlayerList);
    else krsort($PlayerList);

  foreach($PlayerList as $row)
  {
    $aliance = array(1, 3, 4, 7, 11);
    $frakce = (in_array($row['race'], $aliance)) ? '<img src="'.$html->Link('/imgs/inc/a.gif').'" alt="aliance"/>' : '<img src="'.$html->Link('/imgs/inc/h.gif').'" alt="horda" />';
    $gender = ($row['gender'] == 0) ? '0' : '1';
    echo('<tr>'.
      '<td align="center">'.$frakce.'</td>'.
      '<td align="center">'.$row['name'].'</td>'.
      '<td align="center"><img src="'.$html->Link('/imgs/icons/'.$row['race'].'-'.$gender.'.gif').'" alt="rasa" /></td>'.
      '<td align="center"><img src="'.$html->Link('/imgs/icons/'.$row['class'].'.gif').'" alt="třída" /></td>'.
      '<td align="center">'.$row['level'].'</td>'.
      '<td align="center">'.$row['svet'].'</td>'.
      '</tr>');
  }
  echo('</table>');
}

?>
