|
1
|
|
|
<?php |
|
2
|
|
|
/* zKillboard |
|
3
|
|
|
* Copyright (C) 2012-2015 EVE-KILL Team and EVSCO. |
|
4
|
|
|
* |
|
5
|
|
|
* This program is free software: you can redistribute it and/or modify |
|
6
|
|
|
* it under the terms of the GNU Affero General Public License as published by |
|
7
|
|
|
* the Free Software Foundation, either version 3 of the License, or |
|
8
|
|
|
* (at your option) any later version. |
|
9
|
|
|
* |
|
10
|
|
|
* This program is distributed in the hope that it will be useful, |
|
11
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
13
|
|
|
* GNU Affero General Public License for more details. |
|
14
|
|
|
* |
|
15
|
|
|
* You should have received a copy of the GNU Affero General Public License |
|
16
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
17
|
|
|
*/ |
|
18
|
|
|
|
|
19
|
|
|
class api_charInfo implements apiEndpoint |
|
20
|
|
|
{ |
|
21
|
|
|
public function getDescription() |
|
22
|
|
|
{ |
|
23
|
|
|
return array("type" => "description", "message" => |
|
24
|
|
|
"Gives you a list of characters, with their corporation history, and some basic kill stats" |
|
25
|
|
|
); |
|
26
|
|
|
} |
|
27
|
|
|
|
|
28
|
|
|
public function getAcceptedParameters() |
|
29
|
|
|
{ |
|
30
|
|
|
return array("type" => "parameters", "parameters" => |
|
31
|
|
|
array( |
|
32
|
|
|
"characterID" => "The characterID of the character you need information on" |
|
33
|
|
|
) |
|
34
|
|
|
); |
|
35
|
|
|
} |
|
36
|
|
|
public function execute($parameters) |
|
37
|
|
|
{ |
|
38
|
|
|
$data = array(); |
|
|
|
|
|
|
39
|
|
|
if(isset($parameters["characterID"])) |
|
40
|
|
|
$characterID = (int) $parameters["characterID"][0]; |
|
41
|
|
|
|
|
42
|
|
|
$exists = Db::queryField("SELECT characterID FROM zz_characters WHERE characterID = :characterID", "characterID", array(":characterID" => $characterID)); |
|
|
|
|
|
|
43
|
|
|
if(!$exists) |
|
44
|
|
|
return array("type" => "error", "message" => "Character does not exist"); |
|
45
|
|
|
|
|
46
|
|
|
$data = json_decode(Db::queryField("SELECT history FROM zz_characters WHERE characterID = :charID", "history", array(":charID" => $characterID)), true); |
|
47
|
|
|
$corporationID = $data["corporationID"]; |
|
48
|
|
|
$allianceID = $data["allianceID"]; |
|
49
|
|
|
$lastSeenSystemID = Db::queryField("SELECT solarSystemID FROM zz_participants WHERE characterID = :charID ORDER BY dttm DESC LIMIT 1", "solarSystemID", array(":charID" => $characterID)); |
|
50
|
|
|
$corpActiveSystemID = Db::queryField("SELECT solarSystemID, count(killID) AS hits FROM zz_participants WHERE characterID = :charID AND corporationID = :corpID AND dttm >= date_sub(now(), interval 30 day) GROUP BY solarSystemID ORDER BY hits DESC LIMIT 10000", "solarSystemID", array(":charID" => $characterID, ":corpID" => $corporationID)); |
|
51
|
|
|
$allianceActiveSystemID = Db::queryField("SELECT solarSystemID, count(killID) AS hits FROM zz_participants WHERE characterID = :charID AND allianceID = :alliID AND dttm >= date_sub(now(), interval 30 day) GROUP BY solarSystemID ORDER BY hits DESC LIMIT 10000", "solarSystemID", array(":charID" => $characterID, ":alliID" => $allianceID)); |
|
52
|
|
|
$data["allianceTicker"] = Db::queryField("SELECT ticker FROM zz_alliances WHERE allianceID = :allianceID", "ticker", array(":allianceID" => $allianceID)); |
|
53
|
|
|
$data["corporationTicker"] = Db::queryField("SELECT ticker FROM zz_corporations WHERE corporationID = :corporationID", "ticker", array(":corporationID" => $corporationID)); |
|
54
|
|
|
$data["lastSeenSystem"] = Info::getSystemName($lastSeenSystemID); |
|
55
|
|
|
$data["lastSeenRegion"] = Info::getRegionName(Info::getRegionIDFromSystemID($lastSeenSystemID)); |
|
56
|
|
|
$data["lastSeenDate"] = Db::queryField("SELECT dttm FROM zz_participants WHERE characterID = :charID ORDER BY dttm DESC LIMIT 1", "dttm", array(":charID" => $characterID)); |
|
57
|
|
|
$data["lastSeenShip"] = Info::getShipName(Db::queryField("SELECT shipTypeID FROM zz_participants WHERE characterID = :charID AND shipTypeID != 0 ORDER BY dttm DESC LIMIT 1", "shipTypeID", array(":charID" => $characterID))); |
|
58
|
|
|
$data["corporationActiveArea"] = Info::getRegionName(Info::getRegionIDFromSystemID($corpActiveSystemID)); |
|
59
|
|
|
$data["allianceActiveArea"] = isset($allianceID) ? Info::getRegionName(Info::getRegionIDFromSystemID($allianceActiveSystemID)) : ""; |
|
60
|
|
|
$data["lifeTimeKills"] = Db::queryField("SELECT SUM(destroyed) AS kills FROM zz_stats WHERE typeID = :charID", "kills", array(":charID" => $characterID), 3600); |
|
61
|
|
|
$data["lifeTimeLosses"] = Db::queryField("SELECT SUM(lost) AS losses FROM zz_stats WHERE typeID = :charID", "losses", array(":charID" => $characterID), 3600); |
|
62
|
|
|
$data["top10FlownShips"] = Stats::getTopShips(array("characterID" => $characterID, "kills" => true, "month" => date("m"), "year" => date("y"), "limit" => 10), true); |
|
63
|
|
|
$data["top10ActiveSystems"] = Stats::getTopSystems(array("characterID" => $characterID, "kills" => true, "month" => date("m"), "year" => date("y"), "limit" => 10), true); |
|
64
|
|
|
$data["lastUpdatedOnBackend"] = Db::queryField("SELECT lastUpdated FROM zz_characters WHERE characterID = :charID", "lastUpdated", array(":charID" => $characterID)); |
|
65
|
|
|
$data["soloKills"] = Db::queryField("SELECT count(*) as kills FROM zz_participants WHERE characterID = :charID AND isVictim = 0 AND number_involved = 1", "kills", array(":charID" => $characterID)); |
|
66
|
|
|
$data["blobKills"] = Db::queryField("SELECT count(*) as kills FROM zz_participants WHERE characterID = :charID AND isVictim = 0 AND number_involved >= 50", "kills", array(":charID" => $characterID)); |
|
67
|
|
|
|
|
68
|
|
|
if($data["soloKills"] > 0 && $data["blobKills"] > 0) |
|
69
|
|
|
$data["percentageSoloPVPer"] = $data["soloKills"] / $data["blobKills"] * 100; |
|
70
|
|
|
|
|
71
|
|
|
$penis = "(..)=="; |
|
72
|
|
|
$cnt = log($data["lifeTimeKills"]) * 3; |
|
73
|
|
|
$i = 0; |
|
74
|
|
|
while($i < $cnt) |
|
75
|
|
|
{ |
|
76
|
|
|
$penis .= "="; |
|
77
|
|
|
$i++; |
|
78
|
|
|
} |
|
79
|
|
|
$data["ePeenSize"] = $penis . "D"; |
|
80
|
|
|
|
|
81
|
|
|
$facepalmLosses = Db::queryField("SELECT count(*) AS losses FROM zz_participants WHERE characterID = :charID AND shipPrice >= 200000000 AND isVictim = 1", "losses", array(":charID" => $characterID)); |
|
82
|
|
|
$facepalms = "(>ლ)"; |
|
83
|
|
|
$cnt = log($facepalmLosses); |
|
84
|
|
|
$i = 0; |
|
85
|
|
|
while($i < $cnt) |
|
86
|
|
|
{ |
|
87
|
|
|
$facepalms .= "(>ლ)"; |
|
88
|
|
|
$i++; |
|
89
|
|
|
} |
|
90
|
|
|
|
|
91
|
|
|
$data["facepalms"] = $facepalms; |
|
92
|
|
|
return $data; |
|
93
|
|
|
|
|
94
|
|
|
// Do the same with corporation and alliance apis? |
|
95
|
|
|
// Full character list for corporations / alliances ? :D could be usefull for spymasters and shit |
|
96
|
|
|
} |
|
97
|
|
|
} |
|
98
|
|
|
|
This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.
Both the
$myVarassignment in line 1 and the$higherassignment in line 2 are dead. The first because$myVaris never used and the second because$higheris always overwritten for every possible time line.