Advertisement
Guest User

Untitled

a guest
Jul 25th, 2015
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.28 KB | None | 0 0
  1. <?php
  2.  
  3.  
  4.  
  5. require("database.php");
  6.  
  7.  
  8.  
  9. $data = $_GET["data"];
  10.  
  11. $query = "";
  12.  
  13.  
  14.  
  15. $bind = array();
  16.  
  17.  
  18.  
  19. function parseSearch($raw = false){
  20.  
  21. global $bind;
  22.  
  23. $where = array();
  24.  
  25.  
  26.  
  27. foreach($_POST["columns"] as $k => $v){
  28.  
  29. if($v["search"]["value"] != ""){
  30.  
  31. array_push($where, "`".$v["data"]."` LIKE ?");
  32.  
  33. array_push($bind, "%".$v["search"]["value"]."%");
  34.  
  35. }
  36.  
  37. }
  38.  
  39.  
  40.  
  41. if(count($where) > 0){
  42.  
  43. return ($raw ? "WHERE " : "AND ").implode(" AND ", $where)." ";
  44.  
  45. }
  46.  
  47.  
  48.  
  49. return "";
  50.  
  51. }
  52.  
  53.  
  54.  
  55. function parseColumns($columns){
  56.  
  57. foreach($columns as $k => $v){
  58.  
  59. $columns[$k] = "`".implode("`.`", explode(".", $v))."`";
  60.  
  61. }
  62.  
  63. return implode(", ", $columns);
  64.  
  65. }
  66.  
  67.  
  68.  
  69. function getData($query){
  70.  
  71. global $pdo, $bind;
  72.  
  73. $statement = $pdo->prepare($query);
  74.  
  75.  
  76.  
  77. $statement->execute($bind);
  78.  
  79.  
  80.  
  81. $filter = $pdo->prepare("SELECT FOUND_ROWS()");
  82.  
  83. $filter->execute();
  84.  
  85. $count = $filter->fetch();
  86.  
  87. return array($statement->fetchAll(PDO::FETCH_ASSOC), $count[0]);
  88.  
  89. }
  90.  
  91.  
  92.  
  93. function countRows($table, $group = ""){
  94.  
  95. global $pdo;
  96.  
  97. $countQuery = "SELECT 1 FROM $table";
  98.  
  99.  
  100.  
  101. if($group != ""){
  102.  
  103. $countQuery .= " GROUP BY ".$group;
  104.  
  105. }
  106.  
  107.  
  108.  
  109. $pdo->prepare($countQuery)->execute();
  110.  
  111. $count = $pdo->prepare("SELECT FOUND_ROWS();");
  112.  
  113. $count->execute();
  114.  
  115. $count = $count->fetch();
  116.  
  117. return $count[0];
  118.  
  119. }
  120.  
  121.  
  122.  
  123. $countPos = -1;
  124.  
  125.  
  126.  
  127. if($data == "fired"){
  128.  
  129. $table = "player_fire_bullet";
  130.  
  131. $countPos = 3;
  132.  
  133. $columns = array("player.name", "player_fire_bullet.weapon", "player_fire_bullet.bullet", "player_fire_bullet.date", "player_fire_bullet.pos_x", "player_fire_bullet.pos_y", "player_fire_bullet.pos_z");
  134.  
  135. $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_fire_bullet WHERE player.id = player_fire_bullet.player ".parseSearch();
  136.  
  137.  
  138.  
  139. if(@$_GET["group"] != ""){
  140.  
  141. $query = str_ireplace("`player_fire_bullet`.`weapon`", "GROUP_CONCAT(DISTINCT player_fire_bullet.weapon SEPARATOR ', ') as weapon", $query);
  142.  
  143. $query = str_ireplace("`player_fire_bullet`.`bullet`", "GROUP_CONCAT(DISTINCT player_fire_bullet.bullet SEPARATOR ', ') as bullet, count(name) as count", $query);
  144.  
  145. $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT player.name SEPARATOR ', ') as name", $query);
  146.  
  147. }
  148.  
  149. }else if($data == "animals"){
  150.  
  151. $table = "player_animal_kill";
  152.  
  153. $countPos = 2;
  154.  
  155. $columns = array("player.name", "player_animal_kill.animal", "player_animal_kill.date", "player_animal_kill.pos_x", "player_animal_kill.pos_y", "player_animal_kill.pos_z");
  156.  
  157. $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_animal_kill WHERE player.id = player_animal_kill.player ".parseSearch();
  158.  
  159.  
  160.  
  161. if(@$_GET["group"] != ""){
  162.  
  163. $query = str_ireplace("`player_animal_kill`.`animal`", "GROUP_CONCAT(DISTINCT player_animal_kill.animal SEPARATOR ', ') as animal, count(animal) as count", $query);
  164.  
  165. $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT player.name SEPARATOR ', ') as name", $query);
  166.  
  167. }
  168.  
  169. }else if($data == "crafts"){
  170.  
  171. $table = "player_craft_item";
  172.  
  173. $countPos = 2;
  174.  
  175. $columns = array("player.name", "player_craft_item.item", "player_craft_item.date");
  176.  
  177. $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_craft_item WHERE player.id = player_craft_item.player ".parseSearch();
  178.  
  179.  
  180.  
  181. if(@$_GET["group"] != ""){
  182.  
  183. $query = str_ireplace("`player_craft_item`.`item`", "GROUP_CONCAT(DISTINCT player_craft_item.item SEPARATOR ', ') as item, count(name) as count", $query);
  184.  
  185. $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT player.name SEPARATOR ', ') as name", $query);
  186.  
  187. }
  188.  
  189. }else if($data == "deaths"){
  190.  
  191. $table = "player_death";
  192.  
  193. $countPos = 2;
  194.  
  195. $columns = array("player.name", "player_death.cause", "player_death.date", "player_death.pos_x", "player_death.pos_y", "player_death.pos_z");
  196.  
  197. $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_death WHERE player.id = player_death.player ".parseSearch();
  198.  
  199.  
  200.  
  201. if(@$_GET["group"] != ""){
  202.  
  203. $query = str_ireplace("`player_death`.`cause`", "GROUP_CONCAT(DISTINCT player_death.cause SEPARATOR ', ') as cause, count(cause) as count", $query);
  204.  
  205. $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT player.name SEPARATOR ', ') as name", $query);
  206.  
  207. }
  208.  
  209. }else if($data == "destructions"){
  210.  
  211. $table = "player_destroy_building";
  212.  
  213. $countPos = 2;
  214.  
  215. $columns = array("player.name", "player_destroy_building.building", "player_destroy_building.date", "player_destroy_building.pos_x", "player_destroy_building.pos_y", "player_destroy_building.pos_z");
  216.  
  217. $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_destroy_building WHERE player.id = player_destroy_building.player ".parseSearch();
  218.  
  219.  
  220.  
  221. if(@$_GET["group"] != ""){
  222.  
  223. $query = str_ireplace("`player_destroy_building`.`building`", "GROUP_CONCAT(DISTINCT `player_destroy_building`.`building` SEPARATOR ', ') as building, count(name) as count", $query);
  224.  
  225. $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT `player`.`name` SEPARATOR ', ') as name", $query);
  226.  
  227. }
  228.  
  229. }else if($data == "gathering"){
  230.  
  231. $table = "player_gather_resource";
  232.  
  233. $columns = array("player.name", "player_gather_resource.resource", "player_gather_resource.count", "player_gather_resource.date", "player_gather_resource.pos_x", "player_gather_resource.pos_y", "player_gather_resource.pos_z");
  234.  
  235. $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_gather_resource WHERE player.id = player_gather_resource.player ".parseSearch();
  236.  
  237.  
  238.  
  239. if(@$_GET["group"] != ""){
  240.  
  241. $query = str_ireplace("`player_gather_resource`.`count`", "sum(player_gather_resource.count) as count", $query);
  242.  
  243. $query = str_ireplace("`player_gather_resource`.`resource`", "GROUP_CONCAT(DISTINCT player_gather_resource.resource SEPARATOR ', ') as resource", $query);
  244.  
  245. $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT player.name SEPARATOR ', ') as name", $query);
  246.  
  247. }
  248.  
  249. }else if($data == "kills"){
  250.  
  251. $table = "player_kill";
  252.  
  253. $countPos = 3;
  254.  
  255. $columns = array("killer", "victim", "weapon", "date", "pos_x", "pos_y", "pos_z");
  256.  
  257. $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player_kill ";
  258.  
  259.  
  260.  
  261. $query = str_ireplace("`killer`", "(SELECT `name` FROM player WHERE id = player_kill.killer) as killer", $query);
  262.  
  263. $query = str_ireplace("`victim`", "(SELECT `name` FROM player WHERE id = player_kill.victim) as victim", $query);
  264.  
  265.  
  266.  
  267. $query .= parseSearch(true);
  268.  
  269.  
  270.  
  271. if(strpos($query, "WHERE") !== false){
  272.  
  273. $query = str_ireplace("`killer` LIKE ?", '`killer` IN (SELECT `id` FROM player WHERE `name` LIKE ?)', $query);
  274.  
  275. $query = str_ireplace("`victim` LIKE ?", '`victim` IN (SELECT `id` FROM player WHERE `name` LIKE ?)', $query);
  276.  
  277. }
  278.  
  279.  
  280.  
  281. if(@$_GET["group"] != ""){
  282.  
  283. $query = str_ireplace("(SELECT `name` FROM player WHERE id = player_kill.killer) as killer", "GROUP_CONCAT(DISTINCT (SELECT name FROM player WHERE id = player_kill.killer) SEPARATOR ', ') as killer", $query);
  284.  
  285. $query = str_ireplace("(SELECT `name` FROM player WHERE id = player_kill.victim)", "GROUP_CONCAT(DISTINCT (SELECT name FROM player WHERE id = player_kill.victim) SEPARATOR ', ')", $query);
  286.  
  287. $query = str_ireplace("`weapon`", "GROUP_CONCAT(DISTINCT weapon SEPARATOR ', ') as weapon, count(killer) as count", $query);
  288.  
  289. }
  290.  
  291. }else if($data == "placements"){
  292.  
  293. $table = "player_place_building";
  294.  
  295. $countPos = 2;
  296.  
  297. $columns = array("player.name", "player_place_building.building", "player_place_building.date", "player_place_building.pos_x", "player_place_building.pos_y", "player_place_building.pos_z");
  298.  
  299. $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_place_building WHERE player.id = player_place_building.player ".parseSearch();
  300.  
  301.  
  302.  
  303. if(@$_GET["group"] != ""){
  304.  
  305. $query = str_ireplace("`player_place_building`.`building`", "GROUP_CONCAT(DISTINCT `player_place_building`.`building` SEPARATOR ', ') as building, count(name) as count", $query);
  306.  
  307. $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT `player`.`name` SEPARATOR ', ') as name", $query);
  308.  
  309. }
  310.  
  311. }else if($data == "players"){
  312.  
  313. $table = "player";
  314.  
  315. $columns = array("id", "name", "online_seconds");
  316.  
  317. $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player ".parseSearch(true);
  318.  
  319. }
  320.  
  321.  
  322.  
  323. if(@$_GET["group"] != ""){
  324.  
  325. $query .= " GROUP BY `".join("`, `", explode(", ", $_GET["group"]))."` ";
  326.  
  327. $_GET["group"] = str_ireplace("name", "player", $_GET["group"]);
  328.  
  329.  
  330.  
  331. if($countPos > -1){
  332.  
  333. array_splice($columns, $countPos, 0, 'count');
  334.  
  335. }
  336.  
  337. }
  338.  
  339.  
  340.  
  341. $query .= "ORDER BY";
  342.  
  343.  
  344.  
  345. $first = true;
  346.  
  347. foreach($_POST["order"] as $k => $v){
  348.  
  349. if(!$first){
  350.  
  351. $query .= ", ";
  352.  
  353. }
  354.  
  355. $first = false;
  356.  
  357. $exploded = explode(".", $columns[$v["column"]]);
  358.  
  359. $query .= " ".addslashes(end($exploded))." ".addslashes($v["dir"]);
  360.  
  361. }
  362.  
  363.  
  364.  
  365. $query .= " LIMIT ".intval($_POST["start"]).", ".intval($_POST["length"]);
  366.  
  367.  
  368.  
  369. $queryResult = getData($query);
  370.  
  371.  
  372.  
  373. $data = new stdClass();
  374.  
  375. $data->data = $queryResult[0];
  376.  
  377. $data->draw = @$_POST["draw"];
  378.  
  379. $data->recordsFiltered = $queryResult[1];
  380.  
  381. $data->recordsTotal = countRows($table, @$_GET["group"]);
  382.  
  383. $data->query = $query;
  384.  
  385.  
  386.  
  387. echo json_encode($data);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement