protected function _updateUser(User $user, $scanFriends = false) { if ($this->_isBot()) { return $user; } $week = $user->updated_at < date('Y-m-d G:i:s', strtotime('-7 days')); $month = $user->updated_at_friends < date('Y-m-d G:i:s', strtotime('-28 days')); if ($week || $month) { // Update ranks foreach (SortFieldEnum::all() as $item) { $r = 'rank_' . $item; $user->{$r} = Manager::table($r)->select('id')->where('user_id', '=', $user->id)->pluck('id'); } // Steam API stuff $playerService = new SteamPlayerService($this->_getApi()); $userService = new SteamUser($this->_getApi()); // User details $details = $userService->getPlayerSummary($user->id); $user->name = $details->personaname; $user->profile = $details->profileurl; $user->avatar_large = $details->avatarfull; $user->avatar_medium = $details->avatarmedium; $user->real_name = $details->realname; $user->time_on_steam = $details->timecreated; $user->country = $details->loccountrycode; // Games $games = $playerService->getOwnedGames($user->id); $json = []; foreach ($games as $game) { $json[$game->appId] = $game->playtimeForever; } $user->games = count($games); $user->games_json = json_encode($json); $user->time = array_sum($json); // level $level = $playerService->getSteamLevel($user->id); $user->level = $level->level; // Badges $badges = $playerService->getBadges($user->id); $user->badges = count($badges->badges); $user->xp = $badges->playerXp; $user->xp_needed = $badges->playerXpNeededToLevelUp; $user->xp_current = $badges->playerXpNeededCurrentLevel; $xp = 0; foreach ($badges->badges as $badge) { $xp += $badge->xp; } $user->xp_from_badges = $xp; // Friends try { $friends = $userService->getFriendList($user->id); $user->friends = count($friends); $user->friends_json = json_encode($friends); if ($scanFriends && $month) { $this->_queueFriends($friends); } } catch (SteamException $e) { } $user->updated_at_friends = date('Y-m-d G:i:s'); // Save $user->save(); } return $user; }
public function id() { $search = $this->_getRequest()->request->get('search'); if (!$search) { return new UserNotFound($search); } // Steam ID if (preg_match('/^STEAM_/', $search)) { $parts = explode(':', $search); $id = bcadd(bcadd(bcmul($parts[2], '2'), '76561197960265728'), $parts[1]); } elseif (is_numeric($search) && strlen($search) == 8) { $id = bcadd($search, '76561197960265728'); } elseif (is_numeric($search) && strlen($search) == 17) { $id = $search; } else { $steam = new SteamUser($this->_getApi()); try { $id = $steam->resolveVanityUrl(basename($search))->steamId; } catch (SteamUserNotFoundException $e) { return new UserNotFound($search); } } return RedirectResponse::create('/users/' . $id); }