/** * 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)); } }