Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require("database.php");
- $data = $_GET["data"];
- $query = "";
- $bind = array();
- function parseSearch($raw = false){
- global $bind;
- $where = array();
- foreach($_POST["columns"] as $k => $v){
- if($v["search"]["value"] != ""){
- array_push($where, "`".$v["data"]."` LIKE ?");
- array_push($bind, "%".$v["search"]["value"]."%");
- }
- }
- if(count($where) > 0){
- return ($raw ? "WHERE " : "AND ").implode(" AND ", $where)." ";
- }
- return "";
- }
- function parseColumns($columns){
- foreach($columns as $k => $v){
- $columns[$k] = "`".implode("`.`", explode(".", $v))."`";
- }
- return implode(", ", $columns);
- }
- function getData($query){
- global $pdo, $bind;
- $statement = $pdo->prepare($query);
- $statement->execute($bind);
- $filter = $pdo->prepare("SELECT FOUND_ROWS()");
- $filter->execute();
- $count = $filter->fetch();
- return array($statement->fetchAll(PDO::FETCH_ASSOC), $count[0]);
- }
- function countRows($table, $group = ""){
- global $pdo;
- $countQuery = "SELECT 1 FROM $table";
- if($group != ""){
- $countQuery .= " GROUP BY ".$group;
- }
- $pdo->prepare($countQuery)->execute();
- $count = $pdo->prepare("SELECT FOUND_ROWS();");
- $count->execute();
- $count = $count->fetch();
- return $count[0];
- }
- $countPos = -1;
- if($data == "fired"){
- $table = "player_fire_bullet";
- $countPos = 3;
- $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");
- $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_fire_bullet WHERE player.id = player_fire_bullet.player ".parseSearch();
- if(@$_GET["group"] != ""){
- $query = str_ireplace("`player_fire_bullet`.`weapon`", "GROUP_CONCAT(DISTINCT player_fire_bullet.weapon SEPARATOR ', ') as weapon", $query);
- $query = str_ireplace("`player_fire_bullet`.`bullet`", "GROUP_CONCAT(DISTINCT player_fire_bullet.bullet SEPARATOR ', ') as bullet, count(name) as count", $query);
- $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT player.name SEPARATOR ', ') as name", $query);
- }
- }else if($data == "animals"){
- $table = "player_animal_kill";
- $countPos = 2;
- $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");
- $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_animal_kill WHERE player.id = player_animal_kill.player ".parseSearch();
- if(@$_GET["group"] != ""){
- $query = str_ireplace("`player_animal_kill`.`animal`", "GROUP_CONCAT(DISTINCT player_animal_kill.animal SEPARATOR ', ') as animal, count(animal) as count", $query);
- $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT player.name SEPARATOR ', ') as name", $query);
- }
- }else if($data == "crafts"){
- $table = "player_craft_item";
- $countPos = 2;
- $columns = array("player.name", "player_craft_item.item", "player_craft_item.date");
- $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_craft_item WHERE player.id = player_craft_item.player ".parseSearch();
- if(@$_GET["group"] != ""){
- $query = str_ireplace("`player_craft_item`.`item`", "GROUP_CONCAT(DISTINCT player_craft_item.item SEPARATOR ', ') as item, count(name) as count", $query);
- $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT player.name SEPARATOR ', ') as name", $query);
- }
- }else if($data == "deaths"){
- $table = "player_death";
- $countPos = 2;
- $columns = array("player.name", "player_death.cause", "player_death.date", "player_death.pos_x", "player_death.pos_y", "player_death.pos_z");
- $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_death WHERE player.id = player_death.player ".parseSearch();
- if(@$_GET["group"] != ""){
- $query = str_ireplace("`player_death`.`cause`", "GROUP_CONCAT(DISTINCT player_death.cause SEPARATOR ', ') as cause, count(cause) as count", $query);
- $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT player.name SEPARATOR ', ') as name", $query);
- }
- }else if($data == "destructions"){
- $table = "player_destroy_building";
- $countPos = 2;
- $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");
- $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_destroy_building WHERE player.id = player_destroy_building.player ".parseSearch();
- if(@$_GET["group"] != ""){
- $query = str_ireplace("`player_destroy_building`.`building`", "GROUP_CONCAT(DISTINCT `player_destroy_building`.`building` SEPARATOR ', ') as building, count(name) as count", $query);
- $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT `player`.`name` SEPARATOR ', ') as name", $query);
- }
- }else if($data == "gathering"){
- $table = "player_gather_resource";
- $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");
- $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_gather_resource WHERE player.id = player_gather_resource.player ".parseSearch();
- if(@$_GET["group"] != ""){
- $query = str_ireplace("`player_gather_resource`.`count`", "sum(player_gather_resource.count) as count", $query);
- $query = str_ireplace("`player_gather_resource`.`resource`", "GROUP_CONCAT(DISTINCT player_gather_resource.resource SEPARATOR ', ') as resource", $query);
- $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT player.name SEPARATOR ', ') as name", $query);
- }
- }else if($data == "kills"){
- $table = "player_kill";
- $countPos = 3;
- $columns = array("killer", "victim", "weapon", "date", "pos_x", "pos_y", "pos_z");
- $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player_kill ";
- $query = str_ireplace("`killer`", "(SELECT `name` FROM player WHERE id = player_kill.killer) as killer", $query);
- $query = str_ireplace("`victim`", "(SELECT `name` FROM player WHERE id = player_kill.victim) as victim", $query);
- $query .= parseSearch(true);
- if(strpos($query, "WHERE") !== false){
- $query = str_ireplace("`killer` LIKE ?", '`killer` IN (SELECT `id` FROM player WHERE `name` LIKE ?)', $query);
- $query = str_ireplace("`victim` LIKE ?", '`victim` IN (SELECT `id` FROM player WHERE `name` LIKE ?)', $query);
- }
- if(@$_GET["group"] != ""){
- $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);
- $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);
- $query = str_ireplace("`weapon`", "GROUP_CONCAT(DISTINCT weapon SEPARATOR ', ') as weapon, count(killer) as count", $query);
- }
- }else if($data == "placements"){
- $table = "player_place_building";
- $countPos = 2;
- $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");
- $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player, player_place_building WHERE player.id = player_place_building.player ".parseSearch();
- if(@$_GET["group"] != ""){
- $query = str_ireplace("`player_place_building`.`building`", "GROUP_CONCAT(DISTINCT `player_place_building`.`building` SEPARATOR ', ') as building, count(name) as count", $query);
- $query = str_ireplace("`player`.`name`", "GROUP_CONCAT(DISTINCT `player`.`name` SEPARATOR ', ') as name", $query);
- }
- }else if($data == "players"){
- $table = "player";
- $columns = array("id", "name", "online_seconds");
- $query = "SELECT SQL_CALC_FOUND_ROWS ".parseColumns($columns)." FROM player ".parseSearch(true);
- }
- if(@$_GET["group"] != ""){
- $query .= " GROUP BY `".join("`, `", explode(", ", $_GET["group"]))."` ";
- $_GET["group"] = str_ireplace("name", "player", $_GET["group"]);
- if($countPos > -1){
- array_splice($columns, $countPos, 0, 'count');
- }
- }
- $query .= "ORDER BY";
- $first = true;
- foreach($_POST["order"] as $k => $v){
- if(!$first){
- $query .= ", ";
- }
- $first = false;
- $exploded = explode(".", $columns[$v["column"]]);
- $query .= " ".addslashes(end($exploded))." ".addslashes($v["dir"]);
- }
- $query .= " LIMIT ".intval($_POST["start"]).", ".intval($_POST["length"]);
- $queryResult = getData($query);
- $data = new stdClass();
- $data->data = $queryResult[0];
- $data->draw = @$_POST["draw"];
- $data->recordsFiltered = $queryResult[1];
- $data->recordsTotal = countRows($table, @$_GET["group"]);
- $data->query = $query;
- echo json_encode($data);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement