index.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
  1. <?php
  2. $page = 1;
  3. require("inc_header.php");
  4. // ======================================================
  5. // SELECT TOTAL GAMES PLAYED
  6. // SELECT AVARAGE PLAY TIME
  7. // ======================================================
  8. $query = "SELECT COUNT(*) AS data, AVG(`play_time`) AS average
  9. FROM `playdata`
  10. WHERE DATE(`start_time`) = CURDATE()";
  11. $result_temp = mysqli_query($connection, $query);
  12. $result = mysqli_fetch_assoc($result_temp);
  13. $games_played = $result['data'];
  14. $avarage_time_temp = $result['average'];
  15. $avarage_time = format($avarage_time_temp);
  16. // ======================================================
  17. // SELECT HIGHEST SCORE OF TODAY
  18. // ======================================================
  19. $query = "SELECT MAX(`score`) AS score
  20. FROM `highscore`
  21. WHERE date=CURDATE()";
  22. $result_temp = mysqli_query($connection, $query);
  23. $result = mysqli_fetch_assoc($result_temp);
  24. $highest_score = $result['score'];
  25. if($highest_score==null)
  26. {
  27. $highest_score=0;
  28. }
  29. // ======================================================
  30. // SELECT MOST PLAYED SONG
  31. // ======================================================
  32. $query = "SELECT `songinstance`, `title`, COUNT(`songinstance`) as `num` FROM `playdata`, `songinstance`, `song`
  33. WHERE playdata.songinstance=songinstance.id AND songinstance.song=song.id AND DATE(`start_time`)=CURDATE()
  34. GROUP BY `songinstance`
  35. ORDER BY COUNT(`songinstance`) DESC
  36. LIMIT 1";
  37. $result_temp = mysqli_query($connection, $query);
  38. if(mysqli_num_rows($result_temp) > 0)
  39. {
  40. $result = mysqli_fetch_assoc($result_temp);
  41. $most_played = $result['title'];
  42. }
  43. else
  44. {
  45. $most_played = "No songs played today";
  46. }
  47. // ======================================================
  48. // DATA POINTS FOR MOST PLAYED GRAPH
  49. // DATA POINTS FOR AVERAGE PLAY TIME GRAPH
  50. // ======================================================
  51. $most_played_array = array();
  52. $average_play_time_array = array();
  53. $query = "SELECT DATE(`start_time`) AS date, COUNT(*) AS data, AVG(`play_time`) AS average
  54. FROM `playdata`
  55. GROUP BY DATE(`start_time`)
  56. ORDER BY `start_time` DESC
  57. LIMIT 0,7";
  58. $result_temp = mysqli_query($connection, $query);
  59. while($result = mysqli_fetch_assoc($result_temp))
  60. {
  61. $most_played_array[] = "{y: '" . $result['date'] . "', gp: " . $result['data'] . "}";
  62. $average_play_time_array[] = "{y: '" . $result['date'] . "', pt: " . format($result['average'])['tseconds'] . "}";
  63. }
  64. $most_played_array = array_reverse($most_played_array);
  65. $average_play_time_array = array_reverse($average_play_time_array);
  66. // ======================================================
  67. // DATA POINTS FOR SCORES GRAPH
  68. // ======================================================
  69. $scores_array = array();
  70. $scores_names_array = array();
  71. $query = "SELECT `date`, `score`, `username`
  72. FROM highscore
  73. ORDER BY `date` DESC
  74. LIMIT 0,28";
  75. $result_temp = mysqli_query($connection, $query);
  76. while($result = mysqli_fetch_assoc($result_temp))
  77. {
  78. $scores_array[] = "{y: '" . $result['date'] . "', sc: " . $result['score'] . "}";
  79. $scores_names_array[] = "'" . $result['username'] . "'";
  80. }
  81. $scores_array = array_reverse($scores_array);
  82. $scores_names_array = array_reverse($scores_names_array);
  83. // ======================================================
  84. // PERCENTAGE OF DIFFICULTY
  85. // ======================================================
  86. $easy = 0;
  87. $medium = 0;
  88. $hard = 0;
  89. $other = 0;
  90. $query = "SELECT `difficulty`, COUNT(1) as num, COUNT(1) / (SELECT COUNT(1) FROM `playdata` ) * 100 as avg
  91. FROM `songinstance` AS si, `playdata` as pd
  92. WHERE si.id = pd.songinstance
  93. GROUP BY `difficulty`";
  94. $result_temp = mysqli_query($connection, $query);
  95. while($result = mysqli_fetch_assoc($result_temp))
  96. {
  97. if(strtolower($result['difficulty']) == "easy")
  98. {
  99. $easy = $easy + round($result['avg']);
  100. }
  101. else if(strtolower($result['difficulty']) == "medium")
  102. {
  103. $medium = $medium + round($result['avg']);
  104. }
  105. else if(strtolower($result['difficulty']) == "hard")
  106. {
  107. $hard = $hard + round($result['avg']);
  108. }
  109. else
  110. {
  111. $other = $other + $result['avg'];
  112. }
  113. }
  114. $other = round($other);
  115. // ======================================================
  116. // LATEST GAMES
  117. // ======================================================
  118. $table = "";
  119. $query = "SELECT `title`, `difficulty`, songinstance.id as siid, song.id as sid, (`enemies_hit` / (`enemies_missed` + `enemies_hit`)) * 100 as ratio, `start_time`, `play_time`
  120. FROM `playdata`, `songinstance`, `song`
  121. WHERE playdata.songinstance = songinstance.id AND songinstance.song = song.id
  122. ORDER BY `start_time` DESC
  123. LIMIT 3";
  124. $result_temp = mysqli_query($connection, $query);
  125. while($result = mysqli_fetch_assoc($result_temp))
  126. {
  127. $ratio = round($result['ratio']);
  128. $label = "danger";
  129. if($ratio >= 40)
  130. $label = "warning";
  131. if($ratio >= 80)
  132. $label = "success";
  133. $table .= "<tr>";
  134. $table .= "<td><a href='" . returnurl('song.php?id=' . $result['sid']) . "'>" . $result['title'] . "</a></td>";
  135. $table .= "<td><a href='" . returnurl('songinstance.php?id=' . $result['siid']) . "'>" . $result['difficulty'] . "</a></td>";
  136. $table .= "<td><span class='label label-" . $label . "'>" . $ratio . "<small>%</small></span></td>";
  137. $table .= "<td>" . format($result['play_time'])['string'] . "</td>";
  138. $table .= "<td>" . $result['start_time'] . "</td>";
  139. $table .= "</tr>";
  140. }
  141. ?>
  142. <!-- Content Wrapper. Contains page content -->
  143. <div class="content-wrapper">
  144. <!-- Content Header (Page header) -->
  145. <section class="content-header">
  146. <h1>
  147. Dashboard
  148. <small>All activity in one quick overview</small>
  149. </h1>
  150. <ol class="breadcrumb">
  151. <li class="active"><a href="#"><i class="fa fa-dashboard"></i> Dashboard</a></li>
  152. </ol>
  153. </section>
  154. <section class="content">
  155. <!--==================================================
  156. // HEADER BOXES
  157. ===================================================-->
  158. <!-- Small boxes (Stat box) -->
  159. <div class="row">
  160. <div class="col-lg-3 col-sm-6 col-xs-12">
  161. <!-- small box -->
  162. <div class="small-box bg-aqua">
  163. <div class="inner">
  164. <h3><?php echo $games_played; ?></h3>
  165. <p>Games Played</p>
  166. </div>
  167. <div class="icon">
  168. <i class="ion ion-ios-game-controller-a"></i>
  169. </div>
  170. <a href="<?php url('games.php') ?>" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
  171. </div>
  172. </div><!-- ./col -->
  173. <div class="col-lg-3 col-sm-6 col-xs-12">
  174. <!-- small box -->
  175. <div class="small-box bg-green">
  176. <div class="inner">
  177. <h3><?php echo $avarage_time['minutes'] . ":" . $avarage_time['seconds']; ?><sup style="font-size: 20px">:<?php echo $avarage_time['usec']; ?></sup></h3>
  178. <p>Minutes played on avarage</p>
  179. </div>
  180. <div class="icon">
  181. <i class="ion ion-clock"></i>
  182. </div>
  183. <a href="<?php url('games.php') ?>" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
  184. </div>
  185. </div><!-- ./col -->
  186. <div class="clearfix visible-sm-block"></div>
  187. <div class="col-lg-3 col-sm-6 col-xs-12">
  188. <!-- small box -->
  189. <div class="small-box bg-yellow">
  190. <div class="inner">
  191. <h3><?php echo $highest_score; ?><sup style="font-size: 20px"> points</sup></h3>
  192. <p>Highscore</p>
  193. </div>
  194. <div class="icon">
  195. <i class="ion ion-ribbon-b"></i>
  196. </div>
  197. <a href="<?php url('scores.php') ?>" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
  198. </div>
  199. </div><!-- ./col -->
  200. <div class="col-lg-3 col-sm-6 col-xs-12">
  201. <!-- small box -->
  202. <div class="small-box bg-red">
  203. <div class="inner">
  204. <h3><?php echo $most_played; ?></h3>
  205. <p>Most Played Song</p>
  206. </div>
  207. <div class="icon">
  208. <i class="ion ion-music-note"></i>
  209. </div>
  210. <a href="<?php url('songs.php') ?>" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
  211. </div>
  212. </div><!-- ./col -->
  213. </div><!-- /.row -->
  214. <div class="row">
  215. <div class="col-lg-6">
  216. <!-- games played graph -->
  217. <div class="box box-solid bg-teal">
  218. <div class="box-header">
  219. <i class="fa fa-gamepad"></i>
  220. <h3 class="box-title">Games played</h3>
  221. </div>
  222. <div class="box-body border-radius-none">
  223. <div class="chart" id="games-played-chart" style="height: 245px;"></div>
  224. </div><!-- /.box-body -->
  225. <!-- gamemodes -->
  226. <div class="box-footer no-border hidden-xs">
  227. <div class="row">
  228. <div class="col-xs-3 text-center" style="border-right: 1px solid #f4f4f4">
  229. <input type="text" class="knob" data-readonly="true" value="<?php echo $easy; ?>" data-width="60" data-height="60" data-fgColor="#39CCCC"/>
  230. <div class="knob-label">Easy</div>
  231. </div><!-- ./col -->
  232. <div class="col-xs-3 text-center" style="border-right: 1px solid #f4f4f4">
  233. <input type="text" class="knob" data-readonly="true" value="<?php echo $medium; ?>" data-width="60" data-height="60" data-fgColor="#39CCCC"/>
  234. <div class="knob-label">Medium</div>
  235. </div><!-- ./col -->
  236. <div class="col-xs-3 text-center" style="border-right: 1px solid #f4f4f4">
  237. <input type="text" class="knob" data-readonly="true" value="<?php echo $hard; ?>" data-width="60" data-height="60" data-fgColor="#39CCCC"/>
  238. <div class="knob-label">Hard</div>
  239. </div><!-- ./col -->
  240. <div class="col-xs-3 text-center">
  241. <input type="text" class="knob" data-readonly="true" value="<?php echo $other; ?>" data-width="60" data-height="60" data-fgColor="#39CCCC"/>
  242. <div class="knob-label">Other</div>
  243. </div><!-- ./col -->
  244. </div><!-- /.row -->
  245. </div><!-- /.box-footer -->
  246. </div><!-- /.box -->
  247. <div class="box">
  248. <div class="box-header with-border">
  249. <i class="fa fa-gamepad"></i>
  250. <h3 class="box-title">Latest Games</h3>
  251. </div><!-- /.box-header -->
  252. <div class="box-body">
  253. <div class="table-responsive">
  254. <table class="table no-margin">
  255. <thead>
  256. <tr>
  257. <th>Song Name</th>
  258. <th>Difficulty</th>
  259. <th>Hit Ratio</th>
  260. <th>Length</th>
  261. <th>Time</th>
  262. </tr>
  263. </thead>
  264. <tbody>
  265. <?php echo $table; ?>
  266. </tbody>
  267. </table>
  268. </div><!-- /.table-responsive -->
  269. </div><!-- /.box-body -->
  270. <!--
  271. <div class="box-footer clearfix">
  272. <a href="<?php url('songs.php') ?>" class="btn btn-sm btn-default btn-flat pull-right">View All Songs</a>
  273. </div><!-- /.box-footer -->
  274. </div><!-- /.box -->
  275. </div><!-- /.column -->
  276. <div class="col-lg-6">
  277. <!-- TABLE: LATEST SONGS -->
  278. <!-- games played graph -->
  279. <div class="box box-solid bg-purple">
  280. <div class="box-header">
  281. <i class="ion ion-ribbon-b"></i>
  282. <h3 class="box-title">Scores</h3>
  283. </div>
  284. <div class="box-body border-radius-none">
  285. <div class="chart" id="scores-chart" style="height: 245px;"></div>
  286. </div><!-- /.box-body -->
  287. </div><!-- /.box -->
  288. <div class="box box-solid bg-orange">
  289. <div class="box-header">
  290. <i class="ion ion-clock"></i>
  291. <h3 class="box-title">Average Play Time</h3>
  292. </div>
  293. <div class="box-body border-radius-none">
  294. <div class="chart" id="average-play-time-chart" style="height: 255px;"></div>
  295. </div><!-- /.box-body -->
  296. </div><!-- /.box -->
  297. </div><!-- /.col -->
  298. </div>
  299. </section><!-- /.content -->
  300. </div><!-- /.content-wrapper -->
  301. <!-- Morris.js charts -->
  302. <script src="http://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
  303. <script src="plugins/morris/morris.min.js" type="text/javascript"></script>
  304. <!-- jQuery Knob Chart -->
  305. <script src="plugins/knob/jquery.knob.js" type="text/javascript"></script>
  306. <!-- Page specific javascript -->
  307. <script type="text/javascript">
  308. var most_played_data = [ <?php
  309. foreach ($most_played_array as $value)
  310. {
  311. echo $value . ",\n";
  312. }
  313. ?> ];
  314. var average_play_time_data = [ <?php
  315. foreach ($average_play_time_array as $value)
  316. {
  317. echo $value . ",\n";
  318. }
  319. ?> ];
  320. var scores_data = [ <?php
  321. foreach ($scores_array as $value)
  322. {
  323. echo $value . ",\n";
  324. }
  325. ?> ];
  326. var scores_names_data = [ <?php
  327. foreach ($scores_names_array as $value)
  328. {
  329. echo $value . ",\n";
  330. }
  331. ?> ];
  332. </script>
  333. <script src="dist/js/pages/dashboard.js" type="text/javascript"></script>
  334. <?php
  335. require("inc_footer.php");
  336. ?>