source: trunk/includes/global.php@ 250

Last change on this file since 250 was 250, checked in by maron, 16 years ago

Zobrazení datumu posledního importu ve zdrojích dat, poslední verze. SQL příkaz pro aktualizování těchto dat při importu. Přesunutí odkazu změn v textech do zdrojů dat.

File size: 13.4 KB
Line 
1<?php
2
3$ScriptStartTime = GetMicrotime();
4
5if(!isset($_SESSION)) 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('config.php');
17include_once('error.php');
18include('databaseconection.php');
19include('global_function.php');
20
21$Database = new Database($Config['Database']['Host'], $Config['Database']['User'], $Config['Database']['Password']);
22$Database->SQLCommand('SET NAMES '.$Config['Database']['Charset']);
23$Database->SelectDatabase($Config['Database']['Database']);
24
25$TranslationTree = GetTranslationTree();
26$LanguageList = GetLanguageList();
27
28function GetMicrotime()
29{
30 list($Usec, $Sec) = explode(' ', microtime());
31 return ((float)$Usec + (float)$Sec);
32}
33
34function ShowShoutbox()
35{
36 global $Database;
37
38 echo('<strong>Shoutbox:</strong>');
39 if(Licence(LICENCE_USER)) echo(' <a href="action.php?action=shoutbox">Vložit</a>');
40 echo('<div class="box"><table>');
41 $ID = $Database->SQLCommand('SELECT * FROM shoutbox ORDER BY ID DESC LIMIT 20');
42 while($Line = mysql_fetch_assoc($ID))
43 echo('<tr><td><strong>'.$Line['user'].'</strong>: '.$Line['text'].'</td></tr>');
44 echo('</table></div>');
45}
46
47function ShowLoginBox()
48{
49 if(Licence(LICENCE_USER))
50 {
51 // echo 'Jste přihlášen jako: <b>'.$_SESSION['User'].'</b> <a href="index.php?Logout">Odhlásit</a>';
52 } else
53 {
54 echo('<strong>Přihlášení:</strong>
55 <form action="" method="post">
56 <table>
57 <tr>
58 <td><input type="text" name="LoginUser" size="13" /></td>
59 </tr>
60 <tr>
61 <td><input type="password" name="LoginPass" size="13" /></td>
62 </tr>
63 <tr>
64 <th><input type="submit" value="Přihlásit" /></th>
65 </tr>
66 </table>
67 </form>');
68 }
69}
70
71function ShowSearchBox()
72{
73 global $Config;
74 echo('<strong>Hledání:</strong>
75 <form action="'.$Config['Web']['BaseURL'].'action.php" method="get"><input type="hidden" name="action" value="search" />
76 <table>
77 <tr>
78 <td><input type="text" name="search" size="13" /></td>
79 </tr>
80 <tr>
81 <th><input type="submit" value="Hledat" /></th>
82 </tr>
83 </table>
84 </form>');
85}
86
87function ShowMainMenu()
88{
89 global $TranslationTree, $Config;
90
91 $Menu = array
92 (
93 $Config['Web']['BaseURL'].'index.php' => array(LICENCE_ANONYMOUS, 'Hlavní stránka', 'Domů'),
94 'http://wow.zdechov.net/forum/viewforum.php?f=22' => array(LICENCE_ANONYMOUS, 'Diskuze na téma překládání', 'Fórum projektu'),
95 $Config['Web']['BaseURL'].'dictionary.php' => array(LICENCE_ANONYMOUS, 'Slovník WoW výrazů', 'Slovník'),
96 $Config['Web']['BaseURL'].'banners.php' => array(LICENCE_ANONYMOUS, 'Weby odkazující na tento projekt bennerem', 'Odkazují na nás'),
97 $Config['Web']['BaseURL'].'statistic.php' => array(LICENCE_ANONYMOUS, 'Stav dokončení překládů', 'Stav dokončení'),
98 $Config['Web']['BaseURL'].'userlist.php?action=nofilter' => array(LICENCE_ANONYMOUS, 'Seznam registrovaných uživatelů', 'Překladatelé'),
99 $Config['Web']['BaseURL'].'team.php' => array(LICENCE_ANONYMOUS, 'Seznam překladatelských týmů', 'Týmy'),
100 $Config['Web']['BaseURL'].'download.php' => array(LICENCE_ANONYMOUS, 'Zde si můžete stáhnout přeložené texty', 'Stahování'),
101 $Config['Web']['BaseURL'].'info.php' => array(LICENCE_ANONYMOUS, 'Informace k překladu hry', 'Informace'),
102 $Config['Web']['BaseURL'].'registrace.php' => array(LICENCE_ANONYMOUS, 'Registrace uživatele pro překládání', 'Registrace'),
103 $Config['Web']['BaseURL'].'TranslationList.php?action=grouplist' => array(LICENCE_ANONYMOUS, 'Informace o překladových skupinách', 'Zdroje dat'),
104 $Config['Web']['BaseURL'].'version.php' => array(LICENCE_ANONYMOUS, 'Seznam verzí herního klienta', 'Verze hry'),
105 $Config['Web']['BaseURL'].'aowow' => array(LICENCE_ANONYMOUS, 'Vyhledávací databáze podobná WoWHead s překlady', 'AoWoW'),
106 $Config['Web']['BaseURL'].'Options.php' => array(LICENCE_USER, 'Nastavení uživatele', 'Nastavení'),
107 $Config['Web']['BaseURL'].'index.php?Logout' => array(LICENCE_USER, 'Odhlášení ze systému', 'Odhlásit'),
108 'http://embed.mibbit.com/?server=game.zdechov.net%3A6667&channel=%23wowpreklad&forcePrompt=true&charset=utf-8' => array(LICENCE_ANONYMOUS, 'IRC chat pro překladatele', 'Chat'),
109 $Config['Web']['BaseURL'].'log.php' => array(LICENCE_MODERATOR, 'Log dění (Pouze moderátor)', 'Záznamy'),
110 $Config['Web']['BaseURL'].'import/' => array(LICENCE_ADMIN, 'Načtení zdrojových textů do databáze (pouze admin)', 'Import textů'),
111 $Config['Web']['BaseURL'].'img_level.php?nothide' => array(LICENCE_ADMIN, 'Načtení levelů a generování obrázků (pouze admin)', 'Generování lvl'),
112 $Config['Web']['BaseURL'].'action.php?action=dbkit' => array(LICENCE_ADMIN, 'Opravy databáze (pouze admin)', 'DB opravy'),
113 //'client_files/generate_SQL.php' => array(LICENCE_ADMIN, 'Generování clientských souborů (pouze admin)', 'Generování C.S.'),
114 'https://wowpreklad.zdechov.net/mysql/' => array(LICENCE_ADMIN, 'phpMyAdmin(pouze admin)', 'Správa databáze'),
115 );
116 //echo('Jste přihlášen jako: <strong>'.$_SESSION['User'].'</strong>
117
118 echo('<strong>Hlavní menu:</strong>'.
119 '<div class="verticalmenu"><ul>');
120
121 foreach($Menu as $MenuTarget => $MenuItem)
122 {
123 if(isset($MenuItem[3])) $OnClick = ' onclick="'.$MenuItem[3].'"'; else $OnClick = '';
124 if(Licence($MenuItem[0])) echo('<li><a class="verticalmenua" title="'.$MenuItem[1].'" href="'.$MenuTarget.'"'.$OnClick.'>'.$MenuItem[2].'</a></li>');
125 }
126 echo('</ul></div>');
127}
128
129function ShowTranslatedMenu()
130{
131 global $TranslationTree, $Config;
132
133 echo('<strong>Překladové skupiny:</strong><br /><div id="TranslationMenu">');
134 if(Licence(LICENCE_USER))
135 {
136 echo ('<a title="Všechny překlady, které jste přeložil" href="'.$Config['Web']['BaseURL'].'TranslationList.php?user='.$_SESSION['UserID'].'&amp;action=userall">Všechny moje texty</a><br />');
137 echo ('<a title="Všechny překlady, které jste rozepsal a nedokončil" href="'.$Config['Web']['BaseURL'].'TranslationList.php?user='.$_SESSION['UserID'].'&amp;not&amp;action=userall">Rozpracované texty</a>');
138 //TODO: počet nedokončených
139 echo ('<br /><br />');
140 }
141 foreach($TranslationTree as $Group)
142 {
143 echo('<div id="menuitem-group'.$Group['Id'].'" onmousemove="show(\'group'.$Group['Id'].'\')" onmouseout="hide(\'group'.$Group['Id'].'\')">
144 <a href="'.$Config['Web']['BaseURL'].'TranslationList.php?group='.$Group['Id'].'&amp;action=filter">'.$Group['Name'].'</a></div>
145 <div id="group'.$Group['Id'].'" class="hidden-menu-item" onmousemove="show(\'group'.$Group['Id'].'\')" onmouseout="hide(\'group'.$Group['Id'].'\')">');
146 echo('&nbsp;<a title="Zde můžete začít překládat" href="'.$Config['Web']['BaseURL'].'TranslationList.php?group='.$Group['Id'].'&amp;action=notran">Nepřeložené</a><br />
147 &nbsp;<a title="Přeložené texty, můžete zde hlasovat, nebo opravovat překlady" href="'.$Config['Web']['BaseURL'].'TranslationList.php?group='.$Group['Id'].'&amp;action=Translate">Přeložené</a><br />');
148 if(Licence(LICENCE_USER))
149 {
150 echo('&nbsp;<a title="Nedokončené překlady" href="'.$Config['Web']['BaseURL'].'TranslationList.php?group='.$Group['Id'].'&amp;action=mydevelop">Rozepsané</a><br />
151 &nbsp;<a title="Všechny překlady, které jste přeložil" href="'.$Config['Web']['BaseURL'].'TranslationList.php?group='.$Group['Id'].'&amp;action=my">Vlastní</a><br />');
152 }
153 echo('&nbsp;<a title="Sestavit speciální filtr" href="'.$Config['Web']['BaseURL'].'TranslationList.php?group='.$Group['Id'].'&amp;action=filter">Filtr</a><br />');
154 echo('</div>');
155 }
156 echo ('</div>');
157}
158
159function ShowOnlineUserList()
160{
161 global $Database, $Moderators;
162
163 echo('Online uživatelé:<br />');
164 $ID = $Database->SQLCommand('SELECT user, GM, ID FROM `user` WHERE LastLogin >= Now() - 300 AND ((LastLogout < LastLogin) OR (ISNULL(LastLogout)))');
165 while ($Line = mysql_fetch_assoc($ID))
166 {
167 if(Licence(LICENCE_MODERATOR)) $Name = '<a href="user.php?user='.$Line['ID'].'">'.$Line['user'].'</a>';
168 else $Name = $Line['user'];
169 if($Line['GM'] <> 0) $TextGM = '<small>('.$Moderators[$Line['GM']].')</small>';
170 else $TextGM = '';
171 echo('<strong>'.$Name.'</strong>'.$TextGM.'<br />');
172 }
173}
174
175function ShowPage()
176{
177 global $Config, $Database, $RSSChannels;
178
179 echo('<?xml version="1.0" encoding="'.$Config['Web']['Charset'].'"?>
180<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
181<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
182<head>'.
183'<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />'.
184'<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" />'.
185'<meta name="description" content="Projekt překládání textů hry World of Warcraft" />'.
186'<meta name="robots" content="all" />'.
187'<link rel="stylesheet" href="'.$Config['Web']['BaseURL'].'style/style.css" type="text/css" media="all" />'.
188'<script type="text/javascript" src="'.$Config['Web']['BaseURL'].'style/global.js"></script>'.
189'<link rel="SHORTCUT ICON" href="'.$Config['Web']['BaseURL'].'images/favicon.ico" />');
190 if(isset($RSSChannels))
191 foreach($RSSChannels as $Channel)
192 echo(' <link rel="alternate" title="'.$Channel['Title'].'" href="'.$Channel['URL'].'" type="application/rss+xml" />');
193 echo('<title>Projekt překládání textů WoW</title>
194</head>
195<body>
196<table id="bannertable"><tr>
197 <td id="banner1"></td>
198 <td id="banner"><div id="bannertitle">Projekt překládání textů WoW</div></td>
199 <td id="banner2"></td></tr>
200</table>');
201
202if(!array_key_exists('UserID', $_SESSION)) $_SESSION['UserID'] = '';
203if(!array_key_exists('User', $_SESSION)) $_SESSION['User'] = 'NotRegistred';
204if(!array_key_exists('Pass', $_SESSION)) $_SESSION['Pass'] = '';
205
206
207//odhlášení
208if(array_key_exists('Logout', $_GET))
209{
210 WriteLog('Odhlášení', 3);
211 if(is_numeric($_SESSION['UserID']))
212 $Database->SQLCommand('UPDATE user SET LastLogout = NOW() WHERE ID = '.$_SESSION['UserID']);
213 $_SESSION['User'] = '';
214 $_SESSION['Pass'] = '';
215 $_SESSION['UserID'] = '';
216}
217
218// Přihlášení
219if(array_key_exists('LoginUser', $_POST))
220{
221 $_SESSION['User'] = $_POST['LoginUser'];
222 $_SESSION['Pass'] = $_POST['LoginPass'];
223
224 $Line = mysql_fetch_array($Database->SQLCommand('SELECT * FROM user WHERE LOWER(user) = LOWER("'.$_SESSION['User'].'") AND pass = sha1("'.$_SESSION['Pass'].'")'));
225 if(!$Line)
226 {
227 echo('<script> alert("Jméno nebo heslo bylo zadáno špatně!"); </script>');
228 $_SESSION['UserID'] = '';
229 $_SESSION['User'] = '';
230 $_SESSION['Pass'] = '';
231 } else
232 {
233 $_SESSION['UserID'] = $Line['ID'];
234 $_SESSION['User'] = $Line['user'];
235 WriteLog('Login: '.$_SESSION['User'], 3);
236 }
237}
238
239 //záznam o aktivitě
240 if(Licence(0)) $Database->SQLCommand('UPDATE user SET LastIP = "'.$_SERVER['REMOTE_ADDR'].'", LastLogin = NOW() WHERE ID = '.$_SESSION['UserID']);
241
242 echo('<table class="page"><tr><td class="menu">');
243 ShowMainMenu();
244
245 // echo('<br />');
246 ShowLoginBox();
247 echo('<br />');
248 ShowOnlineUserList();
249 echo('<br />');
250 ShowSearchBox();
251 echo('</td><td id="border-left"></td><td class="content">');
252}
253
254$UnitNames = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB');
255
256function HumanSize($Value)
257{
258 global $UnitNames;
259
260 $UnitIndex = 0;
261 while($Value > 1024)
262 {
263 $Value = round($Value / 1024, 3);
264 $UnitIndex++;
265 }
266 return($Value.' '.$UnitNames[$UnitIndex]);
267}
268
269function ShowFooter()
270{
271 global $Database, $Config, $ScriptStartTime;
272
273 $ScriptGenerateDuration = round(GetMicrotime() - $ScriptStartTime, 2);
274
275 echo('</td>');
276 echo('<td class="menu2">');
277 ShowTranslatedMenu();
278 echo('<br />');
279 ShowShoutBox();
280 echo('</td>'.
281 '</tr><tr>'.
282 '<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; '.
283 '<a href="http://wowpreklad.zdechov.net/trac/wowpreklad/log/trunk?verbose=on">Novinky</a> &nbsp; '.
284 '<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>
285 <script type="text/javascript">
286 <!--
287 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>");
288 // -->
289 </script>');
290
291 echo('</td></tr>');
292 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</td></tr>');
293 echo('</table>'.
294 '</body>'.
295 '</html>');
296 $Database->Disconnect();
297}
298
299?>
Note: See TracBrowser for help on using the repository browser.