source: trunk/Modules/Translation/TranslationList.php@ 747

Last change on this file since 747 was 747, checked in by maron, 11 years ago
  • Fixed: Filtering Not translated by Language
File size: 21.4 KB
Line 
1<?php
2
3class PageTranslationList extends Page
4{
5 function ShowFilter($GroupId = 0)
6 {
7 global $TranslationTree;
8
9 $Filter = array('SQL' => '');
10
11 $Output = '<form action="?" method="post">'.
12 '<table class="BaseTable"><tr>'.
13 '<th>Zpracování</th>'.
14 '<th>Skupina</th>'.
15 '<th>Verze</th>'.
16 '<th>Jazyk</th>'.
17 '<th>Překladatel</th>'.
18 '<th>Slova</th>'.
19 '<th>Položka</th>'.
20 '<th></th></tr><tr>';
21
22 // State
23 $Filter['State'] = GetParameter('state', 0, true, true);
24 $Output .= '<td><select name="state">';
25 $StateTypes = array('Všechny','Nepřeložené','Přeložené','Rozpracované','Anglické','Rozpracované-Nepřeložené','Chybějící $ ($N,$s..)','Chybějící $-Neopravený');
26 foreach ($StateTypes as $index=>$StateType) {
27 if($Filter['State'] == $index) $Selected = ' selected="selected"';
28 else $Selected = '';
29 $Output .= '<option value="'.$index.'"'.$Selected.'>'.$StateType.'</option>';
30 }
31 $Output .= '</select></td>';
32
33 // Translation group
34 if($GroupId == 0)
35 {
36 $Filter['Group'] = GetParameter('group', 0, true, true);
37 if($Filter['Group'] != 0)
38 {
39 if(isset($TranslationTree[$Filter['Group']]) == false) ErrorMessage('Překladová skupina dle zadaného Id neexistuje.');
40 $Table = $TranslationTree[$Filter['Group']]['TablePrefix'];
41 }
42 } else
43 {
44 $Filter['Group'] = $GroupId;
45 $Table = $TranslationTree[$Filter['Group']]['TablePrefix'];
46 }
47
48 $Output .= '<td><select name="group" style="width: 80px">';
49 if($Filter['Group'] == 0) $Selected = ' selected="selected"';
50 else $Selected = '';
51 $Output .= '<option value="0"'.$Selected.'>Všechny</option>';
52 $DbResult = $this->Database->query('SELECT `Id`,`Name` FROM `Group` ORDER BY `Name`');
53 while($Group = $DbResult->fetch_assoc())
54 {
55 if($Group['Id'] == $Filter['Group']) $Selected = ' selected="selected"';
56 else $Selected = '';
57 $Output .= '<option value="'.$Group['Id'].'"'.$Selected.'>'.$Group['Name'].'</option>';
58 }
59 $Output .= '</select></td>';
60
61 // Version
62 $Filter['Version'] = GetParameter('version', 0, true, true);
63 if($Filter['Version'] != 0)
64 {
65 $DbResult = $this->Database->query('SELECT `Id`, `BuildNumber`,`Version` FROM `ClientVersion` WHERE (`Imported` = 1) AND (`Id` ='.$Filter['Version'].')');
66 if($DbResult->num_rows > 0)
67 {
68 $DbRow = $DbResult->fetch_assoc();
69 $Filter['BuildNumber'] = $DbRow['BuildNumber'];
70 } else ErrorMessage('Zadaná verze klienta nenalezena');
71 }
72 $Output .= '<td><select name="version">';
73 if($Filter['Version'] == 0) $Selected = ' selected="selected"';
74 else $Selected = '';
75 $Output .= '<option value="0"'.$Selected.'>Všechny</option>';
76 $DbResult = $this->Database->query('SELECT `Id`, `BuildNumber`,`Version` FROM `ClientVersion` WHERE `Imported` = 1 ORDER BY `BuildNumber` DESC');
77 while($Version = $DbResult->fetch_assoc())
78 {
79 if($Version['Id'] == $Filter['Version']) $Selected = ' selected="selected"';
80 else $Selected = '';
81 $Output .= '<option value="'.$Version['Id'].'"'.$Selected.'>'.$Version['Version'].'</option>';
82 }
83 $Output .= '</select></td>';
84 if($Filter['Version'] != 0) $VersionFilter = ' AND (`VersionStart` <= '.$Filter['BuildNumber'].') AND (`VersionEnd` >= '.$Filter['BuildNumber'].')';
85 else $VersionFilter = '';
86 //else $Filter['SQL'] .= ' AND '; DISTINCT(Entry)
87
88 // Language
89 $Filter['Language'] = GetParameter('lang', 0, true, true);
90 $Output .= '<td><select name="lang">';
91 if($Filter['Language'] == 0) $Selected = ' selected="selected"';
92 else $Selected = '';
93 $Output .= '<option value="0"'.$Selected.'>Všechny</option>';
94 $DbResult = $this->Database->query('SELECT `Id`, `Name` FROM `Language` WHERE `Enabled` = 1 ORDER BY `Name`');
95 while($Language = $DbResult->fetch_assoc())
96 {
97 if($Language['Id'] == $Filter['Language']) $Selected = ' selected="selected"';
98 else $Selected = '';
99 $Output .= '<option value="'.$Language['Id'].'"'.$Selected.'>'.$Language['Name'].'</option>';
100 }
101 $Output .= '</select></td>';
102 if($Filter['Language'] != 0) $LanguageFilter = ' AND (`T`.`Language` = '.$Filter['Language'].')';
103 else $LanguageFilter = '';
104
105 // User
106 $Filter['User'] = GetParameter('user', 0, true, true);
107 $Output .= '<td><select name="user" style="width: 80px">';
108 if($Filter['User'] == 0) $Selected = ' selected="selected"';
109 else $Selected = '';
110 $Output .= '<option value="0"'.$Selected.'>Všichni</option>';
111 $DbResult = $this->Database->query('SELECT `Id`, `Name` FROM `User` ORDER BY `Name`');
112 while($User = $DbResult->fetch_assoc())
113 {
114 if($User['Id'] == $Filter['User']) $Selected = ' selected="selected"';
115 else $Selected = '';
116 $Output .= '<option value="'.$User['Id'].'"'.$Selected.'>'.$User['Name'].'</option>';
117 }
118 $Output .= '</select></td>';
119 if($Filter['User'] != 0) $UserFilter = ' AND (`User` = '.$Filter['User'].')';
120 else $UserFilter = '';
121
122 // Words
123 $Filter['Text'] = GetParameter('text', '', false, true);
124 $Output .= '<td><input name="text" type="text" style="width: 60px;" value="'.htmlentities($Filter['Text']).'"></td>';
125 if($Filter['Text'] != '')
126 {
127 $Items = array('(`T`.`ID` LIKE "%'.$Filter['Text'].'%")', '(`T`.`Entry` LIKE "%'.$Filter['Text'].'%")');
128 if($Filter['Group'] != 0)
129 foreach($TranslationTree[$Filter['Group']]['Items'] as $GroupItem)
130 if($GroupItem['Visible'] == 1)
131 $Items[] = '(`T`.`'.$GroupItem['Column'].'` LIKE "%'.$Filter['Text'].'%")';
132 $Filter['SQL'] .= ' AND ('.implode(' OR ', $Items).')';
133 }
134
135 // Entry
136 $Filter['Entry'] = GetParameter('entry', '', false, true);
137 $Output .= '<td><input name="entry" type="text" style="width: 60px;" value="'.htmlentities($Filter['Entry']).'"></td>';
138 if($Filter['Entry'] != '')
139 {
140 $Filter['SQL'] .= ' AND (`Entry` = "'.$Filter['Entry'].'")';
141 }
142
143 if($Filter['Group'] != 0)
144 {
145 $WithoutAlter = ' AND NOT EXISTS(SELECT 1 FROM `'.$Table.'` AS `Sub` WHERE '.
146 '(`Sub`.`Language` <> '.$this->System->Config['OriginalLanguage'].')'.$LanguageFilter.
147 ' AND (`Sub`.`Entry` = `T`.`Entry`) AND (`Sub`.`ID` != `T`.`ID`) AND (`Sub`.`Complete` = 1) AND '.
148 '(`Sub`.`VersionStart` = `T`.`VersionStart`) AND (`Sub`.`VersionEnd` = `T`.`VersionEnd`) LIMIT 1 ) ';
149 foreach($TranslationTree[$Filter['Group']]['Items'] as $GroupItem)
150 if($GroupItem['Visible'] == 1) {
151 $ItemsVar[] = 'LENGTH(`T`.`'.$GroupItem['Column'].'`) - LENGTH( REPLACE( `T`.`'.$GroupItem['Column'].'`, \'$\', \'\' ) ) '.
152 ' < ('.
153 'SELECT LENGTH(`Sub`.`'.$GroupItem['Column'].'`) - LENGTH( REPLACE( `Sub`.`'.$GroupItem['Column'].'`, \'$\', \'\' ) ) FROM `'.$Table.'` AS `Sub` WHERE '.
154 ' `Sub`.`Entry` = `T`.`Entry` AND `Sub`.`Language` = '.$this->System->Config['OriginalLanguage'].' AND '.
155 '`Sub`.`VersionStart` = `T`.`VersionStart` AND `Sub`.`VersionEnd` = `T`.`VersionEnd` LIMIT 1 '.
156 ')';
157 }
158 if($Filter['State'] == 0) $Filter['SQL'] .= $UserFilter.$VersionFilter.'';
159 else if($Filter['State'] == 1) $Filter['SQL'] .= $VersionFilter.' AND (`T`.`Language` = '.$this->System->Config['OriginalLanguage'].') '.
160 'AND NOT EXISTS(SELECT 1 FROM `'.$Table.'` AS `Sub` WHERE '.
161 '(`Sub`.`Language` = '.$Filter['Language'].')'.$UserFilter.
162 ' AND (`Sub`.`Entry` = `T`.`Entry`) AND (`Sub`.`Complete` = 1) AND '.
163 '(`Sub`.`VersionStart` = `T`.`VersionStart`) AND (`Sub`.`VersionEnd` = `T`.`VersionEnd`))';
164 else if($Filter['State'] == 2) $Filter['SQL'] .= $UserFilter.$LanguageFilter.$VersionFilter.' AND (`T`.`Complete` = 1)';
165 else if($Filter['State'] == 3) $Filter['SQL'] .= $UserFilter.$LanguageFilter.$VersionFilter.' AND (`T`.`Language` != '.$this->System->Config['OriginalLanguage'].
166 ') AND (`T`.`Complete` = 0)';
167 else if($Filter['State'] == 4) $Filter['SQL'] .= $VersionFilter.' AND (`T`.`Language` = '.$this->System->Config['OriginalLanguage'].')';
168 else if($Filter['State'] == 5) $Filter['SQL'] .= $UserFilter.$VersionFilter.$WithoutAlter.
169 ' AND (`T`.`Language` != '.$this->System->Config['OriginalLanguage'].
170 ') AND (`T`.`Complete` = 0)'.
171 '';
172 else if($Filter['State'] == 6) {
173 $Filter['SQL'] .= $UserFilter.$VersionFilter.' AND (`T`.`Complete` = 1) AND `T`.`Language` != '.$this->System->Config['OriginalLanguage'];
174 $Filter['SQL'] .= ' AND ('.implode(' OR ', $ItemsVar).') ';
175 }
176 else if($Filter['State'] == 7) {
177 $Filter['SQL'] .= $UserFilter.$VersionFilter.' AND (`T`.`Complete` = 1) AND `T`.`Language` != '.$this->System->Config['OriginalLanguage'];
178 $Filter['SQL'] .= ' '. $WithoutAlter;
179 $Filter['SQL'] .= ' AND ('.implode(' OR ', $ItemsVar).') ';
180 }
181 }
182
183 /*
184 // Ownership
185 if(array_key_exists('owner', $_GET) and is_numeric($_GET['owner'])) $Filter['Owner'] = $_GET['owner'];
186 else $Filter['Owner'] = 0;
187 $Output .= ' <td><select name="owner">';
188 if($Filter['Owner'] == 0) $Selected = ' selected="selected"';
189 else $Selected = '';
190 $Output .= '<option value="0"'.$Selected.'>Všech</option>';
191 if($Filter['Owner'] == 1) $Selected = ' selected="selected"';
192 else $Selected = '';
193 $Output .= '<option value="1"'.$Selected.'>Překladatelův tým</option>';
194 if($Filter['Owner'] == 2) $Selected = ' selected="selected"';
195 else $Selected = '';
196 $Output .= '<option value="2"'.$Selected.'>Překladatele</option>';
197 $Output .= '</select></td>';
198 if(($Filter['Owner'] == 2) AND ($Filter['User'] != 0)) $Filter['SQL'] .= ' AND (`User` = '.$Filter['User'].')';
199 */
200
201 $Output .= '<td><input type="submit" value="Filtrovat"/></td>';
202 $Output .= '</tr></table>';
203 $Output .= '</form><br/>';
204 $Filter['Output'] = $Output;
205 return($Filter);
206 }
207
208 function ShowTranslationList($Filter)
209 {
210 global $TranslationTree;
211
212 $Output = $Filter['Output'];
213 $Table = $TranslationTree[$Filter['Group']]['TablePrefix'];
214
215 $Query = 'SELECT `T`.`ID`, `T`.`Entry`, `T`.`VersionStart`, `T`.`VersionEnd`, '.
216 '`T`.`'.$TranslationTree[$Filter['Group']]['Items'][0]['Column'].'`, '.
217 '`User`.`Name` AS `UserName`, `User`.`ID` AS `UserId`, '.
218 '`Language`.`Name` AS `LanguageName`, `TS`.`Version` AS `VersionStartText`, `TE`.`Version` AS `VersionEndText` '.
219 'FROM `'.$Table.'` AS `T` '.
220 'LEFT JOIN `User` ON `User`.`ID` = `T`.`User` '.
221 'LEFT JOIN `Language` ON `Language`.`ID` = `T`.`Language` '.
222 'LEFT JOIN `ClientVersion` AS `TS` ON `TS`.`BuildNumber` = `T`.`VersionStart` '.
223 'LEFT JOIN `ClientVersion` AS `TE` ON `TE`.`BuildNumber` = `T`.`VersionEnd` '.
224 'WHERE 1 '.$Filter['SQL'];
225
226 // Get total item count
227 $DbResult = $this->Database->query('SELECT COUNT(*) FROM ('.$Query.') AS `TT`');
228 $DbRow = $DbResult->fetch_row();
229 $PageList = GetPageList($DbRow[0]);
230
231 $Output .= $PageList['Output'];
232 $TableColumns = array(
233 array('Name' => 'ID', 'Title' => 'Číslo'),
234 array('Name' => 'Entry', 'Title' => 'Položka'),
235 array('Name' => $TranslationTree[$Filter['Group']]['Items'][0]['Column'], 'Title' => 'Název'),
236 array('Name' => 'VersionStart', 'Title' => 'Verze'),
237 array('Name' => 'LanguageName', 'Title' => 'Jazyk'),
238 array('Name' => 'UserName', 'Title' => 'Překladatel'),
239 );
240
241 $Order = GetOrderTableHeader($TableColumns, 'VersionStart', 1);
242 $Output .= '<table class="BaseTable">'.
243 $Order['Output'];
244
245 $DbResult = $this->Database->query($Query.' '.$Order['SQL'].' '.$PageList['SQLLimit']);
246 while($Line = $DbResult->fetch_assoc())
247 {
248 $Output .= '<tr><td><a href="form.php?group='.$Filter['Group'].'&amp;ID='.$Line['ID'].'">'.$Line['ID'].'</a></td><td>'.$Line['Entry'].'</td>'.
249 '<td>'.htmlspecialchars($Line[$TranslationTree[$Filter['Group']]['Items'][0]['Column']]).'</td>'.
250 '<td>'.$Line['VersionStartText'].'-'.$Line['VersionEndText'].'</td>'.
251 '<td>'.$Line['LanguageName'].'</td>'.
252 '<td><a href="user.php?user='.$Line['UserId'].'">'.$Line['UserName'].'</a></td>';
253 '</tr>';
254 }
255 $Output .= '</table>'.
256 $PageList['Output'];
257 return($Output);
258 }
259
260 function ShowGroupList($Filter)
261 {
262 global $TranslationTree;
263
264 $Output = $Filter['Output'];
265
266 $Output .= '<table class="BaseTable"><tr><th>Skupina</th><th>Počet</th></tr>';
267 $Total = 0;
268 foreach($TranslationTree as $Group)
269 if($Group['TablePrefix'] != '')
270 {
271 $Filter = $this->ShowFilter($Group['Id']);
272 $ID = $this->Database->query('SELECT COUNT(*) FROM `'.$Group['TablePrefix'].'` AS `T` WHERE 1 '.$Filter['SQL']);
273 $Line = $ID->fetch_row();
274 if ($Line[0] <> '0')
275 $Output .= '<tr><td><a href="?group='.$Group['Id'].'">'.$Group['Name'].'</td><td>'.$Line[0].'</a></tr>';
276 $Total += $Line[0];
277 }
278 $Output .= '<tr><td><strong>Celkem</strong></td><td><strong>'.$Total.'</strong></td></tr>'.
279 '</table>';
280 return($Output);
281 }
282
283 function ShowGroupTypeList()
284 {
285 $DbResult = $this->Database->query('SELECT COUNT(*) FROM `Group`');
286 $DbRow = $DbResult->fetch_row();
287 $PageList = GetPageList($DbRow[0]);
288 $Output = '<h3>Seznam překladových skupin</h3>'.
289 $PageList['Output'];
290
291 $Output .= '<table class="BaseTable">';
292 $TableColumns = array(
293 array('Name' => 'Name', 'Title' => 'Jméno'),
294 array('Name' => 'SourceType', 'Title' => 'Typ zdroje'),
295 array('Name' => '', 'Title' => 'Zdroje'),
296 array('Name' => 'LastImport', 'Title' => 'Datum posledního importu'),
297 array('Name' => 'LastVersion', 'Title' => 'Verze posledního importu'),
298 );
299 if($this->System->User->Licence(LICENCE_ADMIN))
300 $TableColumns[] = array('Name' => '', 'Title' => 'Akce');
301
302 $Order = GetOrderTableHeader($TableColumns, 'Name', 0);
303 $Output .= $Order['Output'];
304
305 $DbResult = $this->Database->query('SELECT * FROM `Group`'.$Order['SQL'].$PageList['SQLLimit']);
306 while($Group = $DbResult->fetch_assoc())
307 {
308 $Output .= '<tr><td><a href="?group='.$Group['Id'].'&amp;action=filter">'.$Group['Name'].'</a></td><td>'.$Group['SourceType'].'</td><td>';
309 if($Group['MangosTable'] != '') $Output .= $Group['MangosTable'].'.sql ';
310 if($Group['DBCFileName'] != '') $Output .= $Group['DBCFileName'].'.dbc ';
311 if($Group['LuaFileName'] != '') $Output .= $Group['LuaFileName'].'.lua ';
312 $Output .= '</td><td><a title="Změny po posledním importu u vybrané překladové skupiny" href="log.php?group='.
313 $Group['Id'].'&amp;type=11">'.HumanDate($Group['LastImport']).'</a></td><td><a href="'.$this->System->Link('/client-version/?action=item&amp;id='.GetVersionWOWId($Group['LastVersion'])).'">'.GetVersionWOW($Group['LastVersion']).'</a></td>';
314 if($this->System->User->Licence(LICENCE_ADMIN))
315 $Output .= '<td><a href="?action=groupdelete&amp;id='.$Group['Id'].'">Smazat</a></td>';
316 $Output .= '</tr>';
317
318 }
319 $Output .= '</table>'.
320 '<br /><a title="Záznam změn po importu" href="log.php?type=11">Záznam změn v textech při importu</a><br/>';
321 if($this->System->User->Licence(LICENCE_ADMIN)) $Output .= '<a href="?action=groupadd">Přidat překladovou skupinu</a>';
322 return($Output);
323 }
324
325 function ShowMenu()
326 {
327 global $TranslationTree;
328
329 $GroupId = GetParameter('group', 0, true);
330 if($GroupId == 0) $Output = ShowMessage('Skupina nenalezena', MESSAGE_CRITICAL);
331 else {
332 $Table = $TranslationTree[$GroupId]['TablePrefix'];
333
334 $Output = '<h3>Základní filtrování textů</h3><br/>'.
335 '<table class="BaseTable"><tr><th>Odkaz</th><th>Popis</th></tr>'.
336 '<tr><td><a title="Všechny dostupné texty ve skupině" href="?group='.$GroupId.'&amp;state=4">Všechny</a></td>'.
337 '<td>Zobrazit všechny dostupné anglické texty ve skupině.</td></tr>'.
338 '<tr><td><a title="Přeložené texty, můžete zde hlasovat, nebo text opravovat" href="?group='.$GroupId.'&amp;state=2">Přeložené</a></td>'.
339 '<td>Zobrazit pouze již přeložené texty.</td></tr>'.
340 '<tr><td><a title="Nepřeložené texty" href="?group='.$GroupId.'&amp;state=1">Nepřeložené</a></td>'.
341 '<td>Dosud nepřeložené texty, které je potřeba přeložit.</td></tr>'.
342 '<tr><td><a title="Nedokončené texty" href="?group='.$GroupId.'&amp;state=3">Nedokončené</a></td>'.
343 '<td>Texty označené jako rozpracované.</td></tr>';
344
345 if($this->System->User->Licence(LICENCE_USER))
346 {
347 $Output .= '<tr><td><a title="Nedokončené texty" href="?group='.$GroupId.'&amp;state=3&amp;user='.$this->System->User->Id.'">Moje nedokončené</a></td>
348 <td>Nedokončené texty přihlášeného uživatele</td></tr>
349 <tr><td><a title="Přeložené texty přihlášeného uživatele" href="?group='.$GroupId.'&amp;state=2&amp;user='.$this->System->User->Id.'">Moje přeložené</a></td>
350 <td>Přeložené texty přihlášeného uživatele</td></tr>';
351 }
352
353 $Output .= '<tr><td><form action="?group='.$GroupId.'&amp;entry=" method="post"><div>'.
354 '<input type="text" name="text" size="8" />'.
355 '<input type="submit" value="Hledat" />'.
356 '</div></form>'.
357 '</td><td>Vyhledat pomocí textu</td></tr>';
358
359 $Output .= '<tr><td><form action="?group='.$GroupId.'&amp;text=" method="post"><div>'.
360 '<input type="text" name="entry" size="8" />'.
361 '<input type="submit" value="Hledat" />'.
362 '</div></form>'.
363 '</td><td>Zobrazit podle ID textu v databázi MaNGOSu</td></tr>';
364
365 $Output .= '</table>';
366 }
367 return($Output);
368 }
369
370 function ShowGroupAdd()
371 {
372 if($this->System->User->Licence(LICENCE_ADMIN))
373 {
374 $Output = '<h3>Vložení nové překladové skupiny</h3>'.
375 '<form action="?action=groupaddfinish" method="post">'.
376 '<table>'.
377 '<tr><td>Název:</td><td><input type="text" name="Name"/></td></tr>'.
378 '<tr><td>Název tabulky v databázi:</td><td>Text<input type="text" name="TablePrefix"/></td></tr>'.
379 '<tr><td colspan="2"><input type="submit" name="add" value="Přidat"/></td></tr>'.
380 '</table></form>';
381 } else $Output = ShowMessage(T('Access denied'), MESSAGE_CRITICAL);
382 return($Output);
383 }
384
385 function ShowGroupAddFinish()
386 {
387 if($this->System->User->Licence(LICENCE_ADMIN))
388 {
389 $TableName = 'Text'.$_POST['TablePrefix'];
390 $DbResult = $this->System->Database->select('Group', 'Id', 'TablePrefix="'.$TableName.'"');
391 if($DbResult->num_rows == 0)
392 {
393
394 $this->System->Database->query('CREATE TABLE IF NOT EXISTS `'.$TableName.'` (
395 `ID` int(11) NOT NULL AUTO_INCREMENT,
396 `Entry` int(11) NOT NULL,
397 `Name` varchar(255) NOT NULL,
398 `Language` int(11) NOT NULL DEFAULT "0",
399 `User` int(11) DEFAULT NULL,
400 `Complete` int(11) NOT NULL,
401 `CompleteParts` int(11) NOT NULL,
402 `Take` int(11) DEFAULT NULL,
403 `VersionStart` int(11) NOT NULL,
404 `VersionEnd` int(11) NOT NULL,
405 `ModifyTime` datetime NOT NULL,
406 PRIMARY KEY (`ID`),
407 KEY `Entry` (`Entry`),
408 KEY `User` (`User`),
409 KEY `Take` (`Take`),
410 KEY `Language` (`Language`),
411 KEY `Complete` (`Complete`),
412 KEY `VersionStart` (`VersionStart`),
413 KEY `VersionEnd` (`VersionEnd`),
414 KEY `ModifyTime` (`ModifyTime`)
415) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;');
416
417 $this->System->Database->query('ALTER TABLE `'.$TableName.'`
418 ADD CONSTRAINT `'.$TableName.'_ibfk_1` FOREIGN KEY (`Language`) REFERENCES `Language` (`Id`),
419 ADD CONSTRAINT `'.$TableName.'_ibfk_2` FOREIGN KEY (`User`) REFERENCES `User` (`ID`),
420 ADD CONSTRAINT `'.$TableName.'_ibfk_3` FOREIGN KEY (`Take`) REFERENCES `'.$TableName.'` (`ID`);');
421 $DbResult = $this->System->Database->insert('Group', array('Name' => $_POST['Name'],
422 'TablePrefix' => $TableName, 'PrimaryKeyItem' => 'Entry'));
423 $Group = $this->System->Database->insert_id;
424 $this->System->Database->insert('GroupItem', array('Group' => $Group,
425 'Name' => 'Jméno', 'Column' => 'Name', 'Visible' => 1));
426 $Output = ShowMessage('Překladová skupina vytvořena', MESSAGE_INFORMATION);
427 } else $Output = ShowMessage('Překladová skupina '.$TableName.' již existuje', MESSAGE_CRITICAL);
428 $Output .= $this->ShowGroupTypeList();
429 } else $Output = ShowMessage(T('Access denied'), MESSAGE_CRITICAL);
430 return($Output);
431 }
432
433 function ShowGroupDelete()
434 {
435 if($this->System->User->Licence(LICENCE_ADMIN))
436 {
437 $DbResult = $this->System->Database->select('Group', '*', 'Id='.$_GET['id']);
438 if($DbResult->num_rows == 1)
439 {
440 $Group = $DbResult->fetch_assoc();
441 $this->Database->query('DROP TABLE `'.$Group['TablePrefix'].'`');
442 $this->Database->query('DELETE FROM `GroupItem` WHERE `Group`='.$Group['Id']);
443 $this->Database->query('DELETE FROM `Group` WHERE `Id`='.$Group['Id']);
444 $Output = ShowMessage('Překladová skupina '.$Group['Name'].' smazána', MESSAGE_INFORMATION);
445 } else $Output = ShowMessage('Překladová skupina nenalezena', MESSAGE_CRITICAL);
446 } else $Output = ShowMessage(T('Access denied'), MESSAGE_CRITICAL);
447 $Output .= $this->ShowGroupTypeList();
448 return($Output);
449 }
450
451 function Show()
452 {
453 $this->Title = T('Translation groups');
454 $Action = GetParameter('action', '');
455 if($Action == 'filter') $Output = $this->ShowMenu();
456 else if($Action == 'grouplist') $Output = $this->ShowGroupTypeList();
457 else if($Action == 'groupadd') $Output = $this->ShowGroupAdd();
458 else if($Action == 'groupdelete') $Output = $this->ShowGroupDelete();
459 else if($Action == 'groupaddfinish') $Output = $this->ShowGroupAddFinish();
460 else
461 {
462 $Filter = $this->ShowFilter();
463 if($Filter['Group'] > 0) $Output = $this->ShowTranslationList($Filter);
464 else $Output = $this->ShowGroupList($Filter);
465 }
466 return($Output);
467 }
468}
Note: See TracBrowser for help on using the repository browser.