source: trunk/includes/global.php@ 436

Last change on this file since 436 was 436, checked in by george, 15 years ago
  • Upraveno: Přepracován systém zobrazení výpisu překladů. Použito obecné jemnější filtrování dle více vlastností jako verze klienta či jazyk.
  • Odebráno: Zobrazování souvislostí connexion. Bylo by potřeba realizovat obecněji pro všechny skupiny. I tak musí překladatelé využívat sofistikovanější systémy jako wowhead pro zjištěný souvisejících textů.
File size: 13.7 KB
Line 
1<?php
2
3$ScriptStartTime = GetMicrotime();
4
5if(isset($_SERVER['REMOTE_ADDR'])) session_start();
6
7// SQL injection hack protection
8foreach($_POST as $Index => $Item)
9{
10 if(is_array($_POST[$Index]))
11 foreach($_POST[$Index] as $Index2 => $Item2) $_POST[$Index][$Index2] = addslashes($Item2);
12 else $_POST[$Index] = addslashes($_POST[$Index]);
13}
14foreach($_GET as $Index => $Item) $_GET[$Index] = addslashes($_GET[$Index]);
15
16include_once(dirname(__FILE__).'/config.php');
17include_once(dirname(__FILE__).'/error.php');
18include_once(dirname(__FILE__).'/databaseconection.php');
19include_once(dirname(__FILE__).'/global_function.php');
20include_once(dirname(__FILE__).'/rss.php');
21include_once(dirname(__FILE__).'/system.php');
22include_once(dirname(__FILE__).'/user.php');
23
24$Database = new Database($Config['Database']['Host'], $Config['Database']['User'], $Config['Database']['Password']);
25$Database->SQLCommand('SET NAMES '.$Config['Database']['Charset']);
26$Database->SelectDatabase($Config['Database']['Database']);
27
28$TranslationTree = GetTranslationTree();
29$LanguageList = GetLanguageList();
30
31$System = new System();
32$System->Init();
33$User = new User();
34
35function GetMicrotime()
36{
37 list($Usec, $Sec) = explode(' ', microtime());
38 return ((float)$Usec + (float)$Sec);
39}
40
41function ShowShoutbox()
42{
43 global $Database, $Config, $User, $System;
44
45 echo('<strong><a href="'.$System->Link('/action.php?action=ShoutBoxView').'">Kecátko:</a></strong>');
46 if($User->Licence(LICENCE_USER))
47 echo(' <a href="'.$System->Link('/action.php?action=shoutbox').'">Vložit</a>');
48 echo('<div class="box"><table>');
49 $ID = $Database->SQLCommand('SELECT * FROM `ShoutBox` ORDER BY `ID` DESC LIMIT 30');
50 while($Line = mysql_fetch_assoc($ID))
51 echo('<tr><td><strong>'.$Line['User'].'</strong>: '.htmlspecialchars($Line['Text']).'</td></tr>');
52 echo('</table></div>');
53}
54
55function ShowTopBar()
56{
57 global $Config, $Database, $User, $System;
58
59 echo('<div class="Menu">');
60 echo('<span class="MenuItem"></span>');
61 if($User->Licence(LICENCE_USER))
62 {
63 $DbResult = $Database->SQLCommand('SELECT `Id`, `Name` FROM `Team` WHERE `Id`='.$User->Team);
64 $Team = mysql_fetch_assoc($DbResult);
65
66 //echo('<span class="MenuItem">Moje překlady: <a href="">Dokončené</a> <a href="">Rozpracované</a> <a href="">Exporty</a> Tým: <a href="">'.$Team['name'].'</a></span>');
67 echo('<span class="MenuItem2">'.$User->Name.' <a href="'.$System->Link('/?action=logout').'">Odhlášení</a> <a href="'.$System->Link('/Options.php').'">Nastavení</a>');
68 echo(' <a title="Vámi přeložené texty" href="'.$System->Link('/TranslationList.php?user='.$User->Id.'&amp;group=0&amp;state=2').'">Moje překlady</a></span>');
69 } else
70 {
71 echo('<span class="MenuItem2"><form action="?action=login" method="post"> Jméno: <input type="text" name="LoginUser" size="8 " /> Heslo: <td><input type="password" name="LoginPass" size="8" /> <input type="submit" value="Přihlásit" /></form> &nbsp; <a href="'.$System->Link('/registrace.php').'">Registrace</a></span>');
72 }
73 echo('</div>');
74}
75
76function ShowLoginBox()
77{
78 global $User;
79
80 if($User->Licence(LICENCE_USER))
81 {
82 // echo 'Jste přihlášen jako: <b>'.$User->Id.'</b> <a href="index.php?Logout">Odhlásit</a>';
83 } else
84 {
85 echo('<strong>Přihlášení:</strong>
86 <form action="" method="post">
87 <table>
88 <tr>
89 <td><input type="text" name="LoginUser" size="13" /></td>
90 </tr>
91 <tr>
92 <td><input type="password" name="LoginPass" size="13" /></td>
93 </tr>
94 <tr>
95 <th><input type="submit" value="Přihlásit" /></th>
96 </tr>
97 </table>
98 </form>');
99 }
100}
101
102function ShowSearchBox()
103{
104 global $System;
105
106 echo('<strong>Hledání:</strong>'.
107 '<form action="'.$System->Link('/action.php').'" method="get"><div>'.
108 '<input type="hidden" name="action" value="search" />'.
109 '<table>'.
110 '<tr>'.
111 '<td><input type="text" name="search" size="13" /></td>'.
112 '</tr>'.
113 '<tr>'.
114 '<th><input type="submit" value="Hledat" /></th>'.
115 '</tr>'.
116 '</table></div>'.
117 '</form>');
118}
119
120function ShowMainMenu()
121{
122 global $TranslationTree, $Config, $User, $System;
123
124 $Menu = array
125 (
126 $System->Link('/') => array(LICENCE_ANONYMOUS, 'Hlavní stránka', 'Domů'),
127 'http://www.heroesoffantasy.cz/forum/viewforum.php?f=22' => array(LICENCE_ANONYMOUS, 'Diskuze na téma překládání', 'Fórum projektu'),
128 $System->Link('/dictionary.php') => array(LICENCE_ANONYMOUS, 'Slovník WoW výrazů', 'Slovníček'),
129 $System->Link('/statistic.php') => array(LICENCE_ANONYMOUS, 'Stav dokončení překládů', 'Stav dokončení'),
130 $System->Link('/userlist.php?action=nofilter') => array(LICENCE_ANONYMOUS, 'Seznam registrovaných uživatelů', 'Překladatelé'),
131 $System->Link('/team.php?search=') => array(LICENCE_ANONYMOUS, 'Seznam překladatelských týmů', 'Týmy'),
132 $System->Link('/export/') => array(LICENCE_ANONYMOUS, 'Zde si můžete stáhnout přeložené texty', 'Exporty'),
133 $System->Link('/download.php') => array(LICENCE_ANONYMOUS, 'Stahování různých pomocných souborů a programů', 'Soubory'),
134 $System->Link('/info.php') => array(LICENCE_ANONYMOUS, 'Informace k překladu hry', 'Informace'),
135 $System->Link('/TranslationList.php?action=grouplist') => array(LICENCE_ANONYMOUS, 'Informace o překladových skupinách', 'Zdroje dat'),
136 $System->Link('/banners.php') => array(LICENCE_ANONYMOUS, 'Informace k propagaci tohoto projektu', 'Propagace'),
137 $System->Link('/promotion.php') => array(LICENCE_ANONYMOUS, 'Prezentace a motivace překladu', 'Prezentace'),
138 $System->Link('/version.php') => array(LICENCE_ANONYMOUS, 'Seznam verzí herního klienta', 'Verze hry'),
139 $System->Link('/aowow/') => array(LICENCE_ANONYMOUS, 'Vyhledávací databáze podobná WoWHead s překlady', 'AoWoW'),
140 $System->Link('/server.php') => array(LICENCE_ANONYMOUS, 'Pomocný WoW server pro překladatele', 'Test server'),
141'http://embed.mibbit.com/?server=game.zdechov.net%3A6667&amp;channel=%23wowpreklad&amp;forcePrompt=true&amp;charset=utf-8' => array(LICENCE_ANONYMOUS, 'IRC chat pro překladatele', 'Chat'),
142 $System->Link('/admin.php') => array(LICENCE_ADMIN, 'Volby pro správu', 'Administrace'),
143 );
144
145 echo('<strong>Hlavní menu:</strong>'.
146 '<div class="verticalmenu"><ul>');
147 foreach($Menu as $MenuTarget => $MenuItem)
148 {
149 if(isset($MenuItem[3])) $OnClick = ' onclick="'.$MenuItem[3].'"';
150 else $OnClick = '';
151 if($User->Licence($MenuItem[0])) echo('<li><a class="verticalmenua" title="'.$MenuItem[1].'" href="'.$MenuTarget.'"'.$OnClick.'>'.$MenuItem[2].'</a></li>');
152 }
153 echo('</ul></div>');
154}
155
156function ShowTranslatedMenu()
157{
158 global $TranslationTree, $Config, $Database, $User, $System;
159
160 echo('<strong>Překladové skupiny:</strong><br /><div id="TranslationMenu">');
161 foreach($TranslationTree as $Group)
162 {
163 echo('<div id="menuitem-group'.$Group['Id'].'" onmousemove="show(\'group'.$Group['Id'].'\')" onmouseout="hide(\'group'.$Group['Id'].'\')">'.
164 '<a href="'.$System->Link('/TranslationList.php?group='.$Group['Id'].'&amp;action=filter').'">'.$Group['Name'].'</a></div>'.
165 '<div id="group'.$Group['Id'].'" class="hidden-menu-item" onmousemove="show(\'group'.$Group['Id'].'\')" onmouseout="hide(\'group'.$Group['Id'].'\')">');
166 echo('&nbsp;<a title="Zde můžete začít překládat" href="'.$System->Link('/TranslationList.php?group='.$Group['Id'].'&amp;state=1&amp;user=0&amp;entry=&amp;text=').'">Nepřeložené</a><br />'.
167 '&nbsp;<a title="Přeložené texty, můžete zde hlasovat, nebo opravovat překlady" href="'.$System->Link('/TranslationList.php?group='.$Group['Id'].'&amp;state=2&amp;user=0&amp;entry=&amp;text=').'">Přeložené</a><br />');
168 if($User->Licence(LICENCE_USER))
169 {
170 echo('&nbsp;<a title="Nedokončené překlady" href="'.$System->Link('/TranslationList.php?group='.$Group['Id'].'&amp;state=3').'">Rozepsané</a><br />
171 &nbsp;<a title="Všechny překlady, které jste přeložil" href="'.$System->Link('/TranslationList.php?group='.$Group['Id'].'&amp;state=1&amp;user='.$User->Id).'&amp;entry=&amp;text=">Vlastní</a><br />');
172 }
173 echo('&nbsp;<a title="Sestavit speciální filtr" href="'.$System->Link('/TranslationList.php?group='.$Group['Id'].'&amp;action=filter').'">Filtr</a><br />');
174 echo('</div>');
175 }
176 echo ('</div>');
177}
178
179function ShowOnlineUserList()
180{
181 global $Database, $Moderators, $User;
182
183 echo('Online překladatelé:<br />');
184 $ID = $Database->SQLCommand('SELECT `Name`, `GM`, `ID` FROM `User` WHERE `LastLogin` >= NOW() - 300 AND ((`LastLogout` < `LastLogin`) OR (ISNULL(`LastLogout`)))');
185 while($DbUser = mysql_fetch_assoc($ID))
186 {
187 if($User->Licence(LICENCE_MODERATOR)) $Name = '<a href="user.php?user='.$DbUser['ID'].'">'.$DbUser['Name'].'</a>';
188 else $Name = $DbUser['Name'];
189 $TextGM = '';
190 echo('<strong>'.$Name.'</strong>'.$TextGM.'<br />');
191 }
192}
193
194function ShowPage()
195{
196 global $User, $Config, $Database, $RSSChannels, $PageFooterRequested, $System;
197
198 echo('<?xml version="1.0" encoding="'.$Config['Web']['Charset'].'"?>
199 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
200<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cz">'.
201'<head>'.
202'<meta http-equiv="content-type" content="application/xhtml+xml; charset='.$Config['Web']['Charset'].'" />'.
203'<meta name="keywords" content="wow, quest, questy, questů, preklad, mangos, překlad, překládání, přeložený, přeložení, čeština, world of warcraft, open source, free, addon" />'.
204'<meta name="description" content="'.$Config['Web']['Title'].'" />'.
205'<meta name="robots" content="all" />'.
206'<link rel="stylesheet" href="'.$System->Link('/style/style.css').'" type="text/css" media="all" />'.
207'<script type="text/javascript" src="'.$System->Link('/style/global.js').'"></script>'.
208'<link rel="shortcut icon" href="'.$System->Link('/images/favicon.ico').'" />');
209 if(isset($RSSChannels))
210 foreach($RSSChannels as $Channel)
211 echo(' <link rel="alternate" title="'.$Channel['Title'].'" href="'.$Channel['URL'].'" type="application/rss+xml" />');
212 echo('<title>'.$Config['Web']['Title'].'</title>
213</head>
214<body>');
215/*
216echo('<table id="bannertable"><tr>'.
217 '<td id="banner1"></td>'.
218 '<td id="banner"><div id="bannertitle">'.$Config['Web']['Title'].'</div></td>'.
219 '<td id="banner2"></td></tr>'.
220'</table>');
221*/
222
223 if(array_key_exists('action', $_GET))
224 {
225 if($_GET['action'] == 'login')
226 {
227 $User->Login($_POST['LoginUser'], $_POST['LoginPass']);
228 if($User->Role == LICENCE_ANONYMOUS) echo('<script> alert("Jméno nebo heslo bylo zadáno špatně!"); </script>');
229 } else
230 if($_GET['action'] == 'logout')
231 {
232 if($User->Role != LICENCE_ANONYMOUS)
233 {
234 $User->Logout();
235 WriteLog('Odhlášení', LOG_TYPE_USER);
236 }
237 }
238 }
239 ShowTopBar();
240
241 echo('<table class="page"><tr><td class="menu">');
242 ShowMainMenu();
243 ShowOnlineUserList();
244 echo('<br />');
245 ShowSearchBox();
246 echo('</td><td id="border-left"></td><td class="content">');
247 $PageFooterRequested = true;
248}
249
250$UnitNames = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB');
251
252function HumanSize($Value)
253{
254 global $UnitNames;
255
256 $UnitIndex = 0;
257 while($Value > 1024)
258 {
259 $Value = round($Value / 1024, 3);
260 $UnitIndex++;
261 }
262 return($Value.' '.$UnitNames[$UnitIndex]);
263}
264
265function ShowFooter()
266{
267 global $Database, $Config, $ScriptStartTime, $PageFooterRequested, $User;
268
269 if(isset($PageFooterRequested))
270 {
271 $ScriptGenerateDuration = round(GetMicrotime() - $ScriptStartTime, 2);
272
273 echo('</td>');
274 echo('<td class="menu2">');
275 ShowTranslatedMenu();
276 echo('<br />');
277 ShowShoutBox();
278 echo('</td>'.
279 '</tr><tr>'.
280 '<td colspan="4" class="page-bottom">Autoři: maron, chronos &nbsp; <a href="http://wowpreklad.zdechov.net/trac/wowpreklad/browser/trunk">Zdrojové soubory</a> &nbsp; '.
281 '<a href="http://wowpreklad.zdechov.net/trac/wowpreklad/log/trunk?verbose=on">Novinky</a> &nbsp; '.
282 '<a href="http://counter.cnw.cz/"><img src="http://counter.cnw.cz/monika.cgi?wowpreklad&amp;5&amp;000000&amp;FFFFFF&amp;on" alt="CNW:Counter" /></a>
283 <script type="text/javascript">
284 <!--
285 document.write("<a href=\"http://counter.cnw.cz\" target=\"_parent\"><img src=\"http://counter.cnw.cz/trackit.cgi?wowpreklad&t3&" + escape(top.document.referrer) + "\" alt=\"CNW:Tracker\" border=\"0\" width=\"1\" height=\"1\"><\/a>");
286 // -->
287 </script>');
288
289 echo('</td></tr>');
290 if($Config['Web']['ShowRuntimeInfo'] == true) echo('<tr><td colspan="3" style="text-align: center;">Doba generování: '.$ScriptGenerateDuration.' s / '.ini_get('max_execution_time').' s &nbsp;&nbsp; Použitá paměť: '.HumanSize(memory_get_peak_usage(FALSE)).' / '.ini_get('memory_limit').'B &nbsp;&nbsp; <a href="http://validator.w3.org/check?uri='.htmlentities('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'?'.$_SERVER['QUERY_STRING']).'">HTML validator</a></td></tr>');
291 echo('</table>'.
292 '</body>'.
293 '</html>');
294 $Database->Disconnect();
295 $User->Store();
296 }
297}
298
299function GetQueryStringArray($QueryString)
300{
301 $Result = array();
302 $Parts = explode('&', $QueryString);
303 foreach($Parts as $Part)
304 {
305 if($Part != '')
306 {
307 if(!strpos($Part, '=')) $Part .= '=';
308 $Item = explode('=', $Part);
309 $Result[$Item[0]] = $Item[1];
310 }
311 }
312 return($Result);
313}
314
315function SetQueryStringArray($QueryStringArray)
316{
317 $Parts = array();
318 foreach($QueryStringArray as $Index => $Item)
319 {
320 $Parts[] = $Index.'='.$Item;
321 }
322 return(implode('&', $Parts));
323}
324
325?>
Note: See TracBrowser for help on using the repository browser.