<?php

include('includes/global.php');

function WriteQuests($Query)
{
  global $Database, $TranslationTree, $GroupId, $Table, $Action;
 
  // Get total item count
  $DbResult = $Database->SQLCommand('SELECT COUNT(*) FROM ('.$Query.') AS `T`');
  $DbRow = mysql_fetch_row($DbResult);
  $PageList = GetPageList($DbRow[0]);    
 
  echo($PageList['Output']);

  $TableColumns = array(
    array('Name' => 'ID', 'Title' => 'Pořadové číslo'), 
    array('Name' => 'Entry', 'Title' => 'Identifikační číslo'), 
    array('Name' => $TranslationTree[$GroupId]['Items'][0]['Column'], 'Title' => 'Název'), 
    array('Name' => 'VersionStart', 'Title' => 'Verze'), 
  );
  if($Action == 'selection') $TableColumns[] = array('Name' => 'CountQuests', 'Title' => 'Výskyt');
  else if($Action == 'connexion') $TableColumns[] = array('Name' => '', 'Title' => 'Již přeložil');
  else if($Action <> 'notran') $TableColumns[] = array('Name' => 'UserName', 'Title' => 'Překladatel');
    
  $Order = GetOrderTableHeader($TableColumns, 'VersionStart', 1);
  echo('<table class="BaseTable">');
  echo($Order['Output']);
   
  $DbResult = $Database->SQLCommand($Query.' '.$Order['SQL'].' '.$PageList['SQLLimit']);
  while($Line = mysql_fetch_assoc($DbResult)) 
  {
    echo('<tr><td><a href="form.php?group='.$GroupId.'&amp;ID='.$Line['ID'].'">'.$Line['ID'].'</a></td><td>'.$Line['Entry'].'</td>'.
      '<td>'.htmlspecialchars($Line[$TranslationTree[$GroupId]['Items'][0]['Column']]).'</td>'.
      '<td>'.GetVersionWOW($Line['VersionStart']).'-'.GetVersionWOW($Line['VersionEnd']).'</td>');
    if($Action == 'selection') echo('<td>'.$Line['CountQuest'].'</td>'); 
      else if($Action <> 'notran') echo('<td>'.$Line['UserName'].'</td>');
    echo('</tr>');
  }
  echo('</table>');     
  
  echo($PageList['Output']);
}

function Nontranslated()
{
  global $GroupId, $Table;
  
  echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> -> '.
  '<a title="Zde můžete začít překládat" href="?group='.$GroupId.'&amp;action=selection">Nepřeložené texty</a> - > '.
  '<strong>Vypsání nepřeložených textů s limitem na stránku</strong><br /><br />');

  WriteQuests('SELECT * FROM `'.$Table.'` AS `items` WHERE (`items`.`Language` = 0) AND NOT EXISTS(SELECT 1 FROM `'.$Table.'` AS `sub` WHERE (`sub`.`Language` <> 0) AND (`sub`.`Entry` = `items`.`Entry`) AND (`sub`.`Complete`=1) AND (`sub`.`VersionStart` = `items`.`VersionStart`) AND (`sub`.`VersionEnd` = `items`.`VersionEnd`))');
}

function Connexion()
{
  global $GroupId, $Table, $BuildNumber_max, $Database;
  
  if(array_key_exists('connexion_id', $_GET)) $_SESSION['connexion_id'] = $_GET['connexion_id'];

  $Line = mysql_fetch_assoc($Database->SQLCommand('SELECT `Name` FROM `connexion` WHERE `Id` = '.$_SESSION['connexion_id']));
    echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> ->
        <a title="Zde je seznam souvislostí" href="?group='.$GroupId.'&amp;action=connexion">Souvislosti</a> - > 
        <strong>Vypsání souvislostí ze skupiny '.$Line['Name'].'</strong><br /><br />');

   WriteQuests('SELECT *, (SELECT `sub`.`User` FROM `'.$Table.'` AS `sub` WHERE (`sub`.`Entry` = `'.$Table.'`.`Entry`) AND (`Language` <> 0) LIMIT 1) AS `UserID`, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `UserID`) AS `UserName` FROM `'.$Table.'` WHERE (`Language` = 0) AND (`Entry` IN(SELECT `Entry` FROM `connexion_item` WHERE `connexion` = '.$_SESSION['connexion_id'].') AND `VersionEnd` = "'.$BuildNumber_max.'" AND `VersionEnd` = "'.$BuildNumber_max.'"');
}

function ConnexionList()
{
  global $GroupId, $Table, $BuildNumber_max, $Database;

  echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> -> '.
    '<a title="Zde je seznam souvislostí" href="?group='.$GroupId.'&amp;action=connexion">Souvislosti</a> - > '.
     '<strong>Vypsání souvislostí</strong><br /><br />');
  echo('<table class="BaseTable"><tr><th>Pořadové číslo</th><th>Název</th>');
  echo('</tr>');
  $ID = $Database->SQLCommand('SELECT * FROM `connexion` WHERE `Group` = '.$GroupId);        
  while($Line = mysql_fetch_assoc($ID)) 
  {
    echo('<tr><td><a href="?group='.$GroupId.'&amp;action=connexion&amp;connexion_id='.$Line['Id'].'">'.$Line['Id'].'</a></td>
      <td>'.$Line['Name'].'</td>');
  }
  echo ('</table>');
}

function Noncomplete()
{
  global $GroupId, $Table, $BuildNumber_max, $Database;

  echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> ->
        <a title="Zde můžete začít překládat" href="?group='.$GroupId.'&amp;action=selection">nedokončené texty</a> - > 
        <strong>Vypsání nedokončených textů s limitem na stránku</strong><br /><br />');

  WriteQuests('SELECT `items`.*, `User`.`Name` AS `UserName` FROM `'.$Table.'` AS `items` JOIN `User` ON `User`.`ID` = `items`.`User` WHERE (`items`.`Language` = 0) AND
    NOT EXISTS(SELECT 1 FROM `'.$Table.'` AS `sub` WHERE (`sub`.`Language` <> 0) AND (`sub`.`Entry` = `items`.`Entry`) AND (`sub`.`Complete` = 1) AND (`VersionEnd` = '.$BuildNumber_max.')) AND
   EXISTS(SELECT 1 FROM `'.$Table.'` AS `sub2` WHERE (`sub2`.`Language` <> 0) AND (`sub2`.`Entry` = `items`.`Entry`) AND (`sub2`.`Complete` = 0) AND (`VersionEnd` = '.$BuildNumber_max.')) AND (`items`.`VersionEnd` = '.$BuildNumber_max.')');
}

function Translate()
{
  global $GroupId, $Table, $BuildNumber_max, $Database;

  echo('<a title="Zobrazit překlady podle vlasního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr překladů</a> ->
     <a title="Přeložené texty, můžete zde hlasovat, nebo opravovat texty" href="?group='.$GroupId.'&amp;action=Translate">Přeložené texty</a><br /><br />');
      
  WriteQuests('SELECT `'.$Table.'`.*, `User`.`Name` AS `UserName` FROM `'.$Table.'` JOIN `User` ON `User`.`ID` = `'.$Table.'`.`User` WHERE (`'.$Table.'`.`Language` <> 0) AND (`'.$Table.'`.`Complete` = 1)');
}

function UserTranslated()
{
  global $GroupId, $Table, $User;
  
  echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> ->
        <a title="Přeložené questy přilášeného uživatele" href="?group='.$GroupId.'&amp;action=my">Moje překlady</a><br /><br />');
  WriteQuests('SELECT `'.$Table.'`.*, `User`.`Name` AS `UserName` FROM `'.$Table.'` JOIN `User` ON `User`.`id` = `'.$Table.'`.`User` WHERE `'.$Table.'`.`User` = '.$User->Id);
}

function UserUnfinished()
{
  global $GroupId, $Table, $User;

  echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> ->
    <a title="Nedokončené texty" href="?group='.$GroupId.'&amp;action=mydevelop">Rozepsané překlady</a><br /><br />');
  WriteQuests('SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE `User` = '.$User->Id.' AND `Complete` = 0');
}

function UserSelected()
{
  global $GroupId, $Table;

  echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> ->
        <strong>Vypsání textů od určitých uživatelů</strong><br /><br />');
  if(array_key_exists('users', $_POST)) $users = $_POST['users'];
    else $users = array();
  
  $WhereUsers = '';    
  foreach($users as $Index => $User)
  {
    if($WhereUsers <> '') $WhereUsers .= ' OR `User` = '.$User;
      else $WhereUsers .= ' `User` = '.$User;
  }
  if($WhereUsers == '') $WhereUsers = '0';  
  
  WriteQuests('SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE '.$WhereUsers);
}

function UserAll()
{
  global $Database, $Table, $GroupId, $TranslationTree;
  
  $ID = $Database->SQLCommand('SELECT `Name` FROM `User` WHERE `ID` = '.$_GET['user']);
  $Line = mysql_fetch_row($ID);
  echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a>'.
  ' -> <strong>Počty překladů uživatele '.$Line[0].': </strong><br /><br />');
  
  echo('<table class="BaseTable"><tr><th>Skupina</th><th>Překladů</th></tr>');
  $Total = 0;
  foreach($TranslationTree as $Group)
    if($Group['TablePrefix'] != '')
    {
      if(array_key_exists('not', $_GET)) 
      {
        $sql = 'SELECT COUNT(*) FROM `'.$Group['TablePrefix'].'` WHERE `Complete` = 0 AND `User`='.$_GET['user'];
        $ID = $Database->SQLCommand($sql);
        $Line = mysql_fetch_row($ID);
        $GroupId = $Group['Id'];
        echo('<tr><td><a href="?group='.$GroupId.'&amp;action=userid&amp;not&amp;user='.$_GET['user'].'">'.$Group['Name'].'</a></td><td>'.$Line[0].'</td></tr>');
        $Total += $Line[0];
      } else 
      {
        $sql = 'SELECT COUNT(*) FROM `'.$Group['TablePrefix'].'` WHERE `User`='.$_GET['user'];
        $ID = $Database->SQLCommand($sql);
        $Line = mysql_fetch_row($ID);
        $GroupId = $Group['Id'];
        echo('<tr><td><a href="?group='.$GroupId.'&amp;action=userid&amp;user='.$_GET['user'].'">'.$Group['Name'].'</a></td><td>'.$Line[0].'</td></tr>');
        $Total += $Line[0];
      }
    }
  echo('<tr><td><strong>Celkem</strong></td><td><strong>'.$Total.'</strong></td></tr>');
  echo('</table>');
}

function GroupList()
{
  global $Database;
  
  $DbResult = $Database->SQLCommand('SELECT COUNT(*) FROM `Group`');
  $DbRow = mysql_fetch_row($DbResult);
  $PageList = GetPageList($DbRow[0]);  
  echo('<h3>Seznam překladových skupin</h3>');
  echo($PageList['Output']);
  
  echo('<table class="BaseTable">');
  $TableColumns = array(
    array('Name' => 'Name', 'Title' => 'Jméno'), 
    array('Name' => 'MangosTable', 'Title' => 'Tabulka MaNGOSu'), 
    array('Name' => 'DBCFileName', 'Title' => 'DBC soubor'), 
    array('Name' => 'LuaFileName', 'Title' => 'Lua soubor'), 
    array('Name' => 'LastImport', 'Title' => 'Datum posledního importu'), 
    array('Name' => 'LastVersion', 'Title' => 'Verze posledního importu'),
  );

  $Order = GetOrderTableHeader($TableColumns, 'Name', 0);
  echo($Order['Output']);

  $ID = $Database->SQLCommand('SELECT * FROM `Group`'.$Order['SQL'].$PageList['SQLLimit']);
  while($Group = mysql_fetch_assoc($ID)) 
  {
    echo('<tr><td><a href="?group='.$Group['Id'].'&amp;action=filter">'.$Group['Name'].'</a></td><td>'.$Group['MangosTable'].'</td><td>'.$Group['DBCFileName'].'</td><td>'.$Group['LuaFileName'].'</td><td><a title="Změny po posledním importu u vybrané překladové skupiny" href="log.php?group='.$Group['Id'].'&amp;type=11">'.HumanDate($Group['LastImport']).'</a></td><td>'.GetVersionWOW($Group['LastVersion']).'</td></tr>');
  }
  echo('</table>');
  echo('<br /><a title="Záznam změn po importu" href="log.php?type=11">Záznam změn v textech při importu</a>');  
}

function TranslatedByUserId()
{
  global $Database, $Table, $GroupId;
  
  if(array_key_exists('user', $_GET))
  {
    $ID = $Database->SQLCommand('SELECT `Name` FROM `User` WHERE `ID` = '.($_GET['user'] * 1));
    if(mysql_num_rows($ID) > 0)
    {
      $Line = mysql_fetch_row($ID);
      echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> -> '.
        '<strong>Vypis překladů uživatele '.$Line[0].': </strong><br /><br />');
      if(array_key_exists('not', $_GET)) 
        WriteQuests('SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE (`Complete` = 0) AND (`User` = '.$_GET['user'].')');
      else WriteQuests('SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE `User` = '.$_GET['user']);
    } else echo('Nebyl nalezen uživatel se zadaným id');
  } else echo('Je nutno zadat id uživatele.');
}

function TranslatedSearch()
{
  global $Table, $GroupId, $TranslationTree;
  
  if(array_key_exists('search', $_GET)) $Search = $_GET['search'];
  else if(array_key_exists('search', $_POST)) $Search = $_POST['search'];
  else ErrorMessage('Nebyl zadán text k vyhledání.');
  
  $sql = 'SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE `ID` LIKE "%'.$Search.'%"
    OR `Entry` LIKE "%'.$Search.'%"
    OR `Language` LIKE "%'.$Search.'%"
    OR `User` LIKE "%'.$Search.'%"
    OR `Complete` LIKE "%'.$Search.'%"';
  foreach($TranslationTree[$GroupId]['Items'] as $Item)
  {
    if($Item['Column'] != '') $sql .= ' OR `'.$Item['Column'].'` LIKE "%'.$Search.'%"';
  }
    
  WriteQuests($sql);
}

function SearchEntry()
{
  global $Table;
  
  if(array_key_exists('ID', $_GET)) $Search = $_GET['ID'];
  else if(array_key_exists('ID', $_POST)) $Search = $_POST['ID'];
  else $Search = '';
 
  $sql = 'SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE `Entry` LIKE "'.$Search.'"';
    
  WriteQuests($sql);
}

function TranslatedAll()
{
  global $GroupId, $Table;
  
  echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a> ->
        <a title="Zde můžete začít překládat" href="?group='.$GroupId.'&amp;action=selection">Nepřeložené texty</a> - > 
        <strong>Výpis všech textů s limitem na stránku</strong><br /><br />');

  WriteQuests('SELECT *, (SELECT `User`.`Name` FROM `User` WHERE `User`.`ID` = `'.$Table.'`.`User`) AS `UserName` FROM `'.$Table.'` WHERE (`'.$Table.'`.`Language` = 0)');
}

function TranslatedFilter()
{
  global $Table, $GroupId, $Database, $User;
  
  echo('<a title="Zobrazit texty podle vlastního filtru" href="?group='.$GroupId.'&amp;action=filter">Filtr textů</a><br /><br /><br />'.
    '<table class="BaseTable"><tr><th>Odkaz</th><th>Popis</th></tr>'.
    '<tr><td><a title="Všechny dostupné texty ve skupině" href="?group='.$GroupId.'&amp;action=all">Všechny texty</a></td>'.
    '<td>Zobrazit všechny dostupné texty ve skupině.</td></tr>'.
    '<tr><td><a title="Přeložené texty, můžete zde hlasovat, nebo text opravovat" href="?group='.$GroupId.'&amp;action=Translate">Přeložené texty</a></td>'.
    '<td>Zobrazit pouze již přeložené texty.</td></tr>'.
    '<tr><td><a title="Nepřeložené texty" href="?group='.$GroupId.'&amp;action=notran">Nepřeložené texty</a></td>'.
    '<td>Dosud nepřeložené texty, které je potřeba přeložit.</td></tr>'.
    '<tr><td><a title="Nedokončené texty" href="?group='.$GroupId.'&amp;action=nocomplete">Nedokončené texty</a></td>'.
    '<td>Texty označené jako rozpracované.</td></tr>');

  if($User->Licence(LICENCE_USER)) 
  {
    echo('<tr><td><a title="Nedokončené texty" href="?group='.$GroupId.'&amp;action=mydevelop">Rozepsané texty</a></td>
          <td>Nedokončené texty přihlášeného uživatele</td></tr>
          <tr><td><a title="Přeložené texty přihlášeného uživatele" href="?group='.$GroupId.'&amp;action=my">Moje překlady</a></td>
          <td>Přeložené texty přihlášeného uživatele</td></tr>');
  }
        
  echo('<tr><td><form action="?group='.$GroupId.'&amp;action=users" method="post"><div>'.
    '<select name="users[]" size="10" multiple="multiple" class="UserList">');
        
  $ID = $Database->SQLCommand('SELECT `Name`, `ID` FROM `User` WHERE
    EXISTS(SELECT 1 FROM `'.$Table.'` WHERE `User` = `User`.`ID`) ORDER BY `Name`');
  if($ID)
  while($Line = mysql_fetch_assoc($ID))
    echo('<option value="'.$Line['ID'].'">'.$Line['Name'].'</option>');
  
  echo('</select><br />
    <input type="submit" value="Vypsat" /></div></form></td>
    <td>Vypsat pouze od těchto uživatalů<br />
    Vybrat více uživatelů můžete pomocí CTRL+click</td></tr>');

  echo('<tr><td><form action="?group='.$GroupId.'&amp;action=search" method="post"><div>'.
    '<input type="text" name="search" size="8" />'.
    '<input type="submit" value="Hledat" />'.
    '</div></form>'.
    '</td><td>Vyhledat pomocí textu</td></tr>');
          
  echo('<tr><td><form action="?group='.$GroupId.'&amp;action=searchentry" method="post"><div>'.
    '<input type="text" name="ID" size="8" />'.
    '<input type="submit" value="Hledat" />'.
    '</div></form>'.
    '</td><td>Zobrazit podle ID textu v databázi MaNGOSu</td></tr>');
                                                
  echo('</table>');
}


ShowPage();

$GroupId = LoadGroupIdParameter();
$Table = $TranslationTree[$GroupId]['TablePrefix'];
if(array_key_exists('action', $_GET)) $Action = $_GET['action']; else $Action = '';

$DbResult = $Database->SQLCommand('SELECT MAX(`VersionEnd`) FROM `'.$TranslationTree[$GroupId]['TablePrefix'].'`');
$ID = mysql_fetch_row($DbResult);
$BuildNumber_max = $ID[0];

if(($Action != 'userall') and ($Action != 'grouplist'))
  echo('Skupina: <strong>'.$TranslationTree[$GroupId]['Name'].'</strong><br />');

if($Action == 'notran') Nontranslated();
else if($Action == 'connexion') Connexion();
else if($Action == 'connexion_list') ConnexionList();
else if($Action == 'nocomplete') Noncomplete();
else if($Action == 'Translate') Translate();
else if(($Action == 'my') and $User->Licence(LICENCE_USER)) UserTranslated();
else if(($Action == 'mydevelop') and $User->Licence(LICENCE_USER)) UserUnfinished();
else if($Action == 'users') UserSelected();
else if($Action == 'userall') UserAll();
else if($Action == 'grouplist') GroupList();
else if($Action == 'userid') TranslatedByUserId();
else if($Action == 'search') TranslatedSearch();
else if($Action == 'searchentry') SearchEntry();
else if($Action == 'all') TranslatedAll();
else if($Action == 'filter') TranslatedFilter();
else echo('Neznámá akce');
      
ShowFooter();

?>
  
