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
$myVar
assignment in line 1 and the$higher
assignment in line 2 are dead. The first because$myVar
is never used and the second because$higher
is always overwritten for every possible time line.