public function sitemap()
 {
     // todo, cache this!
     $path = $this->_getRequest()->urlSprintf('%p%d.%t') . '/users/';
     $return = [];
     foreach (SortFieldEnum::all() as $item) {
         $x = User::orderBy($item, 'desc')->select('id')->limit(1000)->get();
         foreach ($x as $user) {
             $return[] = $path . $user->id;
         }
     }
     return implode("\n\r", $return);
 }
 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;
 }
Exemple #3
0
 public function getPercentileRow()
 {
     $cols = [new Th('Percentile')];
     foreach (SortFieldEnum::all() as $col) {
         $val = 'Soon';
         $rank = $this->getUser()['rank_' . $col];
         if ($rank) {
             $percent = $rank / $this->getUsersCount() * 100;
             $val = 'Top ' . round($percent + 1) . '%';
         }
         $cols[] = new Td($val);
     }
     return new Tr($cols);
 }