<?php

include('includes/global.php');

function GetIDbyName($Table) 
{
	global $TranslationTree;
  
	foreach($TranslationTree as $TableID => $Value) 
  {
		//echo $Value['TablePrefix'].'='.$Table.'<br>';
    	if ($Value['TablePrefix'] == $Table) return $TableID;
	}
}

function GetTranslatNames($Text) 
{
  global $Database, $mode;
  
 	if ($mode == 0) echo ('..Přesné');
 	if ($mode == 1) echo ('..Všechny přeložené');
 	if ($mode == 2) echo ('..Nepřeložené');
	echo('<div style="overflow: auto; width: 100%; height: 345px;"><table width="98%" class="BaseTable">');
	echo('<tr><th>Originál</th>'.'<th>Překlad</th>');
  $TablesColumn = array
  (
    'gameobject' => 'Name',
    'creature' => 'name',
    'item' => 'Name',
    'transports' => 'Name',
    'areatrigger_teleport' => 'Name',
    'areatrigger_tavern' => 'Name',
  );
 /* $TablesID = array('gameobject' => 5,
  'creature' => 6,
  'item' => 4,
  'transports' => 'Name',
  'areatrigger_teleport' => 'Name',
  'areatrigger_tavern' => 'Name',); */
  
  foreach($TablesColumn as $Table => $Column) 
  {  
    $sql = 'SELECT ID,'.$Column.',(SELECT Name FROM '.$Table.' as T WHERE O.entry = T.entry AND Language <> 0 LIMIT 1) as tran FROM '.$Table.' as O WHERE ';
    $groupby = ' GROUP BY '.$Column;
  
    $ArrStr = explode(' ', $Text);
    $where = 'Language = 0 ';
    if ($mode == 1) $where .= ' AND EXISTS(SELECT 1 FROM '.$Table.' AS sub WHERE (sub.Language <> 0) AND (sub.entry = O.entry))';
    if ($mode == 2) $where .= ' AND NOT EXISTS(SELECT 1 FROM '.$Table.' AS sub WHERE (sub.Language <> 0) AND (sub.entry = O.entry))';
    $where .= ' AND ('; 
 
    for($i = 0; $i < count($ArrStr); $i++)
    {
  	  if (strpos($ArrStr[$i],'\'s') > 0) $ArrStr[$i] = substr($ArrStr[$i],0,strlen($ArrStr[$i])-4);
  	  if (strpos($ArrStr[$i],',') > 0) $ArrStr[$i] = substr($ArrStr[$i],0,strlen($ArrStr[$i])-1);
  	  if (strpos($ArrStr[$i],'.') > 0) $ArrStr[$i] = substr($ArrStr[$i],0,strlen($ArrStr[$i])-1);
  	  if (strpos($ArrStr[$i],'!') > 0) $ArrStr[$i] = substr($ArrStr[$i],0,strlen($ArrStr[$i])-1);
  	  if (strpos($ArrStr[$i],'?') > 0) $ArrStr[$i] = substr($ArrStr[$i],0,strlen($ArrStr[$i])-1);

  	  if (strlen($ArrStr[$i]) > 4)
	      $where .= 'O.'.$Column.' LIKE "%'.addslashes($ArrStr[$i]).'%" OR ';
    }
    $where = substr($where,0,strlen($where)-4);
    $where .= ')';
	  echo ('</tr>');

	  $ID = $Database->SQLCommand($sql.$where.$groupby);
	  while($Line = mysql_fetch_assoc($ID)) 
    {
    	if ($mode == 0) 
      {
    		if (strpos(strtolower($Text),strtolower($Line[$Column])) > 0) 
        {
    		  echo('<tr><td>'.$Line[$Column].'</td>');
    		  if ($Line['tran'] <> '') echo('<td>'.$Line['tran'].'</td></tr>');
    			else echo('<td><a target="_NEW2" href="form.php?group='.GetIDbyName($Table).'&amp;ID='.$Line['ID'].'">Překládat</a></td></tr>');
    		}
    	} else 
      {
    	 	echo('<tr><td>'.$Line[$Column].'</td>');
    	    if ($Line['tran'] <> '') echo('<td>'.$Line['tran'].'</td></tr>');
    		 	else echo('<td><a target="_NEW2" href="form.php?group='.GetIDbyName($Table).'&amp;ID='.$Line['ID'].'">Překládat</a></td></tr>');
    	}
	  }
  }
	echo('</table></div>');
}

if(array_key_exists('Page', $_GET)) $_SESSION['Page'] = $_GET['Page']; 
else if(!array_key_exists('Page', $_SESSION)) $_SESSION['Page'] = 1;

if(!isset($_SESSION['language'])) 
{
  if(Licence(LICENCE_USER)) 
  {
    $DbResult = $Database->SQLCommand('SELECT Language FROM user WHERE ID='.$_SESSION['UserID']);
    $User = mysql_fetch_assoc($DbResult);
    $_SESSION['language'] = $User['Language'];
  } else $_SESSION['language'] = 1;
}
if(array_key_exists('language', $_GET)) $_SESSION['language'] = $_GET['language'];

ShowPage();

echo('<h3>Slovníček</h3>');
  
if(array_key_exists('group', $_GET)) 
{   
	if(array_key_exists('group', $_GET)) $GroupId = $_GET['group']; else $GroupId = 1;
	if(array_key_exists('mode', $_GET)) $mode = $_GET['mode']; else $mode = 0; //0 = přesné názvy, 1=všechny názvy, 2=nepřeložené
	$Table = $TranslationTree[$GroupId]['TablePrefix'];

	if(array_key_exists('ID', $_GET)) 
  {
    $TextID = $_GET['ID'];  
		echo ('Přeložené názvy vztahující se k překladu: <a target="_NEW" href="form.php?group='.$GroupId.'&amp;ID='.$TextID.'">'.$TextID.'</a><br />'. 
	'<a href="?mode=1&amp;group='.$GroupId.'&amp;ID='.$TextID.'" title="Zobrazit všechny podobné výsledky">Všechny</a> '.
	'<a href="?mode=0&amp;group='.$GroupId.'&amp;ID='.$TextID.'" title="Zobrazit pouze přesné výsledky">Přesné</a> '.
	'<a href="?mode=2&amp;group='.$GroupId.'&amp;ID='.$TextID.'" title="Zobrazit všechny nepřeložené">Nepřeložené</a> ');
    $Line = mysql_fetch_assoc($Database->SQLCommand('SELECT * FROM '.$Table.' Where ID = '.$TextID));
    if(!$Line) die('Překlad nenalezen.');
		
		$Text = '';
		foreach($TranslationTree[$GroupId]['Items'] as $Index => $TextItem)
			$Text .= ' '.$Line[$TextItem['Column']];
				GetTranslatNames($Text);
	}
} else 
{  
  if(array_key_exists('action', $_GET)) 
  {
    if(($_GET['action'] == 'insert')  and Licence(LICENCE_USER))
    {
      echo('<form action="dictionary.php?action=save" method="post">'.
      '<fieldset><legend>Vložení nového slova</legend>'.
      '<table><tr><td>'.
      'Původní anglické slovo:</td><td><input type="text" name="Original" /></td></tr>'.
      '<tr><td>Přeložené:</td><td><input type="text" name="Translated" /></td></tr>'.
      '<tr><td>Popis:</td><td><input type="text" name="Description" /></td></tr>'.
      '<tr><td colspan="2"><input type="submit" value="Uložit" /></td></tr>'.
      '</td></tr></table>'.
      '</fieldset>'.
      '</form>');    
    } else
    if(($_GET['action'] == 'save') and Licence(LICENCE_USER))
    {
      $DbResult = $Database->SQLCommand('SELECT * FROM `dictionary` WHERE `Text` = "'.$_POST['Original'].'" AND Language=0');
      if(mysql_num_rows($DbResult) > 0)
      {
        $DbRow = mysql_fetch_assoc($DbResult);
        $Entry = $DbRow['Entry'];
      } else 
      {
        $DbResult = $Database->SQLCommand('SELECT MAX(Entry) FROM dictionary');
        $DbRow = mysql_fetch_row($DbResult);
        $Entry = $DbRow[0] + 1;
        $Database->SQLCommand('INSERT INTO `dictionary` ( `Text` , `Entry` , `Description` , `User`, `Language` ) VALUES ("'.$_POST['Original'].'", "'.$Entry.'", "", 0, 0);');
      }
      
      $DbResult = $Database->SQLCommand('SELECT Id FROM `dictionary` WHERE `Entry` = '.$Entry.' AND Language='.$_SESSION['language'].' AND User='.$_SESSION['UserID']);
      if(mysql_num_rows($DbResult) > 0)
      {
        $DbRow = mysql_fetch_assoc($DbResult);
        $Database->SQLCommand('UPDATE `dictionary` SET `Text`="'.$_POST['Translated'].'", `Description` = "'.$_POST['Description'].'" WHERE Id='.$DbRow['Id']);
      } else      
        $Database->SQLCommand('INSERT INTO `dictionary` ( `Text` , `Entry` , `Description` , `User`, `Language` ) VALUES ("'.$_POST['Translated'].'", "'.$Entry.'", "'.$_POST['Description'].'", '.$_SESSION['UserID'].', '.$_SESSION['language'].')');
      echo('Záznam byl uložen!');
    } else
    if(($_GET['action'] == 'remove') and Licence(LICENCE_USER))
    {
      $Database->SQLCommand('DELETE FROM dictionary WHERE User='.$_SESSION['UserID'].' AND Language='.$_SESSION['language'].' AND Entry='.$_GET['entry']);
    } else
    if(($_GET['action'] == 'modify')  and Licence(LICENCE_USER))
    {
      $DbResult = $Database->SQLCommand('SELECT * FROM dictionary WHERE User='.$_SESSION['UserID'].' AND Entry='.$_GET['entry'].' AND Language='.$_SESSION['language']);
      $DbRow = mysql_fetch_assoc($DbResult);
      $DbResult = $Database->SQLCommand('SELECT * FROM dictionary WHERE User=0 AND Entry='.$_GET['entry'].' AND Language=0');
      $DbRow2 = mysql_fetch_assoc($DbResult);
      echo('<form action="dictionary.php?action=save" method="post">'.
      '<fieldset><legend>Upravení slova</legend>'.
      '<table><tr><td>'.
      'Původní anglické slovo:</td><td><input type="text" name="Original" value="'.$DbRow2['Text'].'" /></td></tr>'.
      '<tr><td>Přeložené:</td><td><input type="text" name="Translated"  value="'.$DbRow['Text'].'" /></td></tr>'.
      '<tr><td>Popis:</td><td><input type="text" name="Description"  value="'.$DbRow['Description'].'" /></td></tr>'.
      '<tr><td colspan="2"><input type="submit" value="Uložit" /></td></tr>'.
      '</td></tr></table>'.
      '</fieldset>'.
      '</form>');    
    } 
  }

  echo('<form action="dictionary.php" method="get" style="margin: 0px; padding: 0px;">'.
  '<table style="width: 100%; height: 100%;">');

  if(array_key_exists('search', $_GET)) $Search = $_GET['search'];
    else $Search = '';
       
  echo('<tr><td>
    <input type="text" value="'.$Search.'" name="search" size="30" />
    <input type="submit" value="Vyhledat" />');
  if(Licence(LICENCE_USER)) echo(' <a href="dictionary.php?action=insert">Vložit slovo</a>');
           
  echo('</td></tr>'); 
  echo('<tr><td>Jazyk: ');
  foreach($LanguageList as $Language)
    if($Language['Enabled'] == 1)
    {
      if($Language['Id'] == $_SESSION['language']) echo('<strong>');
      echo(' <a href="?language='.$Language['Id'].'">'.$Language['Name'].'</a>');
      if($Language['Id'] == $_SESSION['language']) echo('</strong>');
    }
  echo('</td></tr>');
  echo('<tr><td>');
  //<div style="overflow: auto; width: 100%; height: 100%;">');

  if($Search <> '') 
  {
    $sql = 'SELECT `user`.`user` AS `UserName`, `user`. `ID` AS `UserID`, `T3`.`Entry`, `T3`.`Original`, `T3`.`Translated`, `T3`.`Description` FROM (SELECT T2.User, `T1`.Language, `T1`.`Text` AS Original, `T2`.`Text` AS `Translated`, `T2`.`Description`, `T1`.`Entry` AS `Entry` FROM `dictionary` AS `T1` JOIN `dictionary` AS `T2` ON `T2`.`Entry` = `T1`.`Entry` AND `T2`.`Language` = '.$_SESSION['language'].' WHERE LOWER(T1.Text) LIKE LOWER("%'.$Search.'%") OR LOWER(T1.Description) LIKE LOWER("%'.$Search.'%") ) AS T3 JOIN `user` ON `user`.`ID` = `T3`.`User` WHERE `T3`.`Language` = 0';
  } else $sql = 'SELECT `user`.`user` AS `UserName`, `ID` AS `UserID`, `T3`.`Entry`, `T3`.`Original`, `T3`.`Translated`, `T3`.`Description` FROM (SELECT T2.User, `T1`.Language, `T1`.`Text` AS Original, `T2`.`Text` AS `Translated`, `T2`.`Description`, `T1`.`Entry` AS `Entry` FROM `dictionary` AS `T1` JOIN `dictionary` AS `T2` ON `T2`.`Entry` = `T1`.`Entry` AND `T2`.`Language` = '.$_SESSION['language'].') AS T3 JOIN `user` ON `user`.`ID` = `T3`.`User` WHERE `T3`.`Language` = 0';
  $sql_page = $sql.' LIMIT '.($_SESSION['Page'] - 1) * $Config['Web']['ItemsPerPage'].','.$Config['Web']['ItemsPerPage'];

  ListPaging('?Page=', '('.$sql.') AS T1', '', $Config['Web']['ItemsPerPage'], $_SESSION['Page']);
  echo('<table width="98%" class="BaseTable">
    <tr><th>'.$LanguageList[0]['Name'].'</th>
    <th>'.$LanguageList[$_SESSION['language']]['Name'].'</th>
    <th>Popis</th><th>Překladatel</th>');
    if(Licence(LICENCE_USER)) echo('<th>Akce</th>');
    echo('</tr>');
  $ID = $Database->SQLCommand($sql_page);
  while ($Line = mysql_fetch_assoc($ID)) 
  {
    echo('<tr>
    <td>'.$Line['Original'].'</td>
    <td><strong>'.$Line['Translated'].'</strong></td>
    <td>'.$Line['Description'].'</td>
    <td>'.$Line['UserName'].'</td>');
    if(Licence(LICENCE_USER))
    {
      if($Line['UserID'] == $_SESSION['UserID']) 
        echo('<td><a href="?action=remove&amp;entry='.$Line['Entry'].'">Smazat</a> <a href="?action=modify&amp;entry='.$Line['Entry'].'">Upravit</a></td>');
        else echo('<td></td>');
    }
    echo('</tr>');
  }
  echo('</table>');  
  ListPaging('?Page=', '('.$sql.') AS T1', '', $Config['Web']['ItemsPerPage'], $_SESSION['Page']);
  echo('</td></tr>'); 
  echo('</table></form>');
}

ShowFooter();

?>
