public function executeIndex()
 {
     $maxBadgesToDisplay = 6;
     // Could make this a global if we want
     wfProfileIn(__METHOD__);
     // include oasis.css override
     $this->wg->Out->addStyle(AssetsManager::getInstance()->getSassCommonURL('extensions/wikia/AchievementsII/css/oasis.scss'));
     // This code was taken from SpecialLeaderboard so it can be used by both the module and the old Monaco .tmpl
     $rankingService = new AchRankingService();
     // ignore welcome badges
     $blackList = array(BADGE_WELCOME);
     $awardedBadges = $rankingService->getRecentAwardedBadges(null, $maxBadgesToDisplay, 3, $blackList);
     $recents = array();
     $count = 1;
     // getRecentAwardedBadges can sometimes return more than $max items
     foreach ($awardedBadges as $badgeData) {
         //$level = $badgeData['badge']->getLevel();
         $recents[] = $badgeData;
         if ($count++ >= $maxBadgesToDisplay) {
             break;
         }
     }
     $this->recents = $recents;
     wfProfileOut(__METHOD__);
 }
 public function executeIndex()
 {
     $maxBadgesToDisplay = 6;
     // Could make this a global if we want
     wfProfileIn(__METHOD__);
     $this->response->addAsset('achievements_js');
     // This code was taken from SpecialLeaderboard so it can be used by both the module and the old Monaco .tmpl
     $rankingService = new AchRankingService();
     // ignore welcome badges
     $blackList = array(BADGE_WELCOME);
     $awardedBadges = $rankingService->getRecentAwardedBadges(null, $maxBadgesToDisplay, 3, $blackList);
     $recents = array();
     $count = 1;
     // getRecentAwardedBadges can sometimes return more than $max items
     foreach ($awardedBadges as $badgeData) {
         //$level = $badgeData['badge']->getLevel();
         $recents[] = $badgeData;
         if ($count++ >= $maxBadgesToDisplay) {
             break;
         }
     }
     $this->recents = $recents;
     wfProfileOut(__METHOD__);
 }
예제 #3
0
 /**
  * @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);
     }
 }