| 1 | <?php
|
|---|
| 2 |
|
|---|
| 3 | class PageTranslationComparison extends Page
|
|---|
| 4 | {
|
|---|
| 5 | function CompareString($String1, $String2)
|
|---|
| 6 | {
|
|---|
| 7 | $Result = '';
|
|---|
| 8 | //TODO: Implement colored comparison
|
|---|
| 9 | //strcasecmp($String1, $String2) == 0 je totožné
|
|---|
| 10 | // echo $String1.'<br /><br />';
|
|---|
| 11 | $ArrStr1 = explode(' ', $String1);
|
|---|
| 12 | $ArrStr2 = explode(' ', $String2);
|
|---|
| 13 |
|
|---|
| 14 | for ($i = 0; $i < count($ArrStr1); $i++)
|
|---|
| 15 | {
|
|---|
| 16 | if (isset($ArrStr2[$i]))
|
|---|
| 17 | {
|
|---|
| 18 | if ($ArrStr1[$i] == $ArrStr2[$i])
|
|---|
| 19 | {
|
|---|
| 20 | $Result .= $ArrStr1[$i].' ';
|
|---|
| 21 | } else
|
|---|
| 22 | {
|
|---|
| 23 | $find = false;
|
|---|
| 24 | for ($j = 0; $j < count($ArrStr2); $j++)
|
|---|
| 25 | {
|
|---|
| 26 | if (($ArrStr1[$i] == $ArrStr2[$j]) and ($find == false))
|
|---|
| 27 | {
|
|---|
| 28 | $Result .= $ArrStr1[$i].' ';
|
|---|
| 29 | $find = true;
|
|---|
| 30 | }
|
|---|
| 31 | }
|
|---|
| 32 | if ($find == false)
|
|---|
| 33 | $Result .= '<span class="edit">'.$ArrStr1[$i].' </span>';
|
|---|
| 34 | }
|
|---|
| 35 | } else $Result .= '<span class="edit">'.$ArrStr1[$i].' </span>';
|
|---|
| 36 | }
|
|---|
| 37 | return $Result;
|
|---|
| 38 | }
|
|---|
| 39 |
|
|---|
| 40 | function Show(): string
|
|---|
| 41 | {
|
|---|
| 42 | $User = ModuleUser::Cast($this->System->GetModule('User'))->User;
|
|---|
| 43 | $TranslationTree = $this->System->ModuleManager->Modules['Translation']->GetTranslationTree();
|
|---|
| 44 |
|
|---|
| 45 | $Output = '';
|
|---|
| 46 |
|
|---|
| 47 | if ($User->Licence(LICENCE_USER))
|
|---|
| 48 | {
|
|---|
| 49 | $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 />';
|
|---|
| 50 |
|
|---|
| 51 | $GroupId = LoadGroupIdParameter();
|
|---|
| 52 | $Table = $TranslationTree[$GroupId]['TablePrefix'];
|
|---|
| 53 |
|
|---|
| 54 | if (array_key_exists('entry', $_GET))
|
|---|
| 55 | {
|
|---|
| 56 | $Textentry = $_GET['entry'];
|
|---|
| 57 | if ((array_key_exists('ID1', $_GET)) and ($_GET['ID1'] <> -1)) //porovnání pouze 2 textů
|
|---|
| 58 | {
|
|---|
| 59 | $TextID1 = $_GET['ID1'];
|
|---|
| 60 | $TextID2 = $_GET['ID2'];
|
|---|
| 61 | $WhereID = ' AND ((`'.$Table.'`.`ID` = '.$TextID1.') OR (`'.$Table.'`.`ID` = '.$TextID2.'))';
|
|---|
| 62 | } else $WhereID = '';
|
|---|
| 63 |
|
|---|
| 64 | $DataID = $this->Database->query('SELECT `'.$Table.'`.*, `User`.`Name` AS `UserName`, '.
|
|---|
| 65 | '`Language`.`Name` AS `LanguageName` '.
|
|---|
| 66 | 'FROM '.$Table.' LEFT JOIN `User` ON `User`.`Id` = `'.$Table.'`.`User` '.
|
|---|
| 67 | ' LEFT JOIN `Language` ON `Language`.`Id` = `'.$Table.'`.`Language` '.
|
|---|
| 68 | 'WHERE `Entry` = '.$Textentry.' '.$WhereID.' ORDER BY `Language`');
|
|---|
| 69 | while ($Line[] = $DataID->fetch_assoc());
|
|---|
| 70 | array_pop($Line);
|
|---|
| 71 |
|
|---|
| 72 | $Output .= 'Počet porovnávaných textů: <strong>'.count($Line).'</strong><br /> ';
|
|---|
| 73 |
|
|---|
| 74 | $Output .= '<strong>Číslo textu: <a href="http://www.wowhead.com/?quest='.$Textentry.'">'.$Textentry.'</a></strong>'.
|
|---|
| 75 | '<table class="BaseTable">'.
|
|---|
| 76 | '<tr><th>Přeložil</th>';
|
|---|
| 77 | foreach ($Line as $Index => $LineItem)
|
|---|
| 78 | $Output .= '<th>'.$LineItem['UserName'].'</th>';
|
|---|
| 79 | $Output .= '</tr>'.
|
|---|
| 80 | '<tr>'.
|
|---|
| 81 | '<th>ID textu</th>';
|
|---|
| 82 | foreach ($Line as $Index => $LineItem)
|
|---|
| 83 | $Output .= '<td><a href="form.php?group='.$GroupId.'&ID='.$LineItem['ID'].'">'.$LineItem['ID'].'</a></td>';
|
|---|
| 84 | $Output .= '</tr>'.
|
|---|
| 85 | '<tr><th>Převzato</th>';
|
|---|
| 86 | foreach ($Line as $Index => $LineItem)
|
|---|
| 87 | $Output .= '<td><a href="form.php?group='.$GroupId.'&ID='.$LineItem['Take'].'">'.$LineItem['Take'].'</a></td>';
|
|---|
| 88 | $Output .= '</tr>'.
|
|---|
| 89 | '<tr><th>'.T('Language').'</th>';
|
|---|
| 90 | foreach ($Line as $Index => $LineItem)
|
|---|
| 91 | $Output .= '<td>'.T($LineItem['LanguageName']).'</td>';
|
|---|
| 92 | $Output .= '</tr>'.
|
|---|
| 93 | '<tr><th>'.T('Version').'</th>';
|
|---|
| 94 | foreach ($Line as $Index => $LineItem)
|
|---|
| 95 | $Output .= '<td>'.GetVersionWOW($LineItem['VersionStart']).' - '.GetVersionWOW($LineItem['VersionEnd']).'</td>';
|
|---|
| 96 | $Output .= '</tr>';
|
|---|
| 97 | foreach ($TranslationTree[$GroupId]['Items'] as $Index => $TextItem)
|
|---|
| 98 | {
|
|---|
| 99 | $writethis = false;
|
|---|
| 100 | for ($i = 0; $i < count($Line); $i++)
|
|---|
| 101 | {
|
|---|
| 102 | if ($Line[$i][$TextItem['Column']] <> '') $writethis = true;
|
|---|
| 103 | }
|
|---|
| 104 | if ($writethis)
|
|---|
| 105 | {
|
|---|
| 106 | $Output .= '<tr><th>'.$TextItem['Name'].'</th>';
|
|---|
| 107 | for ($i = 0; $i < count($Line); $i++)
|
|---|
| 108 | {
|
|---|
| 109 | if ($i > 0)
|
|---|
| 110 | {
|
|---|
| 111 | $Output .= '<td>';
|
|---|
| 112 | $Output .= str_replace("\n", '<br/>', $this->CompareString(htmlspecialchars($Line[$i][$TextItem['Column']]),htmlspecialchars($Line[$i - 1][$TextItem['Column']])));
|
|---|
| 113 | $Output .= '</td>';
|
|---|
| 114 | } else $Output .= '<td>'.htmlspecialchars($Line[$i][$TextItem['Column']]).'</td>';
|
|---|
| 115 | }
|
|---|
| 116 | $Output .= '</tr>';
|
|---|
| 117 | }
|
|---|
| 118 | }
|
|---|
| 119 | $Output .= '</table>';
|
|---|
| 120 | } else $Output .= ShowMessage('Nebylo zadáno ID.', MESSAGE_CRITICAL);
|
|---|
| 121 | } else $Output .= ShowMessage('Porovnávat můžou pouze překladatelé!', MESSAGE_CRITICAL);
|
|---|
| 122 |
|
|---|
| 123 | return $Output;
|
|---|
| 124 | }
|
|---|
| 125 | }
|
|---|