source: trunk/statistic.php@ 539

Last change on this file since 539 was 539, checked in by chronos, 12 years ago
  • Upraveno: Sloupce LastIP, LastLogin, LastLogout odděleny z tabulky User do samostatné nové tabulky UserTrace. Tato tabulka slouží pro uchování údajů aktualizovaných při každém zobrazení stránky. Dokud byly tyto údaje aktualizovány přímo v tabulce User, tak docházelo k přegenerování všech indexů tabulky User a tedy výraznému zpomalení provádění SQL dotazů.
  • Upraveno: Zobrazení klikacího odkazu na uživatele ve výpisu dalších tabulek.
  • Upraveno: Optimalizováno načítání obecného a týmového stavu dokončení překladu.
  • Upraveno: Při registraci se volá nově metoda User->Register namísto přímého vkládání položky do databáze.
File size: 5.0 KB
Line 
1<?php
2
3include('includes/global.php');
4
5$LanguageList = GetLanguageList();
6
7if(array_key_exists('Version', $_GET)) $_SESSION['StatVersion'] = $_GET['Version'];
8if(!array_key_exists('StatVersion', $_SESSION)) $_SESSION['StatVersion'] = $Config['Web']['GameVersion'];
9
10if(!isset($_SESSION['language']))
11{
12 if($User->Licence(LICENCE_USER))
13 {
14 $_SESSION['language'] = $User->Language;
15 } else $_SESSION['language'] = '';
16}
17if(array_key_exists('language', $_GET)) {
18 if($_GET['language'] == '') $_SESSION['language'] = '';
19 else {
20 $_SESSION['language'] = $_GET['language'] * 1;
21 }
22}
23if(!array_key_exists($_SESSION['language'], $LanguageList)) $_SESSION['language'] = '';
24
25
26function ShowStatTable()
27{
28 global $System, $User, $Config;
29
30 $Output = '';
31
32 $BuildNumber = GetBuildNumber($_SESSION['StatVersion']);
33 if(is_numeric($_SESSION['language'])) $LanguageFilter = 'AND (`Language`='.$_SESSION['language'].')';
34 else $LanguageFilter = ' AND (`Language`!='.$Config['OriginalLanguage'].')';
35
36 $GroupListQuery = 'SELECT `Id`, `TablePrefix`, `Name` FROM `Group`';
37 $Query = '';
38 $DbResult = $System->Database->query($GroupListQuery);
39 if($DbResult->num_rows > 0)
40 {
41 while($DbRow = $DbResult->fetch_assoc())
42 {
43 $Query .= 'SELECT (SELECT COUNT(DISTINCT(`Entry`)) FROM ('.
44 'SELECT `T`.`Entry` FROM `'.$DbRow['TablePrefix'].'` AS `T` '.
45 'WHERE (`Complete` = 1) '.$LanguageFilter.' '.
46 'AND (`VersionStart` <= '.$BuildNumber.') AND (`VersionEnd` >= '.$BuildNumber.')'.
47 ') AS `C1`) AS `Translated`, '.
48 '(SELECT COUNT(DISTINCT(`Entry`)) FROM ('.
49 'SELECT `T`.`Entry` FROM `'.$DbRow['TablePrefix'].'` AS `T` '.
50 'WHERE (`Language` = '.$Config['OriginalLanguage'].') '.
51 'AND (`VersionStart` <= '.$BuildNumber.') AND (`VersionEnd` >= '.$BuildNumber.')'.
52 ') AS `C2`) AS `Total`, "'.$DbRow['Name'].'" AS `Name` UNION ';
53 }
54 $Query = substr($Query, 0, - 6);
55
56 $DbResult = $System->Database->query('SELECT COUNT(*) FROM ('.$GroupListQuery.') AS `T`');
57 $DbRow = $DbResult->fetch_row();
58 $PageList = GetPageList($DbRow[0]);
59 $Output .= $PageList['Output'];
60
61 $Output .= '<table class="BaseTable">';
62 $TableColumns = array(
63 array('Name' => 'Name', 'Title' => 'Jméno'),
64 array('Name' => 'Translated', 'Title' => 'Přeložených'),
65 array('Name' => 'Total', 'Title' => 'Anglických'),
66 array('Name' => 'Percent', 'Title' => 'Procenta'),
67 );
68
69 $Order = GetOrderTableHeader($TableColumns, 'Name', 0);
70 $Output .= $Order['Output'];
71
72 $Translated = 0;
73 $Total = 0;
74 $DbResult = $System->Database->query('SELECT *, ROUND(`Translated` / `Total` * 100, 2) AS `Percent` FROM ('.$Query.') AS `C3` '.$Order['SQL'].$PageList['SQLLimit']);
75 while($Group = $DbResult->fetch_assoc())
76 {
77 $Output .= '<tr><td>'.$Group['Name'].'</td><td>'.$Group['Translated'].'</td><td>'.$Group['Total'].'</td><td>'.ProgressBar(150, $Group['Percent']).'</td></tr>';
78 $Translated += $Group['Translated'];
79 $Total += $Group['Total'];
80 }
81 if($Total <> 0) $TotalCount = round($Translated / $Total * 100, 2);
82 else $TotalCount = 0;
83 $Output .= '<tr><td><strong>Celkem</strong></td><td><strong>'.$Translated.'</strong></td><td><strong>'.$Total.'</strong></td><td><strong>'.ProgressBar(150, $TotalCount).'</strong></td></tr>'.
84 '</table>';
85 }
86 return($Output);
87}
88
89// Show client version selection
90$Output = 'Verze klienta: ';
91$DbResult = $System->Database->query('SELECT `Version`, `Title` FROM `ClientVersion` WHERE `Imported`=1 ORDER BY `Version`');
92while($DbRow = $DbResult->fetch_assoc())
93 $Output .= '<a href="?Version='.$DbRow['Version'].'" title="'.$DbRow['Title'].'">'.$DbRow['Version'].'</a> ';
94$Output .= '<br/>';
95
96// Show language selection
97$Output .= 'Jazyk: ';
98$Lang = '<a href="?language=">Všechny</a>';
99if($_SESSION['language'] == '') $Output .= '<strong>'.$Lang.'</strong> ';
100 else $Output .= $Lang;
101foreach($LanguageList as $Language)
102if($Language['Enabled'] == 1)
103{
104 $Lang = ' <a href="?language='.$Language['Id'].'">'.$Language['Name'].'</a>';
105 if($Language['Id'] == $_SESSION['language']) $Output .= '<strong>'.$Lang.'</strong> ';
106 else $Output .= $Lang;
107}
108
109if(is_numeric($_SESSION['language'])) $LanguageName = $LanguageList[$_SESSION['language']]['Name'];
110 else $LanguageName = 'Všechny';
111$Output .= '<br/><br /><h3>Statistika dokončení překladů jazyka '.$LanguageName.' pro verzi '.$_SESSION['StatVersion'].'</h3><br/>';
112$Output .= ShowStatTable();
113
114$Output .= '<div>Počet stáhnutí přeložených textů v SQL souboru: <strong>';
115$ID = $System->Database->query('SELECT count(distinct(`IP`)) FROM `Log` WHERE `Type` = 2');
116$Line = $ID->fetch_row();
117$Output .= $Line[0];
118$Output .= '</strong></div>';
119
120$Output .= '<div>Počet stáhnutí: <strong>';
121$ID = $System->Database->query('SELECT count(distinct(`IP`)) FROM `Log` WHERE `Type` = 0');
122$Line = $ID->fetch_row();
123$Output .= $Line[0];
124$Output .= '</strong></div>';
125
126ShowPage($Output);
127
128?>
Note: See TracBrowser for help on using the repository browser.