source: branches/old/minimanager/stat.php@ 480

Last change on this file since 480 was 374, checked in by george, 17 years ago
  • Aktualizováno: Minimanager 0.12 rev. 99. Opraveno zobrazování honoru, přidána captcha p?i registraci nového účtu a mini fórum.
  • Přidáno: Český překlad pro Minimanager 0.12.
  • Smazáno: Staré fotky fyzického serveru přesunuty do fotogalerie.
  • Přidáno: Nějaké návody na eventy od bbtrashe.
File size: 8.7 KB
Line 
1<?php
2/*
3 * Project Name: MiniManager for Mangos Server
4 * Date: 17.10.2006 inital version (0.0.1a)
5 * Author: Q.SA
6 * Copyright: Q.SA
7 * Email: *****
8 * License: GNU General Public License v2(GPL)
9 */
10
11require_once("header.php");
12valid_login($action_permission['read']);
13
14$race = Array(
15 1 => array(1,$lang_id_tab['human'],"",""),
16 2 => array(2,$lang_id_tab['orc'],"",""),
17 3 => array(3,$lang_id_tab['dwarf'],"",""),
18 4 => array(4,$lang_id_tab['nightelf'],"",""),
19 5 => array(5,$lang_id_tab['undead'],"",""),
20 6 => array(6,$lang_id_tab['tauren'],"",""),
21 7 => array(7,$lang_id_tab['gnome'],"",""),
22 8 => array(8,$lang_id_tab['troll'],"",""),
23 10 => array(10,$lang_id_tab['bloodelf'],"",""),
24 11 => array(11,$lang_id_tab['draenei'],"","")
25);
26
27$class = Array(
28 1 => array(1,$lang_id_tab['warrior'],"",""),
29 2 => array(2,$lang_id_tab['paladin'],"",""),
30 3 => array(3,$lang_id_tab['hunter'],"",""),
31 4 => array(4,$lang_id_tab['rogue'],"",""),
32 5 => array(5,$lang_id_tab['priest'],"",""),
33 7 => array(7,$lang_id_tab['shaman'],"",""),
34 8 => array(8,$lang_id_tab['mage'],"",""),
35 9 => array(9,$lang_id_tab['warlock'],"",""),
36 11 => array(11,$lang_id_tab['druid'],"","")
37);
38
39$level = Array(
40 1 => array(1,1,4,"",""),
41 2 => array(2,5,9,"",""),
42 3 => array(3,10,14,"",""),
43 4 => array(4,15,19,"",""),
44 5 => array(5,20,24,"",""),
45 6 => array(6,25,29,"",""),
46 7 => array(7,30,34,"",""),
47 8 => array(8,35,39,"",""),
48 9 => array(9,40,44,"",""),
49 10 => array(10,45,49,"",""),
50 11 => array(11,50,54,"",""),
51 12 => array(12,55,59,"",""),
52 13 => array(13,60,64,"",""),
53 14 => array(14,65,69,"",""),
54 15 => array(15,70,70,"","")
55);
56
57 $sql = new SQL;
58 $sql->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']);
59 $query = $sql->query("SELECT count(*) FROM account UNION SELECT count(*) FROM account WHERE gmlevel > 0");
60 $total_acc = $sql->result($query,0);
61 $total_gms = $sql->result($query,1);
62
63 $data = date("Y-m-d H:i:s");
64 $data_1 = mktime(date("H"), date("i"), date("s"), date("m") , date("d")-1, date("Y"));
65 $data_1 = date("Y-m-d H:i:s", $data_1);
66
67 $query = $sql->query("select distinct count(`last_ip`) from `account` where `last_login` > '$data_1' and `last_login` < '$data'");
68 $uniqueIPs = $sql->result($query,0);
69
70 $sql->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']);
71 $query = $sql->query("SELECT count(*) FROM `characters`");
72 $total_chars = $sql->result($query,0);
73
74 $sql->connect($mangos_db[$realm_id]['addr'], $mangos_db[$realm_id]['user'], $mangos_db[$realm_id]['pass'], $mangos_db[$realm_id]['name']);
75 $query = $sql->query("SELECT AVG(uptime)/60,MAX(uptime)/60,(100*SUM(uptime)/(UNIX_TIMESTAMP()-MIN(starttime))) FROM uptime");
76 $uptime = $sql->fetch_row($query);
77
78 if ($total_chars){
79
80 $order_race = (isset($_GET['race'])) ? "AND race =".$sql->quote_smart($_GET['race']) : "";
81 $order_class = (isset($_GET['class'])) ? "AND class =".$sql->quote_smart($_GET['class']) : "";
82
83 if(isset($_GET['level'])){
84 $lvl_min = $sql->quote_smart($_GET['level']);
85 $lvl_max = $lvl_min + 4;
86 $order_level = "AND SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, ' ', 35), ' ', -1) >= $lvl_min AND SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, ' ', 35), ' ', -1) <= $lvl_max";
87 } else $order_level = "";
88
89 if(isset($_GET['side'])) {
90 if ($sql->quote_smart($_GET['side']) == "h") $order_side = "AND race IN(2,5,6,8,10)";
91 elseif ($sql->quote_smart($_GET['side']) == "a") $order_side = "AND race IN (1,3,4,7,11)";
92 } else $order_side = "";
93
94$output .= "
95 <center>
96 <div id=\"tab\">
97 <ul>
98 <li id=\"selected\">
99 <a href=\"stat.php\">
100 {$lang_stat['srv_statistics']}
101 </a>
102 </li>
103 <li>
104 <a href=\"stat_on.php\">
105 {$lang_stat['on_statistics']}
106 </a>
107 </li>
108 </ul>
109 </div>
110 <div id=\"tab_content\">
111";
112
113 $output .= "<div class=\"top\"><h1>{$lang_stat['srv_statistics']}</h1></div>";
114
115 $sql->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']);
116
117 //there is always less hordies
118 $query = $sql->query("SELECT count(guid) FROM `characters` WHERE race IN(2,5,6,8,10)");
119 $horde_chars = $sql->result($query,0);
120 $horde_pros = round(($horde_chars*100)/$total_chars ,1);
121 $allies_chars = $total_chars - $horde_chars;
122 $allies_pros = 100 - $horde_pros;
123
124 $output .= "<center>
125 <table class=\"hidden\">
126 <tr><td align=\"left\"><h1>{$lang_stat['general_info']}</h1></td></tr>
127 <tr align=\"left\"><td class=\"large\">
128 {$lang_stat['uptime_prec']}: ".round($uptime[2],1)."%<br />
129 {$lang_stat['avg_uptime']}: ".(int)($uptime[0]/60).":".(int)(($uptime[0]%60))."h<br />
130 {$lang_stat['max_uptime']}: ".(int)($uptime[1]/60).":".(int)(($uptime[1]%60))."h<br />
131 {$lang_stat['unique_ip']}: $uniqueIPs<br /> <br />
132 {$lang_stat['tot_accounts']}: $total_acc<br />
133 {$lang_stat['total_of']} $total_gms {$lang_stat['gms_one_for']} ".round($total_acc/$total_gms,1)." {$lang_stat['players']}<br /><br />
134 {$lang_stat['tot_chars_on_realm']}: $total_chars<br />
135 {$lang_stat['average_of']} ".round($total_chars/$total_acc,1)." {$lang_stat['chars_per_acc']}<br /><br />
136
137 <table class=\"tot_bar\">
138 <tr>
139 <td width=\"$horde_pros%\" background=\"./img/bar_horde.gif\" height=\"40\"><a href=\"stat.php?side=h\">{$lang_stat['horde']}: $horde_chars ($horde_pros%)</a></td>
140 <td width=\"$allies_pros%\" background=\"./img/bar_allie.gif\" height=\"40\"><a href=\"stat.php?side=a\">{$lang_stat['alliance']}: $allies_chars ($allies_pros%)</a></td>
141 </tr>
142 </table>
143 <hr/>
144 </td></tr>";
145
146// RACE
147foreach ($race as $id){
148 $query = $sql->query("SELECT count(guid) FROM `characters` WHERE race = $id[0] $order_class $order_level $order_side");
149 $race[$id[0]][2] = $sql->result($query,0);
150 $race[$id[0]][3] = round((($race[$id[0]][2])*100)/$total_chars,1);
151 }
152
153 $output .= "<tr align=\"left\"><td><h1>{$lang_stat['chars_by_race']}</h1></td></tr><tr><td>
154 <table class=\"bargraph\">
155 <tr>";
156 foreach ($race as $id){
157 $height = ($race[$id[0]][3])*4;
158 $output .= "<td><a href=\"stat.php?race={$id[0]}\" class=\"graph_link\">{$race[$id[0]][3]}%<img src=\"./templates/$css_template/column.gif\" width=\"69\" height=\"$height\" alt=\"{$race[$id[0]][2]}\" /></a></td>";
159 }
160$output .= "</tr><tr>";
161 foreach ($race as $id){
162 $output .= "<th>{$race[$id[0]][1]}<br />{$race[$id[0]][2]}</th>";
163 }
164$output .= "</tr>
165</table><br />
166 </td></tr>";
167// RACE END
168
169// CLASS
170foreach ($class as $id){
171 $query = $sql->query("SELECT count(guid) FROM `characters` WHERE class = $id[0] $order_race $order_level $order_side");
172 $class[$id[0]][2] = $sql->result($query,0);
173 $class[$id[0]][3] = round((($class[$id[0]][2])*100)/$total_chars,1);
174 }
175
176 $output .= "<tr align=\"left\"><td><h1>{$lang_stat['chars_by_class']}</h1></td></tr><tr><td>
177 <table class=\"bargraph\">
178 <tr>";
179 foreach ($class as $id){
180 $height = ($class[$id[0]][3])*4;
181 $output .= "<td><a href=\"stat.php?class={$id[0]}\" class=\"graph_link\">{$class[$id[0]][3]}%<img src=\"./templates/$css_template/column.gif\" width=\"77\" height=\"$height\" alt=\"{$class[$id[0]][2]}\" /></a></td>";
182 }
183$output .= "</tr><tr>";
184 foreach ($class as $id){
185 $output .= "<th>{$class[$id[0]][1]}<br />{$class[$id[0]][2]}</th>";
186 }
187$output .= "</tr>
188</table><br />
189 </td></tr>";
190// CLASS END
191
192// LEVEL
193foreach ($level as $id){
194 $query = $sql->query("SELECT count(guid) FROM `characters` WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, ' ', 35), ' ', -1) >= $id[1]
195 AND SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, ' ', 35), ' ', -1) <= $id[2] $order_race $order_class $order_side");
196 $level[$id[0]][3] = $sql->result($query,0);
197 $level[$id[0]][4] = round((($level[$id[0]][3])*100)/$total_chars,1);
198 }
199
200 $output .= "<tr align=\"left\"><td><h1>{$lang_stat['chars_by_level']}</h1></td></tr><tr><td>
201 <table class=\"bargraph\">
202 <tr>";
203 foreach ($level as $id){
204 $height = ($level[$id[0]][4])*4;
205 $output .= "<td><a href=\"stat.php?level={$id[1]}\" class=\"graph_link\">{$level[$id[0]][4]}%<img src=\"./templates/$css_template/column.gif\" width=\"45\" height=\"$height\" alt=\"{$level[$id[0]][3]}\" /></a></td>";
206 }
207$output .= "</tr><tr>";
208 foreach ($level as $id){
209 $output .= "<th>{$level[$id[0]][1]}-{$level[$id[0]][2]}<br />{$level[$id[0]][3]}</th>";
210 }
211$output .= "</tr>
212</table><br /><hr/>
213 </td></tr><tr><td>";
214// LEVEL END
215
216 makebutton($lang_stat['reset'], "stat.php", 720);
217 $output .= "</td></tr></table>
218 </center>
219 </div>";
220
221 $sql->close();
222
223} else {
224 $sql->close();
225 error($lang_global['err_no_result']);
226 }
227require_once("footer.php");
228?>
Note: See TracBrowser for help on using the repository browser.