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;
 }
Esempio n. 2
0
 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);
 }