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