/** * Check if the user is authorized to view the blog, per the privacy * permissions * @param array $blog blog contents */ protected function allowedByPrivacyOptions(array $blog, array $blogPermissions) { $visitorUserId = XenForo_Visitor::getUserId(); if ($blog['user_id'] == $visitorUserId) { return parent::allowedByPrivacyOptions($blog, $blogPermissions); } if ($blogPermissions['xfa_blogs_bypass_privacy']) { return parent::allowedByPrivacyOptions($blog, $blogPermissions); } if (empty($blog['allow_view_blog'])) { return parent::allowedByPrivacyOptions($blog, $blogPermissions); } if ($blog['allow_view_blog'] != 'group') { return parent::allowedByPrivacyOptions($blog, $blogPermissions); } if (empty($blog['allow_view_blog_group'])) { return true; } /* @var $privacyGroupModel ThemeHouse_PrivacyGroups_Model_PrivacyGroup */ $privacyGroupModel = $this->getModelFromCache('ThemeHouse_PrivacyGroups_Model_PrivacyGroup'); $privacyGroup = $privacyGroupModel->getPrivacyGroupById($blog['allow_view_blog_group']); if (!$privacyGroup) { return true; } return XenForo_Helper_Criteria::userMatchesCriteria($privacyGroup['user_criteria'], true); }
/** * Fetches all notices applicable to the visiting user * * @param array $params * @param array $containerData * * @return array */ protected function _getSocialNoticesContainerParams(XenForo_ControllerResponse_View $controllerResponse, array $notices = array()) { $socialForum = ThemeHouse_SocialGroups_SocialForum::getInstance(); /* @var $noticeModel XenForo_Model_Notice */ $noticeModel = XenForo_Model::create('XenForo_Model_Notice'); if (XenForo_Application::get('options')->enableNotices) { $user = XenForo_Visitor::getInstance()->toArray(); if (XenForo_Application::isRegistered('session')) { $dismissedNotices = XenForo_Application::getSession()->get('dismissedNotices'); } if (!isset($dismissedNotices) || !is_array($dismissedNotices)) { $dismissedNotices = array(); } // handle style overrides $user['style_id'] = XenForo_Application::get('options')->defaultStyleId; $noticeTokens = array('{name}' => $user['username'] !== '' ? $user['username'] : new XenForo_Phrase('guest'), '{user_id}' => $user['user_id']); $allNotices = $noticeModel->getNoticesForSocialForum($socialForum['social_forum_id']); foreach ($allNotices as $noticeId => $notice) { if (!in_array($noticeId, $dismissedNotices) && XenForo_Helper_Criteria::userMatchesCriteria($notice['user_criteria'], true, $user) && XenForo_Helper_Criteria::pageMatchesCriteria($notice['page_criteria'], true, $controllerResponse->params, $controllerResponse->containerParams)) { $notices[$noticeId] = array('title' => $notice['title'], 'message' => str_replace(array_keys($noticeTokens), $noticeTokens, $notice['message']), 'wrap' => $notice['wrap'], 'dismissible' => $notice['dismissible'] && XenForo_Visitor::getUserId()); } } } return $notices; }
public static function template_hook($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template) { $options = XenForo_Application::get('options'); $enableadvxenforo = $options->enableadvxenforo; $thread_id = $hookParams['thread']['thread_id']; if ($enableadvxenforo) { $PermissionEnable = XenForo_Visitor::getInstance()->hasPermission('adv_xenforo', 'adv_xenforo_enable_adv') ? TRUE : FALSE; if ($hookName == 'account_preferences_options' && $PermissionEnable) { $ourTemplate = $template->create('adv_xenforo_account_options', $template->getparams()); $rendered = $ourTemplate->render(); $contents = $contents . $rendered; } $hasPermission = XenForo_Visitor::getInstance()->hasPermission('adv_xenforo', 'adv_xenforo_show') ? TRUE : FALSE; $advs = XenForo_Application::getSimpleCacheData('adv_xenforo'); $user = XenForo_Visitor::getInstance()->toArray(); $enable_adv = $PermissionEnable === TRUE ? $user['enable_adv'] : TRUE; $containerData = self::$containerData; if (empty(self::$containerData)) { $containerData = XenForo_Template_Public::getExtraContainerData(); } if ($enable_adv) { if ($hasPermission === TRUE && $advs["AdvsHook"]) { $isMobile = XenForo_Visitor::isBrowsingWith('mobile'); switch (TRUE) { case $isMobile == TRUE: $adv_adv = 'adv_small'; break; default: $adv_adv = 'adv_large'; break; } foreach ($advs["AdvsHook"] as $_asv) { if ($_asv['active'] && XenForo_Helper_Criteria::userMatchesCriteria($_asv['user_criteria'], TRUE, $user) && XenForo_Helper_Criteria::pageMatchesCriteria($_asv['page_criteria'], TRUE, $template->getParams(), $containerData)) { $ourTemplate = $template->create('ads_xf_ar_xenforo', array('advanced' => $_asv[$adv_adv])); $rendered = $ourTemplate->render(); if ($hookName == 'message_content' && Turki_Adv_Helper_Criteria::postCriteria($_asv['post_criteria'], TRUE) === FALSE) { if ($hookParams['message']['thread_id']) { $decode = XenForo_Helper_Criteria::prepareCriteriaForSelection($_asv['post_criteria']); $position = $decode['active']['page'] ? $hookParams['message']['position'] % $options->messagesPerPage : $hookParams['message']['position']; if ($position == $decode['active']['post_id'] - 1) { $contents = $decode['active']['position'] ? Turki_Adv_Helper_Helpers::advhtml($contents, $rendered) : $contents . $rendered; } } } else { if ($hookName == $_asv['adv_hook_name'] && Turki_Adv_Helper_Criteria::postCriteria($_asv['post_criteria'], TRUE)) { $contents = $_asv['display'] == 'top' ? $rendered . $contents : $contents . $rendered; } } } } } } self::_templateHook($hookName, $contents, $hookParams, $template); } }
/** * * @see sonnb_XenGallery_Model_Photo::passesPrivacyCheck() */ public function passesPrivacyCheck(array $photo, $type, $typeData, &$errorPhraseKey = '', array $viewingUser = null) { if (is_numeric($type)) { /* @var $privacyGroupModel ThemeHouse_PrivacyGroups_Model_PrivacyGroup */ $privacyGroupModel = $this->getModelFromCache('ThemeHouse_PrivacyGroups_Model_PrivacyGroup'); $privacyGroup = $privacyGroupModel->getPrivacyGroupById($type); if (!$privacyGroup) { return true; } return XenForo_Helper_Criteria::userMatchesCriteria($privacyGroup['user_criteria'], true, $viewingUser); } return parent::passesPrivacyCheck($photo, $type, $typeData, $errorPhraseKey, $viewingUser); }
public function canTagUser(array $user, &$errorPhraseKey = '', array $viewingUser = null) { $this->standardizeViewingUserReference($viewingUser); if ($user['user_id'] == $viewingUser['user_id']) { return true; } /* END canTagUser */ if (is_numeric($user['xengallery']['allow_tagging'])) { /* @var $privacyGroupModel ThemeHouse_PrivacyGroups_Model_PrivacyGroup */ $privacyGroupModel = $this->getModelFromCache('ThemeHouse_PrivacyGroups_Model_PrivacyGroup'); $privacyGroup = $privacyGroupModel->getPrivacyGroupById($user['xengallery']['allow_tagging']); if (!$privacyGroup) { return true; } return XenForo_Helper_Criteria::userMatchesCriteria($privacyGroup['user_criteria'], true, $viewingUser); } return parent::canTagUser($user, $errorPhraseKey, $viewingUser); }
public static function processAutoWarnings() { /* @var $warningModel XenForo_Model_Warning */ $warningModel = XenForo_Model::create('XenForo_Model_Warning'); $queueEntries = $warningModel->getAllAutoWarningQueueEntries(); $entries = array(); foreach ($queueEntries as $queueEntry) { $entries[$queueEntry['content_type']][$queueEntry['content_id']] = $queueEntry; } if (isset($entries['post'])) { /* @var $postModel XenForo_Model_Post */ $postModel = XenForo_Model::create('XenForo_Model_Post'); $posts = $postModel->getPostsByIds(array_keys($entries['post']), array('join' => XenForo_Model_Post::FETCH_THREAD | XenForo_Model_Post::FETCH_USER)); foreach ($posts as $postId => $post) { $entries['post'][$postId] = array_merge($post, $entries['post'][$postId]); $entries['post'][$postId]['content_title'] = $post['title']; } } if (isset($entries['profile_post'])) { /* @var $profilePostModel XenForo_Model_Profile_Post */ $profilePostModel = XenForo_Model::create('XenForo_Model_ProfilePost'); $profilePosts = $profilePostModel->getProfilePostsByIds(array_keys($entries['profile_post']), array('join' => XenForo_Model_ProfilePost::FETCH_USER_RECEIVER | XenForo_Model_ProfilePost::FETCH_USER_POSTER)); $profilePostEntries = array(); foreach ($profilePosts as $profilePostId => $profilePost) { $profilePostEntries[$profilePostId] = array_merge($profilePost, $entries['profile_post'][$profilePostId]); } $entries['profile_post'] = $profilePostEntries; } $autoWarnings = $warningModel->prepareAutoWarnings($warningModel->getAutoWarnings(), true); foreach ($entries as $contentType => $contentTypeEntries) { foreach ($autoWarnings as $autoWarning) { if (!in_array($contentType, $autoWarning['contentTypes'])) { continue; } foreach ($contentTypeEntries as $contentId => $entry) { if (ThemeHouse_AutoWarning_Helper_Criteria::contentMatchesCriteria($autoWarning['contentCriteria'], true, $entry['message']) && XenForo_Helper_Criteria::userMatchesCriteria($autoWarning['user_criteria'], true, $entry)) { self::_createWarning($autoWarning, $entry); } $warningModel->deleteFromAutoWarningQueue($contentType, $contentId); } } } }
/** * * @see XenForo_Model_User::passesPrivacyCheck() */ public function passesPrivacyCheck($privacyRequirement, array $user, array $viewingUser = null) { if (!parent::passesPrivacyCheck($privacyRequirement, $user, $viewingUser)) { return false; } $privacyRequirementParts = explode('_', $privacyRequirement); if (count($privacyRequirementParts) != 2) { return true; } list($privacyRequirement, $privacyGroupId) = $privacyRequirementParts; if ($privacyRequirement != 'group') { return true; } /* @var $privacyGroupModel ThemeHouse_PrivacyGroups_Model_PrivacyGroup */ $privacyGroupModel = $this->getModelFromCache('ThemeHouse_PrivacyGroups_Model_PrivacyGroup'); $privacyGroup = $privacyGroupModel->getPrivacyGroupById($privacyGroupId); if (!$privacyGroup) { return true; } return XenForo_Helper_Criteria::userMatchesCriteria($privacyGroup['user_criteria'], true, $viewingUser); }
protected function _checkUserSpamRules(array $user, Zend_Controller_Request_Http $request) { /* @var $userSpamRuleModel ThemeHouse_SpamRules_Model_UserSpamRule */ $userSpamRuleModel = $this->getModelFromCache('ThemeHouse_SpamRules_Model_UserSpamRule'); $userSpamRules = $userSpamRuleModel->prepareUserSpamRules($userSpamRuleModel->getUserSpamRules()); $result = self::RESULT_ALLOWED; foreach ($userSpamRules as $userSpamRule) { $requestMatches = ThemeHouse_SpamRules_Helper_Criteria::requestMatchesCriteria($userSpamRule['requestCriteria'], true, $request); $userMatches = XenForo_Helper_Criteria::userMatchesCriteria($userSpamRule['user_criteria'], true); if ($requestMatches && $userMatches) { switch ($userSpamRule['action']) { case 'moderate': $result = self::RESULT_MODERATED; break; case 'reject': $result = self::RESULT_DENIED; break 2; } } } return $result; }
public function run() { if (self::$checkRedirectRules == $this->_templateName) { $redirectRules = XenForo_Application::getSimpleCacheData('th_redirectRules'); $user = XenForo_Visitor::getInstance()->toArray(); $template = $this->_template; $containerData = $this->_containerData; if ($redirectRules) { foreach ($redirectRules as $redirectRule) { if (XenForo_Helper_Criteria::userMatchesCriteria($redirectRule['user_criteria'], true, $user) && XenForo_Helper_Criteria::pageMatchesCriteria($redirectRule['page_criteria'], true, $template->getParams(), $containerData)) { $url = $this->_getRedirectUrl($redirectRule['reroute_domain']); if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED) !== FALSE) { header("HTTP/1.1 301 Moved Permanently"); header('Location : ' . $url); exit; } } } } } return parent::run(); }
/** * Runs the cron-based check for new trophies that users should be awarded. */ public static function runTrophyCheck() { /* @var $trophyModel XenForo_Model_Trophy */ $trophyModel = XenForo_Model::create('XenForo_Model_Trophy'); $trophies = $trophyModel->getAllTrophies(); if (!$trophies) { return; } /* @var $userModel XenForo_Model_User */ $userModel = XenForo_Model::create('XenForo_Model_User'); $users = $userModel->getUsers(array('user_state' => 'valid', 'is_banned' => 0, 'last_activity' => array('>', XenForo_Application::$time - 86400)), array('join' => XenForo_Model_User::FETCH_USER_OPTION)); $userTrophies = $trophyModel->getUserTrophiesByUserIds(array_keys($users)); foreach ($users as $user) { foreach ($trophies as $trophy) { if (isset($userTrophies[$user['user_id']][$trophy['trophy_id']])) { continue; } if (XenForo_Helper_Criteria::userMatchesCriteria($trophy['criteria'], false, $user)) { $trophyModel->awardUserTrophy($user, $user['username'], $trophy); } } } }
public function updatePromotionsForUser(array $user, array $promotionStates = null, array $promotions = null) { $changes = 0; if ($promotions === null) { $promotions = $this->getPromotions(array('active' => 1)); } if (!$promotions) { return 0; } if ($promotionStates === null) { $promotionStates = $this->getPromotionStatesByUserId($user['user_id']); } foreach ($promotions as $promotionId => $promotion) { if (isset($promotionStates[$promotionId])) { $skip = false; switch ($promotionStates[$promotionId]) { case 'manual': // has it, don't take it away // has it, don't take it away case 'disabled': // never give it $skip = true; } if ($skip) { continue; } $hasPromotion = true; } else { $hasPromotion = false; } if (XenForo_Helper_Criteria::userMatchesCriteria($promotion['user_criteria'], false, $user)) { if (!$hasPromotion) { $this->promoteUser($promotion, $user['user_id']); $changes++; } } else { if ($hasPromotion) { $this->demoteUser($promotion, $user['user_id']); $changes++; } } } return $changes; }
public function updateTrophiesForUser(array $user, array $userTrophies = null, array $trophies = null) { $awarded = 0; if ($trophies === null) { $trophies = $this->getAllTrophies(); } if (!$trophies) { return 0; } if ($userTrophies === null) { $userTrophies = $this->getTrophiesForUserId($user['user_id']); } foreach ($trophies as $trophy) { if (isset($userTrophies[$trophy['trophy_id']])) { continue; } if (XenForo_Helper_Criteria::userMatchesCriteria($trophy['user_criteria'], false, $user)) { $this->awardUserTrophy($user, $user['username'], $trophy); $awarded++; } } return $awarded; }
/** * Fetches all notices applicable to the visiting user * * @param XenForo_Template_Abstract $template * @param array $containerData * * @return array */ protected function _getNoticesContainerParams(XenForo_Template_Abstract $template, array $containerData) { $notices = array(); foreach ($this->_dependencies->notices as $param => $noticeKey) { if ($template->getParam($param)) { $notices['block'][$noticeKey] = array('title' => new XenForo_Phrase($noticeKey), 'message' => $template->create($noticeKey, $template->getParams()), 'wrap' => true, 'dismissible' => false); } } if (XenForo_Application::get('options')->enableNotices) { if (XenForo_Application::isRegistered('notices')) { $user = XenForo_Visitor::getInstance()->toArray(); if (XenForo_Application::isRegistered('session')) { $dismissedNotices = XenForo_Application::getSession()->get('dismissedNotices'); } if (!isset($dismissedNotices) || !is_array($dismissedNotices)) { $dismissedNotices = array(); } // handle style overrides $visitorStyle = $template->getParam('visitorStyle'); if (!empty($visitorStyle)) { $user['style_id'] = $visitorStyle['style_id']; } $noticeList = XenForo_Application::get('notices'); foreach (XenForo_Application::get('notices') as $noticeId => $notice) { if (!empty($notice['dismissible']) && in_array($noticeId, $dismissedNotices) || !XenForo_Helper_Criteria::userMatchesCriteria($notice['user_criteria'], true, $user) || !XenForo_Helper_Criteria::pageMatchesCriteria($notice['page_criteria'], true, $template->getParams(), $containerData)) { unset($noticeList[$noticeId]); } } $noticeTokens = array('{name}' => $user['username'] !== '' ? htmlspecialchars($user['username']) : new XenForo_Phrase('guest'), '{user_id}' => $user['user_id']); XenForo_CodeEvent::fire('notices_prepare', array(&$noticeList, &$noticeTokens, $template, $containerData)); foreach ($noticeList as $noticeId => $notice) { $noticeTokens['{title}'] = $notice['title']; $imageUrl = ''; if ($notice['display_image'] == 'avatar') { $imageUrl = XenForo_Template_Helper_Core::callHelper('avatar', array($user, 's')); } else { if ($notice['display_image'] == 'image') { $imageUrl = $notice['image_url']; } } $notices[$notice['notice_type']][$noticeId] = array('title' => $notice['title'], 'message' => str_replace(array_keys($noticeTokens), $noticeTokens, $notice['message']), 'wrap' => $notice['wrap'], 'dismissible' => $notice['dismissible'], 'delay_duration' => $notice['delay_duration'], 'display_duration' => $notice['display_duration'], 'auto_dismiss' => $notice['auto_dismiss'], 'display_image' => $notice['display_image'], 'display_style' => $notice['display_style'], 'css_class' => $notice['css_class'], 'visibility' => $notice['visibility'], 'imageUrl' => $imageUrl); } } } return $notices; }
/** * Fetches all notices applicable to the visiting user * * @param XenForo_Template_Abstract $template * @param array $containerData * * @return array */ protected function _getNoticesContainerParams(XenForo_Template_Abstract $template, array $containerData) { $notices = array(); foreach ($this->_dependencies->notices as $param => $noticeKey) { if ($template->getParam($param)) { $notices[$noticeKey] = array('title' => new XenForo_Phrase($noticeKey), 'message' => $template->create($noticeKey, $template->getParams()), 'wrap' => true, 'dismissible' => false); } } if (XenForo_Application::get('options')->enableNotices) { if (XenForo_Application::isRegistered('notices')) { $user = XenForo_Visitor::getInstance()->toArray(); if (XenForo_Application::isRegistered('session')) { $dismissedNotices = XenForo_Application::getSession()->get('dismissedNotices'); } if (!isset($dismissedNotices) || !is_array($dismissedNotices)) { $dismissedNotices = array(); } // handle style overrides $visitorStyle = $template->getParam('visitorStyle'); if (!empty($visitorStyle)) { $user['style_id'] = $visitorStyle['style_id']; } $noticeList = XenForo_Application::get('notices'); foreach (XenForo_Application::get('notices') as $noticeId => $notice) { if (!empty($notice['dismissible']) && in_array($noticeId, $dismissedNotices) || !XenForo_Helper_Criteria::userMatchesCriteria($notice['user_criteria'], true, $user) || !XenForo_Helper_Criteria::pageMatchesCriteria($notice['page_criteria'], true, $template->getParams(), $containerData)) { unset($noticeList[$noticeId]); } } $noticeTokens = array('{name}' => $user['username'] !== '' ? $user['username'] : new XenForo_Phrase('guest'), '{user_id}' => $user['user_id']); XenForo_CodeEvent::fire('notices_prepare', array(&$noticeList, &$noticeTokens, $template, $containerData)); foreach ($noticeList as $noticeId => $notice) { $notices[$noticeId] = array('title' => $notice['title'], 'message' => str_replace(array_keys($noticeTokens), $noticeTokens, $notice['message']), 'wrap' => $notice['wrap'], 'dismissible' => $notice['dismissible'] && XenForo_Visitor::getUserId()); } } } return $notices; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('position' => 0, 'batch' => 70, 'start_time' => XenForo_Application::$time), $data); $data['batch'] = max(1, $data['batch']); /* @var $userModel XenForo_Model_User */ $userModel = XenForo_Model::create('XenForo_Model_User'); /* @var $leaderboardModel Waindigo_Leaderboards_Model_Leaderboard */ $leaderboardModel = XenForo_Model::create('Waindigo_Leaderboards_Model_Leaderboard'); if (!empty($data['leaderboard_id'])) { $leaderboards = array($data['leaderboard_id'] => $leaderboardModel->getLeaderboardById($data['leaderboard_id'])); } elseif (!empty($data['rebuildOnly'])) { $leaderboards = $leaderboardModel->getLeaderboards(array('rebuildSince' => $data['start_time'])); } else { $leaderboards = $leaderboardModel->getLeaderboards(); } if (empty($leaderboards)) { return true; } $leaderboardEntries = $leaderboardModel->getLeaderboardEntries(array('leaderboard_ids' => array_keys($leaderboards))); foreach ($leaderboardEntries as $leaderboardEntry) { $leaderboards[$leaderboardEntry['leaderboard_id']]['entries'][$leaderboardEntry['user_id']] = $leaderboardEntry['entry']; } $db = XenForo_Application::getDb(); if ($data['position'] == 0) { $userIds = array(); foreach ($leaderboardEntries as $leaderboardEntry) { $userIds[$leaderboardEntry['user_id']] = $leaderboardEntry['user_id']; } $users = $userModel->getUsersByIds($userIds); foreach ($leaderboards as $leaderboardId => &$leaderboard) { if (empty($leaderboard['entries'])) { continue; } foreach ($leaderboard['entries'] as $userId => $entry) { $userMatches = false; if (!empty($users[$userId])) { $userMatches = XenForo_Helper_Criteria::userMatchesCriteria($leaderboard['user_criteria'], true, $users[$userId]); } if (!$userMatches) { arsort($leaderboard['entries']); unset($leaderboard['entries'][$userId]); $db->delete('xf_user_leaderboard_entry_waindigo', 'leaderboard_id = ' . $db->quote($leaderboardId) . ' AND user_id = ' . $db->quote($userId)); } elseif (isset($users[$userId][$leaderboard['order']]) && $users[$userId][$leaderboard['order']] != $entry) { $leaderboard['entries'][$userId] = $entry; $db->update('xf_user_leaderboard_entry_waindigo', array('entry' => $users[$userId][$leaderboard['order']]), 'leaderboard_id = ' . $db->quote($leaderboardId) . ' AND user_id = ' . $db->quote($userId)); } } } } $userIds = $userModel->getUserIdsInRange($data['position'], $data['batch']); if (sizeof($userIds) == 0) { $db->update('xf_user_leaderboard_waindigo', array('last_rebuild' => XenForo_Application::$time), 'leaderboard_id IN (' . $db->quote(array_keys($leaderboards)) . ')'); return true; } $users = $userModel->getUsersByIds($userIds); $limit = XenForo_Application::get('options')->membersPerPage; foreach ($userIds as $userId) { $data['position'] = $userId; if (empty($users[$userId])) { continue; } foreach ($leaderboards as $leaderboardId => &$leaderboard) { if (!empty($leaderboard['entries'][$userId])) { continue; } if (empty($users[$userId][$leaderboard['order']])) { continue; } if (!empty($leaderboard['entries']) && count($leaderboard['entries']) >= $limit) { $entryToBeat = min($leaderboard['entries']); if (isset($users[$userId][$leaderboard['order']]) && $users[$userId][$leaderboard['order']] <= $entryToBeat) { continue; } } $userMatches = XenForo_Helper_Criteria::userMatchesCriteria($leaderboard['user_criteria'], true, $users[$userId]); if ($userMatches) { if (!empty($leaderboard['entries']) && count($leaderboard['entries']) >= $limit) { while (count($leaderboard['entries']) >= $limit) { arsort($leaderboard['entries']); $entryToRemove = array_pop($leaderboard['entries']); $db->delete('xf_user_leaderboard_entry_waindigo', 'leaderboard_id = ' . $db->quote($leaderboardId) . ' AND user_id = ' . $db->quote($userId)); } } $leaderboard['entries'][$userId] = $users[$userId][$leaderboard['order']]; $db->insert('xf_user_leaderboard_entry_waindigo', array('leaderboard_id' => $leaderboardId, 'user_id' => $userId, 'username' => $users[$userId]['username'], 'entry' => $users[$userId][$leaderboard['order']])); } } } $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('waindigo_leaderboards_leaderboards'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }