Example #1
0
/**
 * Get total time wasted by the player.
 * This is the main method used to return the json. Caching is done in in the main script.
 * 
 * @param int $console The console number (1 for xbox, 2 for playstation)
 * @param string $name The player's username
 * @return string The json array for the complete response
 */
function get_time_wasted($console, $name)
{
    try {
        $timer = new Timer();
        $database = Database::init(DBHOST, DBNAME, DBUSER, DBPASS);
        $response = array();
        $account = new DestinyAccount($name, $console);
        $account->lookup();
        $account->get_accounts();
        $response["displayName"] = $account->display_name;
        if (array_key_exists(1, $account->accounts)) {
            // If the account contains an entry for Xbox
            $account->fetch(1);
            $xbl_time = $account->accounts[1];
            $response["xbox"] = $xbl_time;
            // Insert the time in the Xbox leaderboard
            $query = "REPLACE INTO leaderboard (`id`, `console`, `username`, `seconds`) VALUES (?, ?, ?, ?);";
            $request = new Database($database, $query, array($xbl_time['membershipId'], 0, $xbl_time['displayName'], $xbl_time['timePlayed']));
            $request->send();
            // Get back the player's position
            $query = "SELECT @rownum:=@rownum+1 `rank`, `id` FROM leaderboard, (SELECT @rownum:=0) r ORDER BY `seconds` DESC;";
            $request = new Database($database, $query, null);
            $request->receive();
            $row = 0;
            foreach ($request->get_result() as $result) {
                if ($result['id'] == $xbl_time['membershipId']) {
                    $row = $result['rank'];
                    break;
                }
            }
            $response["xbox"]["leaderboardPosition"] = $row;
        }
        if (array_key_exists(2, $account->accounts)) {
            // If the account contains an entry for Playstation
            $account->fetch(2);
            $psn_time = $account->accounts[2];
            $response["playstation"] = $psn_time;
            // Insert the time in the Playstation leaderboard
            $query = "INSERT IGNORE INTO leaderboard (`id`, `console`, `username`, `seconds`) VALUES (?, ?, ?, ?);";
            $request = new Database($database, $query, array($psn_time['membershipId'], 1, $psn_time['displayName'], $psn_time['timePlayed']));
            $request->send();
            // Get back the player's position
            $query = "SELECT @rownum:=@rownum+1 `rank`, `id` FROM leaderboard, (SELECT @rownum:=0) r ORDER BY `seconds` DESC;";
            $request = new Database($database, $query, null);
            $request->receive();
            $row = 0;
            foreach ($request->get_result() as $result) {
                if ($result['id'] == $psn_time['membershipId']) {
                    $row = $result['rank'];
                    break;
                }
            }
            $response["playstation"]["leaderboardPosition"] = $row;
        }
        $response["totalTimePlayed"] = $account->total_time;
        $response["totalTimeWasted"] = $account->wasted_time;
        $account->error['LoadTime'] = $timer->get_timer();
        $account->error['CacheTime'] = date("r");
        return json_encode(array("Response" => $response, "Info" => $account->error));
    } catch (Exception $e) {
        return json_encode(array("Response" => "", "Info" => $account->error));
    }
}