1 | <?php
|
---|
2 |
|
---|
3 | include_once('includes/global.php');
|
---|
4 |
|
---|
5 | function Search()
|
---|
6 | {
|
---|
7 | global $System, $TranslationTree, $Config;
|
---|
8 |
|
---|
9 | if(array_key_exists('search', $_GET)) $Search = $_GET['search'];
|
---|
10 | else if(array_key_exists('search', $_POST)) $Search = $_POST['search'];
|
---|
11 | else $Search = '';
|
---|
12 |
|
---|
13 | $Output = '<table class="BaseTable"><tr><th>Skupina</th><th>Výsledků</th></tr>';
|
---|
14 | foreach($TranslationTree as $Group)
|
---|
15 | {
|
---|
16 | $Table = $Group['TablePrefix'];
|
---|
17 |
|
---|
18 | $sql = 'SELECT COUNT(*) FROM `'.$Table.'` WHERE '.
|
---|
19 | ' (`ID` LIKE "%'.$Search.'%")'.
|
---|
20 | ' OR (`Entry` LIKE "%'.$Search.'%")';
|
---|
21 | foreach($Group['Items'] as $Item)
|
---|
22 | {
|
---|
23 | if($Item['Column'] != '') $sql .= ' OR `'.$Item['Column'].'` LIKE "%'.$Search.'%"';
|
---|
24 | }
|
---|
25 | $DbResult = $System->Database->query($sql);
|
---|
26 | $Line = $DbResult->fetch_row();
|
---|
27 | $Output .= '<tr><td><a href="TranslationList.php?group='.$Group['Id'].'&user=0&state=0&text='.$Search.'&entry=">'.$Group['Name'].'</a></td><td>'.$Line[0].'</td></tr>';
|
---|
28 | }
|
---|
29 |
|
---|
30 | $DbResult = $System->Database->query('SELECT count(*) FROM `User` WHERE `Name` LIKE "%'.$Search.'%"');
|
---|
31 | $Line = $DbResult->fetch_row();
|
---|
32 | $Output .= '<tr><td><a href="userlist.php?search='.$Search.'">Uživatelé</a></td><td>'.$Line[0].'</td></tr>';
|
---|
33 |
|
---|
34 | $DbResult = $System->Database->query('SELECT count(*) FROM `Team` WHERE `Name` LIKE "%'.$Search.'%" OR `Description` LIKE "%'.$Search.'%"');
|
---|
35 | $Line = $DbResult->fetch_row();
|
---|
36 | $Output .= '<tr><td><a href="team.php?search='.$Search.'">Týmy</a></td><td>'.$Line[0].'</td></tr>';
|
---|
37 |
|
---|
38 | $DbResult = $System->Database->query('SELECT count(*) FROM `CzWoWPackageVersion` WHERE `Text` LIKE "%'.$Search.'%"');
|
---|
39 | $Line = $DbResult->fetch_row();
|
---|
40 | $Output .= '<tr><td><a href="download.php?addon">Čeština pro klienta</a></td><td>'.$Line[0].'</td></tr>';
|
---|
41 | $Output .= '<tr><td><a href="aowow/?search='.$Search.'">Vyhledávací databáze AoWoW</a></td></tr>';
|
---|
42 |
|
---|
43 | $DbResult = $System->Database->query('SELECT count(*) FROM `Dictionary` WHERE (`Text` LIKE "%'.$Search.'%" OR `Description` LIKE "%'.$Search.'%") AND `Language` = '.$Config['OriginalLanguage']);
|
---|
44 | $Line = $DbResult->fetch_row();
|
---|
45 | $Output .= '<tr><td><a href="dictionary.php?search='.$Search.'">Slovníček</a></td><td>'.$Line[0].'</td></tr>';
|
---|
46 |
|
---|
47 | $Output .= '</table>';
|
---|
48 | return($Output);
|
---|
49 | }
|
---|
50 |
|
---|
51 | function DatabaseKit()
|
---|
52 | {
|
---|
53 | global $System, $TranslationTree, $User, $Config;
|
---|
54 |
|
---|
55 | if($User->Licence(LICENCE_ADMIN))
|
---|
56 | {
|
---|
57 | $Output = '<form action="?action=dbkit" method="post">'.
|
---|
58 | 'Najít: <input type="text" name="find" /><br />'.
|
---|
59 | 'Nahradit: <input type="text" name="replace" /><br />'.
|
---|
60 | '<input type="submit" value="Najít/nahradit" /><br />'.
|
---|
61 | '</form><br />'.
|
---|
62 | '<a href="?action=dbkit&Take">Opravit data v sloupci Take</a><br />'.
|
---|
63 | '<a href="?action=dbkit&ShortCut">Opravit data v sloupci ShortCut</a><br />';
|
---|
64 |
|
---|
65 | $Output .= '<br /><form action="?action=dbkit" method="post">'.
|
---|
66 | 'Vymazat log typ : <input type="text" name="Type" /> '.
|
---|
67 | '<input type="submit" value="Vymazat" /><br />'.
|
---|
68 | '</form><br />';
|
---|
69 |
|
---|
70 | if(array_key_exists('Type', $_POST))
|
---|
71 | {
|
---|
72 | $sql = 'DELETE FROM `Log` WHERE `Type` = '.$_POST['Type'];
|
---|
73 | $System->Database->query($sql);
|
---|
74 | WriteLog('Vymazán log '.$_POST['Type'], LOG_TYPE_MODERATOR);
|
---|
75 | $Output .= ' Vymazán log '.$_POST['Type'];
|
---|
76 | }
|
---|
77 |
|
---|
78 | if(array_key_exists('find', $_POST))
|
---|
79 | {
|
---|
80 | $Output .= 'Začínám nahrazovat: <br />';
|
---|
81 | $find = $_POST['find'];
|
---|
82 | $replace = $_POST['replace'];
|
---|
83 |
|
---|
84 | foreach($TranslationTree as $Group)
|
---|
85 | {
|
---|
86 | $Table = $Group['TablePrefix'];
|
---|
87 | $Output .= $Table.' ';
|
---|
88 |
|
---|
89 | $sql = 'SELECT * FROM '.$Table.' WHERE (`Language` <> '.$Config['OriginalLanguage'].') AND (';
|
---|
90 | foreach($Group['Items'] as $Item)
|
---|
91 | {
|
---|
92 | if($Item['Column'] != '') $sql .= '`'.$Item['Column'].'` LIKE "%'.$find.'%" OR ';
|
---|
93 | }
|
---|
94 | $sql = substr($sql,0,strlen($sql)-4);
|
---|
95 | $sql .= ')';
|
---|
96 |
|
---|
97 | $DbResult = $System->Database->query($sql);
|
---|
98 | while ($Line = $DbResult->fetch_assoc())
|
---|
99 | {
|
---|
100 | $sql = 'UPDATE '.$Table.' SET ';
|
---|
101 | foreach($Group['Items'] as $Item)
|
---|
102 | {
|
---|
103 | $Column_text = addslashes(str_replace($find, $replace, $Line[$Item['Column']]));
|
---|
104 | $sql .= ' '.$Item['Column'].' = "'.$Column_text.'",';
|
---|
105 | }
|
---|
106 | $sql = substr($sql,0,strlen($sql)-1);
|
---|
107 | $sql .= ' WHERE `ID` = '.$Line['ID'];
|
---|
108 | $System->Database->query($sql);
|
---|
109 | $Output .= '.';
|
---|
110 | }
|
---|
111 |
|
---|
112 | $Output .= ' <strong>Hotovo</strong> <br />';
|
---|
113 | if($DbResult->num_rows > 0)
|
---|
114 | {
|
---|
115 | WriteLog('Použita oprava DB ovlivněno '.$DbResult->num_rows.' řádků z tabulky '.$Table.', "'.$find.'" nahrazeno za "'.$replace.'"', LOG_TYPE_MODERATOR);
|
---|
116 | $Output .= ' Použita oprava DB ovlivněno '.$DbResult->num_rows.' řádků z tabulky '.$Table.', "'.$find.'" nahrazeno za "'.$replace.'"<br />';
|
---|
117 | }
|
---|
118 | }
|
---|
119 | }
|
---|
120 |
|
---|
121 | // Oprava dat v sloupci Take
|
---|
122 | if(array_key_exists('Take',$_GET))
|
---|
123 | {
|
---|
124 | $Output .= 'Začínám opravovat Take: <br />';
|
---|
125 |
|
---|
126 | foreach($TranslationTree as $Group)
|
---|
127 | {
|
---|
128 | $Table = $Group['TablePrefix'];
|
---|
129 | $Output .= $Table.' ';
|
---|
130 |
|
---|
131 | $sql = 'SELECT `ID`, `Entry` AS EntryTran, `Take`, '.
|
---|
132 | '(SELECT `ID` FROM `'.$Table.'` WHERE (`Language = '.$Config['OriginalLanguage'].') AND (`Entry` = `EntryTran`) LIMIT 1) AS `IDOrig` '.
|
---|
133 | 'FROM `'.$Table.'` AS `Tran` WHERE (`Language` <> '.$Config['OriginalLanguage'].') AND ((`Take` IS NULL) OR '.
|
---|
134 | '(`ID` = `Take`) OR NOT EXISTS(SELECT 1 FROM `'.$Table.'` WHERE `ID` = `Tran`.`Take`))';
|
---|
135 |
|
---|
136 | $DbResult = $System->Database->query($sql);
|
---|
137 | while($Line = $DbResult->fetch_assoc())
|
---|
138 | {
|
---|
139 | $sql = 'UPDATE `'.$Table.'` SET `Take` = '.$Line['IDOrig'].' WHERE `ID` = '.$Line['ID'];
|
---|
140 | $System->Database->query($sql);
|
---|
141 | $Output .= '.';
|
---|
142 | }
|
---|
143 |
|
---|
144 | $Output .= ' <strong>Hotovo</strong> <br />';
|
---|
145 | if($DbResult->num_rows > 0)
|
---|
146 | {
|
---|
147 | WriteLog('Použita oprava DB na sloupec Take '.$DbResult->num_rows.' řádků z tabulky '.$Table, LOG_TYPE_MODERATOR);
|
---|
148 | $Output .= ' Použita oprava DB na sloupec Take '.$DbResult->num_rows.' řádků z tabulky '.$Table.'<br />';
|
---|
149 | }
|
---|
150 | }
|
---|
151 | }
|
---|
152 | // Oprava dat ShortCut
|
---|
153 | if(array_key_exists('ShortCut', $_GET))
|
---|
154 | {
|
---|
155 | $Output .= 'Začínám opravovat Take: <br />';
|
---|
156 |
|
---|
157 | $Tables = array('TextGlobalString', 'TextGlueString');
|
---|
158 |
|
---|
159 | foreach($Tables as $Table)
|
---|
160 | {
|
---|
161 | $Output .= $Table.' ';
|
---|
162 | $sql = 'SELECT `gs_orig`.`ID`, `gs_tran`.`Entry`, `gs_tran`.`ShortCut` AS `ShortCut_tran`, '.
|
---|
163 | '`gs_orig`.`ShortCut` AS `ShortCut_orig` FROM `'.$Table.'` AS `gs_tran` '.
|
---|
164 | 'JOIN `'.$Table.'` AS `gs_orig` ON `gs_orig`.`Entry` = `gs_tran`.`Entry` WHERE '.
|
---|
165 | '`gs_tran`.`Language` <> '.$Config['OriginalLanguage'].' AND `gs_tran`.`ShortCut` <> `gs_orig`.`ShortCut`';
|
---|
166 | $DbResult = $System->Database->query($sql);
|
---|
167 | while ($Line = $DbResult->fetch_assoc())
|
---|
168 | {
|
---|
169 | $sql = 'UPDATE `'.$Table.'` SET `ShortCut` = '.$Line['ShortCut_orig'].' WHERE `ID` = '.$Line['ID'];
|
---|
170 | $System->Database->query($sql);
|
---|
171 | $Output .= '.';
|
---|
172 | }
|
---|
173 |
|
---|
174 | $Output = ' <strong>Hotovo</strong> <br />';
|
---|
175 | if($DbResult->num_rows > 0)
|
---|
176 | {
|
---|
177 | WriteLog('Použita oprava DB na sloupec ShortCut '.$DbResult->num_rows.' řádků z tabulky '.$Table, LOG_TYPE_MODERATOR);
|
---|
178 | $Output .= ' Použita oprava DB na sloupec ShortCut '.$DbResult->num_rows.' řádků z tabulky '.$Table.'<br />';
|
---|
179 | }
|
---|
180 | }
|
---|
181 | }
|
---|
182 | } else $Output = ShowMessage('Nemáte oprávnění.', MESSAGE_CRITICAL);
|
---|
183 | return($Output);
|
---|
184 | }
|
---|
185 |
|
---|
186 | function Delete()
|
---|
187 | {
|
---|
188 | global $System, $User, $Config;
|
---|
189 |
|
---|
190 | if($User->Licence(LICENCE_MODERATOR))
|
---|
191 | {
|
---|
192 | $TextID = $_GET['ID'];
|
---|
193 | $System->Database->query('DELETE FROM `'.$Table.'` WHERE `ID` = '.$TextID.' AND `Language` <> '.$Config['OriginalLanguage']);
|
---|
194 | $Output = ShowMessage('Překlad byl smazán.');
|
---|
195 | WriteLog('Překlad byl smazán! <a href="form.php?group='.$GroupID.'&ID='.$TextID.'">'.$TextID.'</a>', LOG_TYPE_MODERATOR);
|
---|
196 | } else $Output = ShowMessage('Nemáte oprávnění', MESSAGE_CRITICAL);
|
---|
197 | return($Output);
|
---|
198 | }
|
---|
199 |
|
---|
200 | function ShoutBox()
|
---|
201 | {
|
---|
202 | global $System, $User;
|
---|
203 |
|
---|
204 | $Output = '';
|
---|
205 | if($User->Licence(LICENCE_USER))
|
---|
206 | {
|
---|
207 | if(!array_key_exists('add', $_POST))
|
---|
208 | {
|
---|
209 | $Output .= '<form action="action.php?action=shoutbox" method="post">'.
|
---|
210 | '<fieldset><legend>Nová zpráva kecátka</legend>'.
|
---|
211 | 'Uživatel: ';
|
---|
212 | if($User->Licence(LICENCE_USER)) $Output .= '<b>'.$User->Name.'</b><br />';
|
---|
213 | else $Output .= '<input type="text" name="user" /><br />';
|
---|
214 | $Output .= 'Text zprávy: <br/>
|
---|
215 | <textarea onkeydown="ResizeTextArea(this)" name="text" cols="40"></textarea> <br/>
|
---|
216 | <input type="submit" name="add" value="Odeslat" /><br /></fieldset>
|
---|
217 | </form>';
|
---|
218 | } else
|
---|
219 | {
|
---|
220 | if(array_key_exists('text', $_POST))
|
---|
221 | {
|
---|
222 | $Text = $_POST['text'];
|
---|
223 | if(trim($Text) == '') $Output .= ShowMessage('Nelze vložit prázdnou zprávu.', MESSAGE_WARNING);
|
---|
224 | else
|
---|
225 | {
|
---|
226 | // Protection against mutiple post of same message
|
---|
227 | $DbResult = $System->Database->query('SELECT `Text` FROM `ShoutBox` WHERE (`User` = "'.$User->Id.'") ORDER BY `Date` DESC LIMIT 1');
|
---|
228 | if($DbResult->num_rows > 0)
|
---|
229 | {
|
---|
230 | $DbRow = $DbResult->fetch_assoc();
|
---|
231 | } else $DbRow['Text'] = '';
|
---|
232 |
|
---|
233 | if($DbRow['Text'] == $Text) $Output .= ShowMessage('Nelze vložit stejnou zprávu vícekrát za sebou.', MESSAGE_WARNING);
|
---|
234 | else
|
---|
235 | {
|
---|
236 | $System->Database->query('INSERT INTO `ShoutBox` ( `User`, `UserName` , `Text` , `Date` , `IP` ) '.
|
---|
237 | ' VALUES ('.$User->Id.', "'.$User->Name.'", "'.$Text.'", NOW(), "'.$_SERVER['REMOTE_ADDR'].'")');
|
---|
238 | $Output .= ShowMessage('Zpráva vložena.');
|
---|
239 | }
|
---|
240 | }
|
---|
241 | } else $Output .= ShowMessage('Nezadán text pro novou zprávu.', MESSAGE_CRITICAL);
|
---|
242 | }
|
---|
243 | $Output .= '<br/>';
|
---|
244 | } else $Output .= ShowMessage('Pro vkládaní zpráv musíte byt registrováni.', MESSAGE_CRITICAL);
|
---|
245 | $Output .= ShoutBoxView();
|
---|
246 | return($Output);
|
---|
247 | }
|
---|
248 |
|
---|
249 | function ShoutBoxView()
|
---|
250 | {
|
---|
251 | global $System, $User;
|
---|
252 |
|
---|
253 | $DbResult = $System->Database->query('SELECT COUNT(*) FROM `ShoutBox`');
|
---|
254 | $DbRow = $DbResult->fetch_row();
|
---|
255 | $PageList = GetPageList($DbRow[0]);
|
---|
256 |
|
---|
257 | $Output = '<h3>Kecátko</h3>'.$PageList['Output'];
|
---|
258 | if($User->Licence(LICENCE_USER)) $Output .= ' <a href="action.php?action=shoutbox">Vložit</a>';
|
---|
259 | $Output .= '<div class="shoutbox">';
|
---|
260 | $DbResult = $System->Database->query('SELECT * FROM `ShoutBox` ORDER BY `ID` DESC '.$PageList['SQLLimit']);
|
---|
261 | while($Line = $DbResult->fetch_assoc())
|
---|
262 | $Output .= '<div><strong>'.$Line['UserName'].'</strong>: '.MakeActiveLinks($Line['Text']).'</div>';
|
---|
263 | $Output .= '</div>'.$PageList['Output'];
|
---|
264 | return($Output);
|
---|
265 | }
|
---|
266 |
|
---|
267 | function ShowNewsHistory()
|
---|
268 | {
|
---|
269 | global $System, $User;
|
---|
270 |
|
---|
271 | $DbResult = $System->Database->query('SELECT COUNT(*) FROM `News`');
|
---|
272 | $DbRow = $DbResult->fetch_row();
|
---|
273 | $PageList = GetPageList($DbRow[0]);
|
---|
274 |
|
---|
275 | $Output = '<h3>Novinky</h3>'.$PageList['Output'];
|
---|
276 | if($User->Licence(LICENCE_ADMIN)) $Output .= ' <a href="admin/?action=addnew">Vložit</a>';
|
---|
277 | $Output .= '<div class="shoutbox">';
|
---|
278 | $DbResult = $System->Database->query('SELECT `News`.`Time`, `News`.`Text`, `News`.`Title`, '.
|
---|
279 | '`User`.`Name` AS `User` FROM `News` JOIN `User` ON `User`.`Id`=`News`.`User` ORDER BY `News`.`Time` DESC '.$PageList['SQLLimit']);
|
---|
280 | while($Line = $DbResult->fetch_assoc())
|
---|
281 | $Output .= '<div><strong>'.$Line['Title'].' ('.HumanDate($Line['Time']).')</strong><br/> '.$Line['Text'].' ('.$Line['User'].')</div>';
|
---|
282 | $Output .= '</div>'.$PageList['Output'];
|
---|
283 | return($Output);
|
---|
284 | }
|
---|
285 |
|
---|
286 | if(array_key_exists('group', $_GET)) $GroupId = LoadGroupIdParameter();
|
---|
287 | else $GroupId = 1;
|
---|
288 | //$Table = $TranslationTree[$GroupId]['TablePrefix'];
|
---|
289 | $Action = '';
|
---|
290 | if(array_key_exists('action', $_GET)) $Action = $_GET['action'];
|
---|
291 |
|
---|
292 | if($Action == 'shoutbox') $Output = ShoutBox();
|
---|
293 | else if($Action == 'news') $Output = ShowNewsHistory();
|
---|
294 | else if($Action == 'search') $Output = Search();
|
---|
295 | else if($Action == 'delete') $Output = Delete();
|
---|
296 | else if($Action == 'dbkit') $Output = DatabaseKit();
|
---|
297 | else if($Action == 'ShoutBoxView') $Output = ShoutBoxView();
|
---|
298 | else $Output = ShowMessage('Nebyla zadána žádná akce.', MESSAGE_CRITICAL);
|
---|
299 |
|
---|
300 | ShowPage($Output);
|
---|
301 |
|
---|
302 | ?>
|
---|
303 |
|
---|