From 5b64aba5c7e32a848c90b2db9c1af0d42052d4aa Mon Sep 17 00:00:00 2001 From: Sinclair47 Date: Sat, 3 Jan 2015 10:20:04 -0600 Subject: [PATCH 01/79] Add server views --- inc/getbottomrow.php | 51 ++++-- inc/getconnections.php | 4 +- inc/getcountryinfo.php | 4 +- inc/getdashboard.php | 316 ++++++++++++++++++++++++++++++-------- inc/getdashboardrange.php | 38 +++-- inc/getdateinfo.php | 15 +- inc/getlocationrange.php | 16 +- inc/getplayers.php | 4 +- inc/getserverinfo.php | 220 ++++++++++++++++++++++++++ inc/server_processing.php | 163 ++++++++++++++++++++ index.php | 55 ++++++- 11 files changed, 779 insertions(+), 107 deletions(-) create mode 100644 inc/getserverinfo.php diff --git a/inc/getbottomrow.php b/inc/getbottomrow.php index c64480a..2f72103 100644 --- a/inc/getbottomrow.php +++ b/inc/getbottomrow.php @@ -24,20 +24,43 @@ // Instantiate database. $database = new Database(); -$database->query('SELECT `country` AS label, COUNT(`country`) AS value FROM `player_analytics` WHERE `connect_date` BETWEEN :start AND :end GROUP BY `country`'); -$database->bind(':start', $date[0]); -$database->bind(':end', $date[1]); -$country = $database->resultset(); - -$database->query('SELECT `connect_method` AS label, COUNT(`connect_method`) AS value FROM `player_analytics` WHERE `connect_date` BETWEEN :start AND :end GROUP BY `connect_method`'); -$database->bind(':start', $date[0]); -$database->bind(':end', $date[1]); -$method = $database->resultset(); - -$database->query('SELECT `premium` AS label, COUNT(`premium`) AS value FROM `player_analytics` WHERE `connect_date` BETWEEN :start AND :end GROUP BY `premium`'); -$database->bind(':start', $date[0]); -$database->bind(':end', $date[1]); -$premium = $database->resultset(); +if (isset($_GET['server'])) { + $server_ip = $_GET['server']; + $database->query('SELECT `country` AS label, COUNT(`country`) AS value FROM `player_analytics` WHERE `server_ip` = :ip AND `connect_date` BETWEEN :start AND :end GROUP BY `country`'); + $database->bind(':start', $date[0]); + $database->bind(':end', $date[1]); + $database->bind(':ip', $server_ip); + $country = $database->resultset(); + + $database->query('SELECT `connect_method` AS label, COUNT(`connect_method`) AS value FROM `player_analytics` WHERE `server_ip` = :ip AND `connect_date` BETWEEN :start AND :end GROUP BY `connect_method`'); + $database->bind(':start', $date[0]); + $database->bind(':end', $date[1]); + $database->bind(':ip', $server_ip); + $method = $database->resultset(); + + $database->query('SELECT `premium` AS label, COUNT(`premium`) AS value FROM `player_analytics` WHERE `server_ip` = :ip AND `connect_date` BETWEEN :start AND :end GROUP BY `premium`'); + $database->bind(':start', $date[0]); + $database->bind(':end', $date[1]); + $database->bind(':ip', $server_ip); + $premium = $database->resultset(); +} + +else { + $database->query('SELECT `country` AS label, COUNT(`country`) AS value FROM `player_analytics` WHERE `connect_date` BETWEEN :start AND :end GROUP BY `country`'); + $database->bind(':start', $date[0]); + $database->bind(':end', $date[1]); + $country = $database->resultset(); + + $database->query('SELECT `connect_method` AS label, COUNT(`connect_method`) AS value FROM `player_analytics` WHERE `connect_date` BETWEEN :start AND :end GROUP BY `connect_method`'); + $database->bind(':start', $date[0]); + $database->bind(':end', $date[1]); + $method = $database->resultset(); + + $database->query('SELECT `premium` AS label, COUNT(`premium`) AS value FROM `player_analytics` WHERE `connect_date` BETWEEN :start AND :end GROUP BY `premium`'); + $database->bind(':start', $date[0]); + $database->bind(':end', $date[1]); + $premium = $database->resultset(); +} foreach ($country as $key => $value) { $c_total += $value['value']; diff --git a/inc/getconnections.php b/inc/getconnections.php index aa97a34..8504c72 100644 --- a/inc/getconnections.php +++ b/inc/getconnections.php @@ -33,6 +33,7 @@ OS + Server @@ -60,7 +61,8 @@ { "data": "country" }, { "data": "premium" }, { "data": "html_motd_disabled" }, - { "data": "os" } + { "data": "os" }, + { "data": "server_ip", "visible" : false, "searchable" : true } ], "order": [[0, 'desc']] }); diff --git a/inc/getcountryinfo.php b/inc/getcountryinfo.php index bcda0da..3dff8a0 100644 --- a/inc/getcountryinfo.php +++ b/inc/getcountryinfo.php @@ -28,6 +28,7 @@ Premium HTML OS + Server @@ -53,7 +54,8 @@ { "data": "duration" }, { "data": "premium" }, { "data": "html_motd_disabled" }, - { "data": "os" } + { "data": "os" }, + { "data": "server_ip", "visible" : false, "searchable" : true } ], "order": [[0, 'desc']] }); diff --git a/inc/getdashboard.php b/inc/getdashboard.php index 3e587de..9f226f5 100644 --- a/inc/getdashboard.php +++ b/inc/getdashboard.php @@ -15,16 +15,48 @@ // Instantiate database. $database = new Database(); -$database->query('SELECT COUNT(DISTINCT(`auth`)) AS auth, COUNT(DISTINCT(`server_ip`)) AS server, COUNT(DISTINCT(`country_code`)) AS cc, SUM(`duration`) AS duration FROM `player_analytics`'); -$info = $database->single(); +if (isset($_GET['server'])) { + $server_ip = $_GET['server']; + $database->query('SELECT COUNT(`auth`) AS cons, COUNT(DISTINCT(`auth`)) AS auth, COUNT(DISTINCT(`server_ip`)) AS server, COUNT(DISTINCT(`country_code`)) AS cc, SUM(`duration`) AS duration FROM `player_analytics` WHERE `server_ip` = :ip'); + $database->bind(':ip', $server_ip); + $info = $database->single(); +} + +else { + $database->query('SELECT COUNT(DISTINCT(`auth`)) AS auth, COUNT(DISTINCT(`server_ip`)) AS server, COUNT(DISTINCT(`country_code`)) AS cc, SUM(`duration`) AS duration FROM `player_analytics`'); + $info = $database->single(); +} ?>
-

Dashboard

+ +

Dashboard -

+ +

Dashboard

+
+ +
+
+
+
+
+
+
+ +
+
+ Unique Players +
+
+
+
+
+
+
@@ -42,6 +74,26 @@
+ + +
+
+
+
+
+
+
+ +
+
+ Connections +
+
+
+
+
+
+
@@ -59,6 +111,26 @@
+ + +
+
+
+
+
+
+
+ +
+
+ Unique Regions +
+
+
+
+
+
+
@@ -76,6 +148,7 @@
+
@@ -117,75 +190,184 @@
- + + + + \ No newline at end of file diff --git a/inc/getdashboardrange.php b/inc/getdashboardrange.php index aaf807f..5098068 100644 --- a/inc/getdashboardrange.php +++ b/inc/getdashboardrange.php @@ -21,19 +21,37 @@ // Instantiate database. $database = new Database(); -if ($date[0] == $date[1]) { - $database->query('SELECT `connect_date` AS d, DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%l:00 %p") AS time, COUNT(`auth`) AS total FROM `player_analytics` WHERE `connect_date` BETWEEN :start AND :end GROUP BY DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%H")'); - $database->bind(':start', $date[0]); - $database->bind(':end', $date[1]); - $connections = $database->resultset(); +if (isset($_GET['server'])) { + $server_ip = $_GET['server']; + if ($date[0] == $date[1]) { + $database->query('SELECT `connect_date` AS d, DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%l:00 %p") AS time, COUNT(`auth`) AS total FROM `player_analytics` WHERE `server_ip` = :ip AND `connect_date` BETWEEN :start AND :end GROUP BY DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%H")'); + $database->bind(':start', $date[0]); + $database->bind(':end', $date[1]); + $database->bind(':ip', $server_ip); + $connections = $database->resultset(); + } + else { + $database->query('SELECT `connect_date` AS d, `connect_date` AS time, COUNT(`auth`) AS total FROM `player_analytics` WHERE `server_ip` = :ip AND `connect_date` BETWEEN :start AND :end GROUP BY `connect_date`'); + $database->bind(':start', $date[0]); + $database->bind(':end', $date[1]); + $database->bind(':ip', $server_ip); + $connections = $database->resultset(); + } } else { - $database->query('SELECT `connect_date` AS d, `connect_date` AS time, COUNT(`auth`) AS total FROM `player_analytics` WHERE `connect_date` BETWEEN :start AND :end GROUP BY `connect_date`'); - $database->bind(':start', $date[0]); - $database->bind(':end', $date[1]); - $connections = $database->resultset(); + if ($date[0] == $date[1]) { + $database->query('SELECT `connect_date` AS d, DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%l:00 %p") AS time, COUNT(`auth`) AS total FROM `player_analytics` WHERE `connect_date` BETWEEN :start AND :end GROUP BY DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%H")'); + $database->bind(':start', $date[0]); + $database->bind(':end', $date[1]); + $connections = $database->resultset(); + } + else { + $database->query('SELECT `connect_date` AS d, `connect_date` AS time, COUNT(`auth`) AS total FROM `player_analytics` WHERE `connect_date` BETWEEN :start AND :end GROUP BY `connect_date`'); + $database->bind(':start', $date[0]); + $database->bind(':end', $date[1]); + $connections = $database->resultset(); + } } - print_r(json_encode($connections)); ?> diff --git a/inc/getdateinfo.php b/inc/getdateinfo.php index fe0b65e..901cced 100644 --- a/inc/getdateinfo.php +++ b/inc/getdateinfo.php @@ -19,9 +19,18 @@ // Instantiate database. $database = new Database(); -$database->query('SELECT `server_ip`, COUNT(`auth`) AS connections, COUNT(DISTINCT(`auth`)) AS players, DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%p %I:00") AS time FROM `player_analytics` WHERE `connect_date` = :id GROUP BY `server_ip`, DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%H") ORDER BY DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%H")'); -$database->bind(':id', $_GET['id']); -$connections = $database->resultset(); +if (isset($_GET['server'])) { + $server_ip = $_GET['server']; + $database->query('SELECT `server_ip`, COUNT(`auth`) AS connections, COUNT(DISTINCT(`auth`)) AS players, DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%p %I:00") AS time FROM `player_analytics` WHERE `server_ip` = :ip AND `connect_date` = :id GROUP BY `server_ip`, DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%H") ORDER BY DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%H")'); + $database->bind(':id', $_GET['id']); + $database->bind(':ip', $server_ip); + $connections = $database->resultset(); +} +else { + $database->query('SELECT `server_ip`, COUNT(`auth`) AS connections, COUNT(DISTINCT(`auth`)) AS players, DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%p %I:00") AS time FROM `player_analytics` WHERE `connect_date` = :id GROUP BY `server_ip`, DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%H") ORDER BY DATE_FORMAT(FROM_UNIXTIME(`connect_time`), "%H")'); + $database->bind(':id', $_GET['id']); + $connections = $database->resultset(); +} ?> diff --git a/inc/lab_data.php b/inc/lab_data.php index 1508156..38cc387 100644 --- a/inc/lab_data.php +++ b/inc/lab_data.php @@ -5,11 +5,115 @@ switch($_GET['id']) { case 1: - #, COUNT(DISTINCT(`auth`)) AS players - $database->query('SELECT COUNT(*) AS Comparison_Type, DATE_FORMAT(connect_date, "%Y%m%d") AS Date FROM `'.DB_TABLE_PA.'` WHERE '.getServerIpsSql(false, '', 'AND').' (year(connect_date) = "2016" OR year(connect_date) = "2015" OR year(connect_date) = "2014") GROUP BY YEAR(connect_date), month(connect_date), day(connect_date) ORDER BY `Date` ASC'); - $data = $database->resultset(); + #, COUNT(DISTINCT(`auth`)) AS players + $database->query('SELECT COUNT(*) AS Comparison_Type, DATE_FORMAT(connect_date, "%Y%m%d") AS Date FROM `'.DB_TABLE_PA.'` WHERE '.getServerIpsSql(false, '', 'AND').' (year(connect_date) = "2016" OR year(connect_date) = "2015" OR year(connect_date) = "2014") GROUP BY YEAR(connect_date), month(connect_date), day(connect_date) ORDER BY `Date` ASC'); + $data = $database->resultset(); - echo json_encode($data); - break; + echo json_encode($data); + break; + + case 2: + break; + + case 3: + #$date_yesterday = time() - 86400; + $flags = " AND flags != '' "; + if(isset($_GET['flags']) && $_GET['flags'] != 0) { + $flags = ""; + } + + $database->query('SELECT id, auth, name, connect_time, map, duration FROM `'.DB_TABLE_PA.'` WHERE '.getIpDatesSql(false).' '.$flags.' ORDER BY connect_time ASC'); + $timeline_data_raw = $database->resultset(); + + + #$timeline_data['data'] = ""; + $timeline_data = array(); + $timeline_data_maps = array(); + + $i = $map_i = 0; + $last_map = ""; + $current_map = $next_map = ""; + $map_dateStart = ""; + + foreach($timeline_data_raw as $r) { + + # new user + $timeline_data[$i] = array( + 'id' => $r['id'], + 'userid' => $r['auth'], + 'content' => $r['name'], + 'start' => date("Y-m-d H:i:s", $r['connect_time']), + 'end' => date("Y-m-d H:i:s", ($r['connect_time'] + $r['duration'])), + 'map' => $r['map'], + 'title' => $r['auth'] + ); + + $next_map = $r["map"]; + + # new map + $map_color = ($map_i % 2 == true ? "" : "'negative'"); + #if($last_map != $r['map']) { # we are on a new map + if($current_map != $next_map) { + + $current_map = $next_map; + $s = $map_dateStart; + + if(isset($map)) { # inset map delay + $timeline_data_maps[$i] = array( + 'id' => "m".$r['id'], + 'content' => $r['map'], + 'start' => date("Y-m-d H:i:s", $s), + 'end' => date("Y-m-d H:i:s", ($r['connect_time'] + $r['duration'])), + 'map' => $r['map'], + 'type' => "background", + 'className' => $map_color, + ); + $map_i++; + } + + #$last_map = $r['map']; + $map = $current_map; + $map_dateStart = $r['connect_time']; + } + + $i++; + + # same map + if($current_map != $next_map) { + $current_map = $next_map; + } + } + + + + # merge users that are still on the server after a map change remove small time gaps between map changes + $time_gap = 180; # in sec + #$timeline_data_copy = $timeline_data; + $cnt = count($timeline_data); + for($i = 0; $i < $cnt; $i++) + { + for($j = $i + 0; $j < ($i + 40); $j++) #compare current user with the next X users. If it's the same user and we detect a map change => merge into one user & reset time. + { + if(isset($timeline_data[$j])) + { + if($timeline_data[$i]['userid'] == $timeline_data[$j]['userid']) #same user + { + $time_diff = strtotime($timeline_data[$j]['start']) - strtotime($timeline_data[$i]['end']); + if(abs($time_diff) < $time_gap) # small gap means mapchange (or quick reconnect of User) + { + $timeline_data[$j]['start'] = $timeline_data[$i]['start']; + unset($timeline_data[$i]); + break; + } + + } + } + } #for2 + } + + $final = array_merge($timeline_data, $timeline_data_maps); + echo json_encode($final); die; + pr($timeline_data); die; + break; } \ No newline at end of file diff --git a/index.php b/index.php index cc0714e..beb3acf 100644 --- a/index.php +++ b/index.php @@ -30,6 +30,7 @@ +