function execute($user_id) { wfProfileIn(__METHOD__); global $wgOut, $wgExtensionsPath, $wgStylePath, $wgSupressPageSubtitle, $wgUser, $wgResourceBasePath, $wgJsMimeType; $wgSupressPageSubtitle = true; $rankingService = new AchRankingService(); $this->setHeaders(); $wgOut->setPageTitle(wfMsg('achievements-title')); $skinName = get_class($this->getSkin()); if ($skinName == 'SkinOasis') { $assetsManager = F::build('AssetsManager', array(), 'getInstance'); $scssPackage = 'special_leaderboard_oasis_css'; $jsPackage = 'special_leaderboard_oasis_js'; foreach ($assetsManager->getURL($scssPackage) as $url) { $wgOut->addStyle($url); } foreach ($assetsManager->getURL($jsPackage) as $url) { $wgOut->addScript("<script src=\"{$url}\"></script>"); } } else { // FIXME: use AM group here $wgOut->addStyle("common/article_sidebar.css"); $wgOut->addExtensionStyle("{$wgExtensionsPath}/wikia/AchievementsII/css/achievements_sidebar.css"); $wgOut->addScript("<script type=\"{$wgJsMimeType}\" src=\"{$wgExtensionsPath}/wikia/AchievementsII/js/achievements.js\"></script>\n"); if ($skinName == 'SkinMonoBook') { $wgOut->addExtensionStyle("{$wgExtensionsPath}/wikia/AchievementsII/css/leaderboard_monobook.css"); } } // ranking $ranking = $rankingService->getUsersRanking(20, true); //make array of latest badges, per user $topUserIDs = array(); foreach ($ranking as $rankedUser) { $topUserIDs[] = $rankedUser->getID(); } $userService = new AchUserProfileService(); $topUserBadges = $userService->getMostRecentUserBadge($topUserIDs); $template = new EasyTemplate(dirname(__FILE__) . '/templates'); $template->set_vars(array('ranking' => $ranking, 'topUserBadges' => $topUserBadges, 'userpage' => $wgUser->getUserPage()->getPrefixedURL())); $wgOut->addHTML($template->render('SpecialLeaderboard')); wfProfileOut(__METHOD__); }
function execute($user_id) { wfProfileIn(__METHOD__); global $wgOut, $wgExtensionsPath, $wgStylePath, $wgSupressPageSubtitle, $wgUser, $wgResourceBasePath, $wgJsMimeType; $wgSupressPageSubtitle = true; $rankingService = new AchRankingService(); $this->setHeaders(); $wgOut->setPageTitle(wfMsg('achievements-title')); $skinName = get_class($this->getSkin()); if ($skinName == 'SkinOasis') { $assetsManager = AssetsManager::getInstance(); $scssPackage = 'special_leaderboard_oasis_css'; $jsPackage = 'special_leaderboard_oasis_js'; foreach ($assetsManager->getURL($scssPackage) as $url) { $wgOut->addStyle($url); } foreach ($assetsManager->getURL($jsPackage) as $url) { $wgOut->addScript("<script src=\"{$url}\"></script>"); } } // include oasis.css override $wgOut->addStyle(AssetsManager::getInstance()->getSassCommonURL('extensions/wikia/AchievementsII/css/oasis.scss')); // ranking $ranking = $rankingService->getUsersRanking(20, true); //make array of latest badges, per user $topUserIDs = array(); foreach ($ranking as $rankedUser) { $topUserIDs[] = $rankedUser->getID(); } $usersService = new AchUsersService(); $topUserBadges = $usersService->getMostRecentUserBadge($topUserIDs); $template = new EasyTemplate(dirname(__FILE__) . '/templates'); $template->set_vars(array('ranking' => $ranking, 'topUserBadges' => $topUserBadges, 'userpage' => $wgUser->getUserPage()->getPrefixedURL())); $wgOut->addHTML($template->render('SpecialLeaderboard')); wfProfileOut(__METHOD__); }
/** * @author Jakub Kurcek * @param format string 'rss' or 'atom' */ private function FeedAchivementsLeaderboard($format) { global $wgEnableAchievementsExt, $wgLang; if (empty($wgEnableAchievementsExt)) { $this->showMenu(); } else { // local settings $maxEntries = 20; $howOld = 3; $userAvatarSize = 48; $rankingService = new AchRankingService(); $ranking = $rankingService->getUsersRanking(20); $levels = array(BADGE_LEVEL_PLATINUM, BADGE_LEVEL_GOLD, BADGE_LEVEL_SILVER, BADGE_LEVEL_BRONZE); $recents = array(); $specialPage = SpecialPageFactory::getPage('Leaderboard'); $specialPageTitle = $specialPage->getTitle(); $pageUrl = $specialPageTitle->getFullUrl(); foreach ($levels as $level) { $limit = 3; $blackList = null; if ($level == BADGE_LEVEL_BRONZE) { if ($maxEntries <= 0) { break; } $limit = $maxEntries; $blackList = array(BADGE_WELCOME); } $awardedBadges = $rankingService->getRecentAwardedBadges($level, $limit, $howOld, $blackList); if ($total = count($awardedBadges)) { $recents[$level] = $awardedBadges; $maxEntries -= $total; } } $feedArray = array(); foreach ($ranking as $rank => $rankedUser) { ++$rank; $name = htmlspecialchars($rankedUser->getName()); $feedArray[] = array('title' => $name, 'description' => $wgLang->formatNum($rankedUser->getScore()), 'url' => $pageUrl, 'date' => time(), 'author' => '', '', 'otherTags' => array('media:thumbnail' => AvatarService::getAvatarUrl($rankedUser->getName(), $userAvatarSize))); } $this->showFeed($format, wfMsg('feed-title-leaderboard'), $feedArray); } }