<?php

class PageProgress extends Page
{
  function ShowStatTable()
  {
    $Output = '';
    
    $BuildNumber = GetBuildNumber($_SESSION['StatVersion']);
    if(is_numeric($_SESSION['language'])) $LanguageFilter = 'AND (`Language`='.$_SESSION['language'].')';
    else $LanguageFilter = ' AND (`Language`!='.$this->System->Config['OriginalLanguage'].')';
    
    $GroupListQuery = 'SELECT `Id`, `TablePrefix`, `Name` FROM `Group`';
    $Query = '';
    $DbResult = $this->Database->query($GroupListQuery);
    if($DbResult->num_rows > 0)
    {
      while($DbRow = $DbResult->fetch_assoc())
      {
        $Query .= 'SELECT (SELECT COUNT(DISTINCT(`Entry`)) FROM ('.
            'SELECT `T`.`Entry` FROM `'.$DbRow['TablePrefix'].'` AS `T` '.
            'WHERE (`Complete` = 1) '.$LanguageFilter.' '.
            'AND (`VersionStart` <= '.$BuildNumber.') AND (`VersionEnd` >= '.$BuildNumber.')'.
            ') AS `C1`) AS `Translated`, '.
            '(SELECT COUNT(DISTINCT(`Entry`)) FROM ('.
            'SELECT `T`.`Entry` FROM `'.$DbRow['TablePrefix'].'` AS `T` '.
            'WHERE (`Language` = '.$this->System->Config['OriginalLanguage'].') '.
            'AND (`VersionStart` <= '.$BuildNumber.') AND (`VersionEnd` >= '.$BuildNumber.')'.
            ') AS `C2`) AS `Total`, "'.$DbRow['Name'].'" AS `Name` UNION ';
      }
      $Query = substr($Query, 0, - 6);
    
      $DbResult = $this->Database->query('SELECT COUNT(*) FROM ('.$GroupListQuery.') AS `T`');
      $DbRow = $DbResult->fetch_row();
      $PageList = GetPageList($DbRow[0]);
      $Output .= $PageList['Output'];
    
      $Output .= '<table class="BaseTable">';
      $TableColumns = array(
          array('Name' => 'Name', 'Title' => 'Jméno'),
          array('Name' => 'Translated', 'Title' => 'Přeložených'),
          array('Name' => 'Total', 'Title' => 'Anglických'),
          array('Name' => 'Percent', 'Title' => 'Procenta'),
      );
    
      $Order = GetOrderTableHeader($TableColumns, 'Name', 0);
      $Output .= $Order['Output'];
    
      $Translated = 0;
      $Total = 0;
      $DbResult = $this->Database->query('SELECT *, ROUND(`Translated` / `Total` * 100, 2) AS `Percent` FROM ('.$Query.') AS `C3` '.$Order['SQL'].$PageList['SQLLimit']);
      while($Group = $DbResult->fetch_assoc())
      {
        $Output .= '<tr><td>'.$Group['Name'].'</td><td>'.$Group['Translated'].'</td><td>'.$Group['Total'].'</td><td>'.ProgressBar(150, $Group['Percent']).'</td></tr>';
        $Translated += $Group['Translated'];
        $Total += $Group['Total'];
      }
      if($Total <> 0) $TotalCount = round($Translated / $Total * 100, 2);
      else $TotalCount = 0;
      $Output .= '<tr><td><strong>Celkem</strong></td><td><strong>'.$Translated.'</strong></td><td><strong>'.$Total.'</strong></td><td><strong>'.ProgressBar(150, $TotalCount).'</strong></td></tr>'.
          '</table>';
    }
    return($Output);
  } 

  function Show()
  {
  	$this->Title = T('Progress');
$LanguageList = GetLanguageList();

if(array_key_exists('Version', $_GET)) $_SESSION['StatVersion'] = $_GET['Version'];
if(!array_key_exists('StatVersion', $_SESSION)) $_SESSION['StatVersion'] = $this->System->Config['Web']['GameVersion'];

if(!isset($_SESSION['language']))
{
	if($this->System->User->Licence(LICENCE_USER))
	{
 		$_SESSION['language'] = $this->System->User->Language;
  } else $_SESSION['language'] = '';
}
if(array_key_exists('language', $_GET)) {
  if($_GET['language'] == '') $_SESSION['language'] = '';
	  else {
	    $_SESSION['language'] = $_GET['language'] * 1;
	  }
}
if(!array_key_exists($_SESSION['language'], $LanguageList)) $_SESSION['language'] = '';

// Show client version selection
$Output = 'Verze klienta: ';
$DbResult = $this->Database->query('SELECT `Version`, `Title` FROM `ClientVersion` WHERE `Imported`=1 ORDER BY `Version`');
while($DbRow = $DbResult->fetch_assoc())
  $Output .= '<a href="?Version='.$DbRow['Version'].'" title="'.$DbRow['Title'].'">'.$DbRow['Version'].'</a> ';
$Output .= '<br/>';

// Show language selection
$Output .= 'Jazyk: ';
$Lang = '<a href="?language=">Všechny</a>';
if($_SESSION['language'] == '') $Output .= '<strong>'.$Lang.'</strong> ';
  else $Output .= $Lang;
foreach($LanguageList as $Language)
if($Language['Enabled'] == 1)
{
 	$Lang = ' <a href="?language='.$Language['Id'].'">'.$Language['Name'].'</a>';
  if($Language['Id'] == $_SESSION['language']) $Output .= '<strong>'.$Lang.'</strong> ';
    else $Output .= $Lang;
}

if(is_numeric($_SESSION['language'])) $LanguageName = $LanguageList[$_SESSION['language']]['Name'];
  else $LanguageName = 'Všechny';
$Output .= '<br/><br /><h3>Statistika dokončení překladů jazyka '.$LanguageName.' pro verzi '.$_SESSION['StatVersion'].'</h3><br/>';
$Output .= $this->ShowStatTable();

$Output .= '<div>Počet stáhnutí přeložených textů v SQL souboru: <strong>';    
$ID = $this->Database->query('SELECT count(distinct(`IP`)) FROM `Log` WHERE `Type` = 2');
$Line = $ID->fetch_row();
$Output .= $Line[0];
$Output .= '</strong></div>';
		
$Output .= '<div>Počet stáhnutí: <strong>';      
$ID = $this->Database->query('SELECT count(distinct(`IP`)) FROM `Log` WHERE `Type` = 0');
$Line = $ID->fetch_row();
$Output .= $Line[0];
$Output .= '</strong></div>';
    return($Output);
  }
}
