source: trunk/action.php@ 542

Last change on this file since 542 was 541, checked in by chronos, 12 years ago
  • Opraveno: Chyba v SQL dotazu při hledání uživatelů.
  • Opraveno: Chyba zobrazení výstupu exportu, pokud nebyla vybrána verze klienta.
File size: 12.6 KB
Line 
1<?php
2
3include_once('includes/global.php');
4
5function 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'].'&amp;user=0&amp;state=0&amp;text='.$Search.'&amp;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
51function 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&amp;Take">Opravit data v sloupci Take</a><br />'.
63 '<a href="?action=dbkit&amp;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
186function 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.'&amp;ID='.$TextID.'">'.$TextID.'</a>', LOG_TYPE_MODERATOR);
196 } else $Output = ShowMessage('Nemáte oprávnění', MESSAGE_CRITICAL);
197 return($Output);
198}
199
200function 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
249function 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
267function 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
286if(array_key_exists('group', $_GET)) $GroupId = LoadGroupIdParameter();
287 else $GroupId = 1;
288//$Table = $TranslationTree[$GroupId]['TablePrefix'];
289$Action = '';
290if(array_key_exists('action', $_GET)) $Action = $_GET['action'];
291
292if($Action == 'shoutbox') $Output = ShoutBox();
293else if($Action == 'news') $Output = ShowNewsHistory();
294else if($Action == 'search') $Output = Search();
295else if($Action == 'delete') $Output = Delete();
296else if($Action == 'dbkit') $Output = DatabaseKit();
297else if($Action == 'ShoutBoxView') $Output = ShoutBoxView();
298else $Output = ShowMessage('Nebyla zadána žádná akce.', MESSAGE_CRITICAL);
299
300ShowPage($Output);
301
302?>
303
Note: See TracBrowser for help on using the repository browser.