<?php

class PageTranslationComparison extends Page
{
  function CompareString($String1, $String2)
  {
    $Result = '';
    //TODO: Implement colored comparison
    //strcasecmp($String1, $String2) == 0 je totožné
    //  echo $String1.'<br /><br />';
    $ArrStr1 = explode(' ', $String1);
    $ArrStr2 = explode(' ', $String2);

    for ($i = 0; $i < count($ArrStr1); $i++)
    {
      if (isset($ArrStr2[$i]))
      {
        if ($ArrStr1[$i] == $ArrStr2[$i])
        {
          $Result .= $ArrStr1[$i].' ';
        } else
        {
          $find = false;
          for ($j = 0; $j < count($ArrStr2); $j++)
          {
            if (($ArrStr1[$i] == $ArrStr2[$j]) and ($find == false))
            {
              $Result .= $ArrStr1[$i].' ';
              $find = true;
            }
          }
          if ($find == false)
          $Result .= '<span class="edit">'.$ArrStr1[$i].' </span>';
        }
      } else $Result .= '<span class="edit">'.$ArrStr1[$i].' </span>';
    }
    return $Result;
  }

  function Show(): string
  {
    $User = ModuleUser::Cast($this->System->GetModule('User'))->User;
    $TranslationTree = $this->System->ModuleManager->Modules['Translation']->GetTranslationTree();

    $Output = '';

    if ($User->Licence(LICENCE_USER))
    {
      $Output = 'Text je porovnáván vždy ku předešlému (vlevo). Změny jsou zvýrazněny <span class="edit">barvou.</span><br /><br />';
  
      $GroupId = LoadGroupIdParameter();
      $Table = $TranslationTree[$GroupId]['TablePrefix'];

      if (array_key_exists('entry', $_GET))
      {
        $Textentry = $_GET['entry'];
        if ((array_key_exists('ID1', $_GET)) and ($_GET['ID1'] <> -1))  //porovnání pouze 2 textů
        {
          $TextID1 = $_GET['ID1'];
          $TextID2 = $_GET['ID2'];
          $WhereID = ' AND ((`'.$Table.'`.`ID` = '.$TextID1.') OR (`'.$Table.'`.`ID` = '.$TextID2.'))';
        } else $WhereID = '';

        $DataID = $this->Database->query('SELECT `'.$Table.'`.*, `User`.`Name` AS `UserName`, '.
          '`Language`.`Name` AS `LanguageName` '.
          'FROM '.$Table.' LEFT JOIN `User` ON `User`.`Id` = `'.$Table.'`.`User` '.
          ' LEFT JOIN `Language` ON `Language`.`Id` = `'.$Table.'`.`Language` '.
          'WHERE `Entry` = '.$Textentry.' '.$WhereID.' ORDER BY `Language`');
        while ($Line[] = $DataID->fetch_assoc());
        array_pop($Line);

        $Output .= 'Počet porovnávaných textů: <strong>'.count($Line).'</strong><br /> ';

        $Output .= '<strong>Číslo textu: <a href="http://www.wowhead.com/?quest='.$Textentry.'">'.$Textentry.'</a></strong>'.
          '<table class="BaseTable">'.
          '<tr><th>Přeložil</th>';
        foreach ($Line as $Index => $LineItem)
          $Output .= '<th>'.$LineItem['UserName'].'</th>';
        $Output .= '</tr>'.
          '<tr>'.
          '<th>ID textu</th>';
        foreach ($Line as $Index => $LineItem)
          $Output .= '<td><a href="form.php?group='.$GroupId.'&amp;ID='.$LineItem['ID'].'">'.$LineItem['ID'].'</a></td>';
        $Output .= '</tr>'.
          '<tr><th>Převzato</th>';
        foreach ($Line as $Index => $LineItem)
          $Output .= '<td><a href="form.php?group='.$GroupId.'&amp;ID='.$LineItem['Take'].'">'.$LineItem['Take'].'</a></td>';
        $Output .= '</tr>'.
          '<tr><th>'.T('Language').'</th>';
        foreach ($Line as $Index => $LineItem)
          $Output .= '<td>'.T($LineItem['LanguageName']).'</td>';
        $Output .= '</tr>'.
          '<tr><th>'.T('Version').'</th>';
        foreach ($Line as $Index => $LineItem)
          $Output .= '<td>'.GetVersionWOW($LineItem['VersionStart']).' - '.GetVersionWOW($LineItem['VersionEnd']).'</td>';
        $Output .= '</tr>';
        foreach ($TranslationTree[$GroupId]['Items'] as $Index => $TextItem)
        {
          $writethis = false;
          for ($i = 0; $i < count($Line); $i++)
          {
            if ($Line[$i][$TextItem['Column']] <> '') $writethis = true;
          }
          if ($writethis)
          {
            $Output .= '<tr><th>'.$TextItem['Name'].'</th>';
            for ($i = 0; $i < count($Line); $i++)
            {
              if ($i > 0)
              {
                $Output .= '<td>';
                $Output .= str_replace("\n", '<br/>', $this->CompareString(htmlspecialchars($Line[$i][$TextItem['Column']]),htmlspecialchars($Line[$i - 1][$TextItem['Column']])));
                $Output .= '</td>';
              } else $Output .= '<td>'.htmlspecialchars($Line[$i][$TextItem['Column']]).'</td>';
            }
            $Output .= '</tr>';
          }
        }
        $Output .= '</table>';
      } else $Output .= ShowMessage('Nebylo zadáno ID.', MESSAGE_CRITICAL);
    } else $Output .= ShowMessage('Porovnávat můžou pouze překladatelé!', MESSAGE_CRITICAL);

    return $Output;
  }
}
