/**
  * Show the special page
  *
  * @param $par Mixed: parameter passed to the page or null
  */
 public function execute($par)
 {
     global $wgUploadPath, $wgUser, $wgHuijiPrefix;
     $templateParser = new TemplateParser(__DIR__ . '/pages');
     $out = $this->getOutput();
     $user = $this->getUser();
     if (!$user->isAllowed('AdminDashboard')) {
         $out->permissionRequired('AdminDashboard');
         return;
     }
     // Set the page title, robot policies, etc.
     $this->setHeaders();
     // Add CSS
     $out->addModules('ext.socialprofile.userprofile.css');
     $out->addModules('ext.socialprofile.admindashboard.css');
     // Add js and message
     // $out->addModules( 'skin.bootstrapmediawiki.huiji.getRecordsInterface.js' );
     $out->addModules('ext.socialprofile.admindashboard.js');
     $out->addModules('ext.socialprofile.userprofile.js');
     $output = '';
     // Prevent E_NOTICE
     $yesterday = date("Y-m-d", strtotime("-1 day"));
     $totaledit = SiteStats::edits();
     $ueb = new UserEditBox();
     $rankInfo = AllSitesInfo::getAllSitesRankData($wgHuijiPrefix, $yesterday);
     $usf = new UserSiteFollow();
     $follows = $usf->getSiteFollowers('', $wgHuijiPrefix);
     // print_r($follows);
     $followCount = count($follows);
     if ($followCount >= 8) {
         $follows = array_slice($follows, 0, 8);
         $display = '';
     } else {
         $display = 'none';
     }
     $newFollow = array();
     foreach ($follows as $value) {
         $arr['user_name'] = $value['user_name'];
         $userPage = Title::makeTitle(NS_USER, $value['user_name']);
         $arr['user_url'] = htmlspecialchars($userPage->getFullURL());
         $arr['follow_date'] = wfMessage('comments-time-ago', HuijiFunctions::getTimeAgo(strtotime($value['follow_date'])))->text();
         $newFollow[] = $arr;
     }
     $sentToAll = SpecialPage::getTitleFor('SendToFollowers')->getFullURL();
     $showMore = SpecialPage::getTitleFor('EditRank')->getFullURL();
     $rightsManage = SpecialPage::getTitleFor('用户权限')->getFullURL();
     $blockUsers = SpecialPage::getTitleFor('封禁')->getFullURL();
     $freezeUsers = SpecialPage::getTitleFor('解除封禁')->getFullURL();
     $replaceText = SpecialPage::getTitleFor('替换文本')->getFullURL();
     $siteRankPage = SpecialPage::getTitleFor('SiteRank')->getFullURL();
     $allSpecial = SpecialPage::getTitleFor('特殊页面')->getFullURL();
     $siteAvatar = (new wSiteAvatar($wgHuijiPrefix, 'l'))->getAvatarHtml();
     $token = $user->getEditToken();
     if (is_null($newFollow)) {
         $newFollow = false;
     }
     $output .= $templateParser->processTemplate('admin_index', array('siteRank' => isset($rankInfo[0]['site_rank']) ? $rankInfo[0]['site_rank'] : '暂无', 'siteScore' => isset($rankInfo[0]['site_score']) ? $rankInfo[0]['site_score'] : '暂无', 'yesterdayCount' => UserSiteFollow::getFollowerCountOneday($wgHuijiPrefix, $yesterday), 'totalCount' => UserSiteFollow::getFollowerCount($wgHuijiPrefix), 'yesterdayEdit' => $ueb->getSiteEditCount('', $wgHuijiPrefix, $yesterday, $yesterday), 'totalEdit' => $totaledit, 'totalView' => $ueb->getSiteViewCount(-1, $wgHuijiPrefix, '', ''), 'yesterdayView' => $ueb->getSiteViewCount(-1, $wgHuijiPrefix, $yesterday, $yesterday), 'newFollow' => $newFollow, 'sendToAll' => $sentToAll, 'showMore' => $showMore, 'display' => $display, 'rightsManage' => $rightsManage, 'blockUsers' => $blockUsers, 'freezeUsers' => $freezeUsers, 'replaceText' => $replaceText, 'siteRankPage' => $siteRankPage, 'allSpecial' => $allSpecial, 'siteAvatar' => $siteAvatar, 'token' => $token));
     $out->addHtml($output);
 }
Esempio n. 2
0
 static function admins()
 {
     if (!isset(self::$admins)) {
         $dbr =& wfGetDB(DB_SLAVE);
         self::$admins = $dbr->selectField('user_groups', 'COUNT(*)', array('ug_group' => 'sysop'), __METHOD__);
     }
     return self::$admins;
 }
	/**
	 * Show the special page
	 *
	 * @param $par Mixed: parameter passed to the page or null
	 */
	function execute( $par ) {

		global $wgOut, $wgUser;
		global $wgOpenIDShowUrlOnUserPage;
		global $wgOpenIDTrustEmailAddress;
		global $wgOpenIDAllowExistingAccountSelection;
		global $wgOpenIDAllowNewAccountname;
		global $wgOpenIDUseEmailAsNickname;
		global $wgOpenIDProposeUsernameFromSREG;
		global $wgOpenIDAllowAutomaticUsername;
		global $wgOpenIDOnly;
		global $wgOpenIDClientOnly;
		global $wgOpenIDAllowServingOpenIDUserAccounts;
		global $wgOpenIDShowProviderIcons;

		if ( !$this->userCanExecute( $wgUser ) ) {
			$this->displayRestrictionError();
			return;
		}

		$totalUsers = SiteStats::users();
		$OpenIDdistinctUsers = $this->getOpenIDUsers( 'distinctusers' );
		$OpenIDUsers = $this->getOpenIDUsers();

		$this->setHeaders();
		$this->outputHeader();

		$wgOut->addWikiMsg( 'openid-dashboard-introduction', 'http://www.mediawiki.org/wiki/Extension:OpenID' );

		$wgOut->addHTML(
			Html::openElement( 'table', array( 'style' => 'width:50%;', 'class' => 'mw-openiddashboard-table wikitable' ) )
		);

		# Here we show some basic version infos. Retrieval of SVN revision number of OpenID appears to be too difficult
		$out  = $this->show( 'OpenID ' . wfMsg( 'version-software-version' ), MEDIAWIKI_OPENID_VERSION );
		$out .= $this->show( 'MediaWiki ' . wfMsg( 'version-software-version' ), SpecialVersion::getVersion() );
		$out .= $this->show( '$wgOpenIDOnly', $wgOpenIDOnly );
		$out .= $this->show( '$wgOpenIDClientOnly', $wgOpenIDClientOnly );
		$out .= $this->show( '$wgOpenIDAllowServingOpenIDUserAccounts', $wgOpenIDAllowServingOpenIDUserAccounts );
		$out .= $this->show( '$wgOpenIDTrustEmailAddress', $wgOpenIDTrustEmailAddress );
		$out .= $this->show( '$wgOpenIDAllowExistingAccountSelection', $wgOpenIDAllowExistingAccountSelection );
		$out .= $this->show( '$wgOpenIDAllowAutomaticUsername', $wgOpenIDAllowAutomaticUsername );
		$out .= $this->show( '$wgOpenIDAllowNewAccountname', $wgOpenIDAllowNewAccountname );
		$out .= $this->show( '$wgOpenIDUseEmailAsNickname', $wgOpenIDUseEmailAsNickname );
		$out .= $this->show( '$wgOpenIDProposeUsernameFromSREG', $wgOpenIDProposeUsernameFromSREG );
		$out .= $this->show( '$wgOpenIDShowUrlOnUserPage', $wgOpenIDShowUrlOnUserPage );
		$out .= $this->show( '$wgOpenIDShowProviderIcons', $wgOpenIDShowProviderIcons );
		$out .= $this->show( wfMsgExt( 'statistics-users', array( 'parseinline' ) ), $totalUsers );
		$out .= $this->show( wfMsg( 'openid-dashboard-number-openid-users' ), $OpenIDdistinctUsers  );
		$out .= $this->show( wfMsg( 'openid-dashboard-number-openids-in-database' ), $OpenIDUsers );
		$out .= $this->show( wfMsg( 'openid-dashboard-number-users-without-openid' ), $totalUsers - $OpenIDdistinctUsers );

		$wgOut->addHTML( $out . Html::closeElement( 'table' ) . "\n" );

	}
/**
* constructor
*/
function wfSpecialStatistics()
{
    global $wgOut, $wgLang, $wgRequest;
    $fname = 'wfSpecialStatistics';
    $action = $wgRequest->getVal('action');
    $dbr = wfGetDB(DB_SLAVE);
    $views = SiteStats::views();
    $edits = SiteStats::edits();
    $good = SiteStats::articles();
    $images = SiteStats::images();
    $total = SiteStats::pages();
    $users = SiteStats::users();
    $admins = $dbr->selectField('user_groups', 'COUNT(*)', array('ug_group' => 'sysop'), $fname);
    $numJobs = $dbr->estimateRowCount('job');
    if ($action == 'raw') {
        $wgOut->disable();
        header('Pragma: nocache');
        echo "total={$total};good={$good};views={$views};edits={$edits};users={$users};admins={$admins};images={$images};jobs={$numJobs}\n";
        return;
    } else {
        $text = '==' . wfMsg('sitestats') . "==\n";
        $text .= wfMsgExt('sitestatstext', array('parsemag'), $wgLang->formatNum($total), $wgLang->formatNum($good), $wgLang->formatNum($views), $wgLang->formatNum($edits), $wgLang->formatNum(sprintf('%.2f', $total ? $edits / $total : 0)), $wgLang->formatNum(sprintf('%.2f', $edits ? $views / $edits : 0)), $wgLang->formatNum($numJobs), $wgLang->formatNum($images));
        $text .= "\n==" . wfMsg('userstats') . "==\n";
        $text .= wfMsgExt('userstatstext', array('parsemag'), $wgLang->formatNum($users), $wgLang->formatNum($admins), '[[' . wfMsgForContent('grouppage-sysop') . ']]', $wgLang->formatNum(sprintf('%.2f', $admins / $users * 100)), User::makeGroupLinkWiki('sysop'));
        $wgOut->addWikiText($text);
        global $wgDisableCounters, $wgMiserMode, $wgUser, $wgLang, $wgContLang;
        if (!$wgDisableCounters && !$wgMiserMode) {
            $page = $dbr->tableName('page');
            $sql = "SELECT page_namespace, page_title, page_counter FROM {$page} WHERE page_is_redirect = 0 AND page_counter > 0 ORDER BY page_counter DESC";
            $sql = $dbr->limitResult($sql, 10, 0);
            $res = $dbr->query($sql, $fname);
            if ($res) {
                $wgOut->addHtml('<h2>' . wfMsgHtml('statistics-mostpopular') . '</h2>');
                $skin = $wgUser->getSkin();
                $wgOut->addHtml('<ol>');
                while ($row = $dbr->fetchObject($res)) {
                    // BizzWiki begin {{
                    if (!$wgUser->isAllowed('browse', $row->page_namespace)) {
                        continue;
                    }
                    // BizzWiki end }}
                    $link = $skin->makeKnownLinkObj(Title::makeTitleSafe($row->page_namespace, $row->page_title));
                    $dirmark = $wgContLang->getDirMark();
                    $wgOut->addHtml('<li>' . $link . $dirmark . ' [' . $wgLang->formatNum($row->page_counter) . ']</li>');
                }
                $wgOut->addHtml('</ol>');
                $dbr->freeResult($res);
            }
        }
        $footer = wfMsg('statistics-footer');
        if (!wfEmptyMsg('statistics-footer', $footer) && $footer != '') {
            $wgOut->addWikiText($footer);
        }
    }
}
Esempio n. 5
0
 private function setColorConverters()
 {
     $expected_number_of_edits_to_white = SiteStats::edits() / SiteStats::articles();
     $wiki_color = $this->wikiColor;
     $red = hexdec(substr($wiki_color, 0, -4));
     $green = hexdec(substr($wiki_color, 2, -2));
     $blue = hexdec(substr($wiki_color, -2));
     $red_diff = 255 - $red;
     $green_diff = 255 - $green;
     $blue_diff = 255 - $blue;
     $this->redConverter = $red_diff / $expected_number_of_edits_to_white;
     $this->greenConverter = $green_diff / $expected_number_of_edits_to_white;
     $this->blueConverter = $blue_diff / $expected_number_of_edits_to_white;
 }
Esempio n. 6
0
function WidgetCommunity($id, $params)
{
    global $wgEnableCommunityWidget, $wgTitle;
    if (empty($wgEnableCommunityWidget)) {
        return '';
    }
    if ($params['skinname'] != 'oasis') {
        return '';
    }
    if (!class_exists('ActivityFeedHelper')) {
        return '';
    }
    wfProfileIn(__METHOD__);
    global $wgUser, $wgLang, $wgLanguageCode, $wgStylePath, $wgEnableMyHomeExt, $wgContentNamespaces;
    $total = SiteStats::articles();
    /* RT#64490: Strange Article Count in Latest Activity on some new wikis */
    if ($total < 0 || $total > 1.0E+18) {
        $total = 0;
    }
    $total = $wgLang->formatNum($total);
    $footerButton = array();
    if (!empty($wgEnableMyHomeExt)) {
        $footerButton['text'] = wfMsg('widget-community-more');
        $footerButton['href'] = Skin::makeSpecialUrl($wgUser->isLoggedIn() ? 'MyHome' : 'ActivityFeed');
        $footerButton['class'] = 'wikia-button forward';
    } else {
        $footerButton['text'] = wfMsg('recentchanges');
        $footerButton['href'] = Skin::makeSpecialUrl('RecentChanges');
        $footerButton['class'] = 'wikia-button forward';
    }
    $maxElements = 5;
    $includeNamespaces = implode('|', $wgContentNamespaces);
    $uselang = $wgLang->getCode();
    //this should be the same as in /extensions/wikia/MyHome/ActivityFeedHelper.php
    $parameters = array('type' => 'widget', 'tagid' => $id, 'maxElements' => $maxElements, 'flags' => array('shortlist'), 'uselang' => $uselang, 'includeNamespaces' => $includeNamespaces);
    $userLangEqContent = $uselang == $wgLanguageCode;
    $feedHTML = ActivityFeedHelper::getListForWidget($parameters, $userLangEqContent);
    // template stuff
    $tmpl = new EasyTemplate(dirname(__FILE__));
    $tmpl->set_vars(array('tagid' => $id, 'timestamp' => wfTimestampNow(), 'header' => wfMsg('monaco-articles-on', $total), 'feedHTML' => $feedHTML, 'footerButton' => $footerButton));
    $output = $tmpl->render('WidgetCommunity');
    wfProfileOut(__METHOD__);
    return $output;
}
/**
 * Show the special page
 *
 * @param mixed $par (not used)
 */
function wfSpecialStatistics($par = '')
{
    global $wgOut, $wgLang, $wgRequest;
    $dbr = wfGetDB(DB_SLAVE);
    $views = SiteStats::views();
    $edits = SiteStats::edits();
    $good = SiteStats::articles();
    $images = SiteStats::images();
    $total = SiteStats::pages();
    $users = SiteStats::users();
    $admins = SiteStats::admins();
    $numJobs = SiteStats::jobs();
    if ($wgRequest->getVal('action') == 'raw') {
        $wgOut->disable();
        header('Pragma: nocache');
        echo "total={$total};good={$good};views={$views};edits={$edits};users={$users};admins={$admins};images={$images};jobs={$numJobs}\n";
        return;
    } else {
        $text = "__NOTOC__\n";
        $text .= '==' . wfMsg('sitestats') . "==\n";
        $text .= wfMsgExt('sitestatstext', array('parsemag'), $wgLang->formatNum($total), $wgLang->formatNum($good), $wgLang->formatNum($views), $wgLang->formatNum($edits), $wgLang->formatNum(sprintf('%.2f', $total ? $edits / $total : 0)), $wgLang->formatNum(sprintf('%.2f', $edits ? $views / $edits : 0)), $wgLang->formatNum($numJobs), $wgLang->formatNum($images)) . "\n";
        $text .= "==" . wfMsg('userstats') . "==\n";
        $text .= wfMsgExt('userstatstext', array('parsemag'), $wgLang->formatNum($users), $wgLang->formatNum($admins), '[[' . wfMsgForContent('grouppage-sysop') . ']]', $wgLang->formatNum(sprintf('%.2f', $admins / $users * 100)), User::makeGroupLinkWiki('sysop')) . "\n";
        global $wgDisableCounters, $wgMiserMode, $wgUser, $wgLang, $wgContLang;
        if (!$wgDisableCounters && !$wgMiserMode) {
            $res = $dbr->select('page', array('page_namespace', 'page_title', 'page_counter'), array('page_is_redirect' => 0, 'page_counter > 0'), __METHOD__, array('ORDER BY' => 'page_counter DESC', 'LIMIT' => 10));
            if ($res->numRows() > 0) {
                $text .= "==" . wfMsg('statistics-mostpopular') . "==\n";
                while ($row = $res->fetchObject()) {
                    $title = Title::makeTitleSafe($row->page_namespace, $row->page_title);
                    if ($title instanceof Title) {
                        $text .= '* [[:' . $title->getPrefixedText() . ']] (' . $wgLang->formatNum($row->page_counter) . ")\n";
                    }
                }
                $res->free();
            }
        }
        $footer = wfMsg('statistics-footer');
        if (!wfEmptyMsg('statistics-footer', $footer) && $footer != '') {
            $text .= "\n" . $footer;
        }
        $wgOut->addWikiText($text);
    }
}
Esempio n. 8
0
 function getSQL()
 {
     global $wgMiserMode;
     $dbr = wfGetDB(DB_SLAVE);
     # In miser mode, reduce the query cost by adding a threshold for large wikis
     if ($wgMiserMode) {
         $numPages = SiteStats::pages();
         if ($numPages > 10000) {
             $cutoff = 100;
         } elseif ($numPages > 100) {
             $cutoff = intval(sqrt($numPages));
         } else {
             $cutoff = 1;
         }
     } else {
         $cutoff = 1;
     }
     list($pagelinks, $page) = $dbr->tableNamesN('pagelinks', 'page');
     return "SELECT 'Mostlinked' AS type,\n\t\t\t\tpl_namespace AS namespace,\n\t\t\t\tpl_title AS title,\n\t\t\t\tCOUNT(*) AS value\n\t\t\tFROM {$pagelinks}\n\t\t\tLEFT JOIN {$page} ON pl_namespace=page_namespace AND pl_title=page_title\n\t\t\tGROUP BY pl_namespace, pl_title\n\t\t\tHAVING COUNT(*) > {$cutoff}";
 }
Esempio n. 9
0
/**
 * Updates user's points after they've made an edit in a namespace that is
 * listed in the $wgNamespacesForEditPoints array.
 */
function incEditCount($article, $revision, $baseRevId)
{
    global $wgUser, $wgNamespacesForEditPoints, $wgMemc, $wgHuijiPrefix;
    // only keep tally for allowable namespaces
    if (!is_array($wgNamespacesForEditPoints) || in_array($article->getTitle()->getNamespace(), $wgNamespacesForEditPoints)) {
        $stats = new UserStatsTrack($wgUser->getID(), $wgUser->getName());
        $stats->incStatField('edit');
    }
    $dbr = wfGetDB(DB_SLAVE);
    $num = SiteStats::edits();
    $sg = SystemGifts::checkEditsCounts($num);
    $usg = new UserSystemGifts($wgUser->getName());
    if ($sg) {
        $usg->sendSystemGift(17);
    }
    $key = wfForeignMemcKey('huiji', '', 'revision', 'high_edit_site_followed', $wgUser->getName(), $wgHuijiPrefix);
    $wgMemc->incr($key);
    $key = wfForeignMemcKey('huiji', '', 'revision', 'last_edit_user', $article->getTitle()->getArticleId(), $wgHuijiPrefix);
    $wgMemc->delete($key);
    return true;
}
 public function execute($subPage)
 {
     if (!$this->userCanExecute($this->getUser())) {
         $this->displayRestrictionError();
         return;
     }
     $this->setHeaders();
     $out = $this->getOutput();
     $out->setPageTitle($this->msg('ultimatecleaner')->text());
     $numPages = SiteStats::pages();
     $out->addHTML(Linker::link(SpecialPage::getTitleFor('UltimateCleanerTrustedUsers'), wfMessage('ultimatecleaner-view-trusted-users')->text(), array('target' => '_blank')));
     $out->addHTML('<h2>' . $this->msg('ultimatecleaner-spam-pages-list-heading')->text() . '</h2>');
     $out->addHTML('<div id="pagination"></div>');
     $out->addHTML(Html::openElement('form', array('method' => 'post', 'id' => 'UltimateCleaner-delete-pages')));
     $out->addHTML('<div id="UltimateCleaner-select-options"></div>');
     $out->addHTML('<input type="submit" value="' . $this->msg('ultimatecleaner-delete-selected') . '" style="display:none;">');
     $out->addHTML(Html::openElement('div', array('id' => 'UltimateCleaner-page-list')));
     $out->addHTML(Html::closeElement('div'));
     $out->addHTML('<input type="submit" value="' . $this->msg('ultimatecleaner-delete-selected') . '" style="display:none;">');
     $out->addHTML(Html::closeElement('form'));
 }
Esempio n. 11
0
 protected function appendUserGroups($property, $numberInGroup)
 {
     $config = $this->getConfig();
     $data = array();
     $result = $this->getResult();
     $allGroups = User::getAllGroups();
     foreach ($config->get('GroupPermissions') as $group => $permissions) {
         $arr = array('name' => $group, 'rights' => array_keys($permissions, true));
         if ($numberInGroup) {
             $autopromote = $config->get('Autopromote');
             if ($group == 'user') {
                 $arr['number'] = SiteStats::users();
                 // '*' and autopromote groups have no size
             } elseif ($group !== '*' && !isset($autopromote[$group])) {
                 $arr['number'] = SiteStats::numberInGroup($group);
             }
         }
         $groupArr = array('add' => $config->get('AddGroups'), 'remove' => $config->get('RemoveGroups'), 'add-self' => $config->get('GroupsAddToSelf'), 'remove-self' => $config->get('GroupsRemoveFromSelf'));
         foreach ($groupArr as $type => $rights) {
             if (isset($rights[$group])) {
                 $groups = array_intersect($rights[$group], $allGroups);
                 if ($groups) {
                     $arr[$type] = $groups;
                     ApiResult::setIndexedTagName($arr[$type], 'group');
                 }
             }
         }
         ApiResult::setIndexedTagName($arr['rights'], 'permission');
         $data[] = $arr;
     }
     ApiResult::setIndexedTagName($data, 'group');
     return $result->addValue('query', $property, $data);
 }
 private function getGroupStats()
 {
     global $wgGroupPermissions, $wgImplicitGroups;
     $text = '';
     foreach ($wgGroupPermissions as $group => $permissions) {
         # Skip generic * and implicit groups
         if (in_array($group, $wgImplicitGroups) || $group == '*') {
             continue;
         }
         $groupname = htmlspecialchars($group);
         $msg = $this->msg('group-' . $groupname);
         if ($msg->isBlank()) {
             $groupnameLocalized = $groupname;
         } else {
             $groupnameLocalized = $msg->text();
         }
         $msg = $this->msg('grouppage-' . $groupname)->inContentLanguage();
         if ($msg->isBlank()) {
             $grouppageLocalized = MWNamespace::getCanonicalName(NS_PROJECT) . ':' . $groupname;
         } else {
             $grouppageLocalized = $msg->text();
         }
         $linkTarget = Title::newFromText($grouppageLocalized);
         $grouppage = Linker::link($linkTarget, htmlspecialchars($groupnameLocalized));
         $grouplink = Linker::linkKnown(SpecialPage::getTitleFor('Listusers'), $this->msg('listgrouprights-members')->escaped(), array(), array('group' => $group));
         # Add a class when a usergroup contains no members to allow hiding these rows
         $classZero = '';
         $countUsers = SiteStats::numberingroup($groupname);
         if ($countUsers == 0) {
             $classZero = ' statistics-group-zero';
         }
         $text .= $this->formatRow($grouppage . ' ' . $grouplink, $this->getLanguage()->formatNum($countUsers), array('class' => 'statistics-group-' . Sanitizer::escapeClass($group) . $classZero));
     }
     return $text;
 }
Esempio n. 13
0
 /**
  * Return value of a magic variable (like PAGENAME)
  *
  * @private
  *
  * @param $index integer
  * @param bool|\PPFrame $frame
  *
  * @throws MWException
  * @return string
  */
 function getVariableValue($index, $frame = false)
 {
     global $wgContLang, $wgSitename, $wgServer;
     global $wgArticlePath, $wgScriptPath, $wgStylePath;
     if (is_null($this->mTitle)) {
         // If no title set, bad things are going to happen
         // later. Title should always be set since this
         // should only be called in the middle of a parse
         // operation (but the unit-tests do funky stuff)
         throw new MWException(__METHOD__ . ' Should only be ' . ' called while parsing (no title set)');
     }
     /**
      * Some of these require message or data lookups and can be
      * expensive to check many times.
      */
     if (wfRunHooks('ParserGetVariableValueVarCache', array(&$this, &$this->mVarCache))) {
         if (isset($this->mVarCache[$index])) {
             return $this->mVarCache[$index];
         }
     }
     $ts = wfTimestamp(TS_UNIX, $this->mOptions->getTimestamp());
     wfRunHooks('ParserGetVariableValueTs', array(&$this, &$ts));
     $pageLang = $this->getFunctionLang();
     switch ($index) {
         case 'currentmonth':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('m'));
             break;
         case 'currentmonth1':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('n'));
             break;
         case 'currentmonthname':
             $value = $pageLang->getMonthName(MWTimestamp::getInstance($ts)->format('n'));
             break;
         case 'currentmonthnamegen':
             $value = $pageLang->getMonthNameGen(MWTimestamp::getInstance($ts)->format('n'));
             break;
         case 'currentmonthabbrev':
             $value = $pageLang->getMonthAbbreviation(MWTimestamp::getInstance($ts)->format('n'));
             break;
         case 'currentday':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('j'));
             break;
         case 'currentday2':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('d'));
             break;
         case 'localmonth':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('m'));
             break;
         case 'localmonth1':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('n'));
             break;
         case 'localmonthname':
             $value = $pageLang->getMonthName(MWTimestamp::getLocalInstance($ts)->format('n'));
             break;
         case 'localmonthnamegen':
             $value = $pageLang->getMonthNameGen(MWTimestamp::getLocalInstance($ts)->format('n'));
             break;
         case 'localmonthabbrev':
             $value = $pageLang->getMonthAbbreviation(MWTimestamp::getLocalInstance($ts)->format('n'));
             break;
         case 'localday':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('j'));
             break;
         case 'localday2':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('d'));
             break;
         case 'pagename':
             $value = wfEscapeWikiText($this->mTitle->getText());
             break;
         case 'pagenamee':
             $value = wfEscapeWikiText($this->mTitle->getPartialURL());
             break;
         case 'fullpagename':
             $value = wfEscapeWikiText($this->mTitle->getPrefixedText());
             break;
         case 'fullpagenamee':
             $value = wfEscapeWikiText($this->mTitle->getPrefixedURL());
             break;
         case 'subpagename':
             $value = wfEscapeWikiText($this->mTitle->getSubpageText());
             break;
         case 'subpagenamee':
             $value = wfEscapeWikiText($this->mTitle->getSubpageUrlForm());
             break;
         case 'rootpagename':
             $value = wfEscapeWikiText($this->mTitle->getRootText());
             break;
         case 'rootpagenamee':
             $value = wfEscapeWikiText(wfUrlEncode(str_replace(' ', '_', $this->mTitle->getRootText())));
             break;
         case 'basepagename':
             $value = wfEscapeWikiText($this->mTitle->getBaseText());
             break;
         case 'basepagenamee':
             $value = wfEscapeWikiText(wfUrlEncode(str_replace(' ', '_', $this->mTitle->getBaseText())));
             break;
         case 'talkpagename':
             if ($this->mTitle->canTalk()) {
                 $talkPage = $this->mTitle->getTalkPage();
                 $value = wfEscapeWikiText($talkPage->getPrefixedText());
             } else {
                 $value = '';
             }
             break;
         case 'talkpagenamee':
             if ($this->mTitle->canTalk()) {
                 $talkPage = $this->mTitle->getTalkPage();
                 $value = wfEscapeWikiText($talkPage->getPrefixedURL());
             } else {
                 $value = '';
             }
             break;
         case 'subjectpagename':
             $subjPage = $this->mTitle->getSubjectPage();
             $value = wfEscapeWikiText($subjPage->getPrefixedText());
             break;
         case 'subjectpagenamee':
             $subjPage = $this->mTitle->getSubjectPage();
             $value = wfEscapeWikiText($subjPage->getPrefixedURL());
             break;
         case 'pageid':
             // requested in bug 23427
             $pageid = $this->getTitle()->getArticleID();
             if ($pageid == 0) {
                 # 0 means the page doesn't exist in the database,
                 # which means the user is previewing a new page.
                 # The vary-revision flag must be set, because the magic word
                 # will have a different value once the page is saved.
                 $this->mOutput->setFlag('vary-revision');
                 wfDebug(__METHOD__ . ": {{PAGEID}} used in a new page, setting vary-revision...\n");
             }
             $value = $pageid ? $pageid : null;
             break;
         case 'revisionid':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONID}} used, setting vary-revision...\n");
             $value = $this->mRevisionId;
             break;
         case 'revisionday':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONDAY}} used, setting vary-revision...\n");
             $value = intval(substr($this->getRevisionTimestamp(), 6, 2));
             break;
         case 'revisionday2':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONDAY2}} used, setting vary-revision...\n");
             $value = substr($this->getRevisionTimestamp(), 6, 2);
             break;
         case 'revisionmonth':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONMONTH}} used, setting vary-revision...\n");
             $value = substr($this->getRevisionTimestamp(), 4, 2);
             break;
         case 'revisionmonth1':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONMONTH1}} used, setting vary-revision...\n");
             $value = intval(substr($this->getRevisionTimestamp(), 4, 2));
             break;
         case 'revisionyear':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONYEAR}} used, setting vary-revision...\n");
             $value = substr($this->getRevisionTimestamp(), 0, 4);
             break;
         case 'revisiontimestamp':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONTIMESTAMP}} used, setting vary-revision...\n");
             $value = $this->getRevisionTimestamp();
             break;
         case 'revisionuser':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONUSER}} used, setting vary-revision...\n");
             $value = $this->getRevisionUser();
             break;
         case 'revisionsize':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONSIZE}} used, setting vary-revision...\n");
             $value = $this->getRevisionSize();
             break;
         case 'namespace':
             $value = str_replace('_', ' ', $wgContLang->getNsText($this->mTitle->getNamespace()));
             break;
         case 'namespacee':
             $value = wfUrlencode($wgContLang->getNsText($this->mTitle->getNamespace()));
             break;
         case 'namespacenumber':
             $value = $this->mTitle->getNamespace();
             break;
         case 'talkspace':
             $value = $this->mTitle->canTalk() ? str_replace('_', ' ', $this->mTitle->getTalkNsText()) : '';
             break;
         case 'talkspacee':
             $value = $this->mTitle->canTalk() ? wfUrlencode($this->mTitle->getTalkNsText()) : '';
             break;
         case 'subjectspace':
             $value = str_replace('_', ' ', $this->mTitle->getSubjectNsText());
             break;
         case 'subjectspacee':
             $value = wfUrlencode($this->mTitle->getSubjectNsText());
             break;
         case 'currentdayname':
             $value = $pageLang->getWeekdayName((int) MWTimestamp::getInstance($ts)->format('w') + 1);
             break;
         case 'currentyear':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('Y'), true);
             break;
         case 'currenttime':
             $value = $pageLang->time(wfTimestamp(TS_MW, $ts), false, false);
             break;
         case 'currenthour':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('H'), true);
             break;
         case 'currentweek':
             # @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
             # int to remove the padding
             $value = $pageLang->formatNum((int) MWTimestamp::getInstance($ts)->format('W'));
             break;
         case 'currentdow':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('w'));
             break;
         case 'localdayname':
             $value = $pageLang->getWeekdayName((int) MWTimestamp::getLocalInstance($ts)->format('w') + 1);
             break;
         case 'localyear':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('Y'), true);
             break;
         case 'localtime':
             $value = $pageLang->time(MWTimestamp::getLocalInstance($ts)->format('YmdHis'), false, false);
             break;
         case 'localhour':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('H'), true);
             break;
         case 'localweek':
             # @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
             # int to remove the padding
             $value = $pageLang->formatNum((int) MWTimestamp::getLocalInstance($ts)->format('W'));
             break;
         case 'localdow':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('w'));
             break;
         case 'numberofarticles':
             $value = $pageLang->formatNum(SiteStats::articles());
             break;
         case 'numberoffiles':
             $value = $pageLang->formatNum(SiteStats::images());
             break;
         case 'numberofusers':
             $value = $pageLang->formatNum(SiteStats::users());
             break;
         case 'numberofactiveusers':
             $value = $pageLang->formatNum(SiteStats::activeUsers());
             break;
         case 'numberofpages':
             $value = $pageLang->formatNum(SiteStats::pages());
             break;
         case 'numberofadmins':
             $value = $pageLang->formatNum(SiteStats::numberingroup('sysop'));
             break;
         case 'numberofedits':
             $value = $pageLang->formatNum(SiteStats::edits());
             break;
         case 'numberofviews':
             global $wgDisableCounters;
             $value = !$wgDisableCounters ? $pageLang->formatNum(SiteStats::views()) : '';
             break;
         case 'currenttimestamp':
             $value = wfTimestamp(TS_MW, $ts);
             break;
         case 'localtimestamp':
             $value = MWTimestamp::getLocalInstance($ts)->format('YmdHis');
             break;
         case 'currentversion':
             $value = SpecialVersion::getVersion();
             break;
         case 'articlepath':
             return $wgArticlePath;
         case 'sitename':
             return $wgSitename;
         case 'server':
             return $wgServer;
         case 'servername':
             $serverParts = wfParseUrl($wgServer);
             return $serverParts && isset($serverParts['host']) ? $serverParts['host'] : $wgServer;
         case 'scriptpath':
             return $wgScriptPath;
         case 'stylepath':
             return $wgStylePath;
         case 'directionmark':
             return $pageLang->getDirMark();
         case 'contentlanguage':
             global $wgLanguageCode;
             return $wgLanguageCode;
         case 'cascadingsources':
             $value = CoreParserFunctions::cascadingsources($this);
             break;
         default:
             $ret = null;
             wfRunHooks('ParserGetVariableValueSwitch', array(&$this, &$this->mVarCache, &$index, &$ret, &$frame));
             return $ret;
     }
     if ($index) {
         $this->mVarCache[$index] = $value;
     }
     return $value;
 }
Esempio n. 14
0
 /**
  * Return value of a magic variable (like PAGENAME)
  *
  * @private
  */
 function getVariableValue($index)
 {
     global $wgContLang, $wgSitename, $wgServer, $wgServerName, $wgScriptPath;
     /**
      * Some of these require message or data lookups and can be
      * expensive to check many times.
      */
     if (wfRunHooks('ParserGetVariableValueVarCache', array(&$this, &$this->mVarCache))) {
         if (isset($this->mVarCache[$index])) {
             return $this->mVarCache[$index];
         }
     }
     $ts = wfTimestamp(TS_UNIX, $this->mOptions->getTimestamp());
     wfRunHooks('ParserGetVariableValueTs', array(&$this, &$ts));
     # Use the time zone
     global $wgLocaltimezone;
     if (isset($wgLocaltimezone)) {
         $oldtz = getenv('TZ');
         putenv('TZ=' . $wgLocaltimezone);
     }
     wfSuppressWarnings();
     // E_STRICT system time bitching
     $localTimestamp = date('YmdHis', $ts);
     $localMonth = date('m', $ts);
     $localMonthName = date('n', $ts);
     $localDay = date('j', $ts);
     $localDay2 = date('d', $ts);
     $localDayOfWeek = date('w', $ts);
     $localWeek = date('W', $ts);
     $localYear = date('Y', $ts);
     $localHour = date('H', $ts);
     if (isset($wgLocaltimezone)) {
         putenv('TZ=' . $oldtz);
     }
     wfRestoreWarnings();
     switch ($index) {
         case 'currentmonth':
             return $this->mVarCache[$index] = $wgContLang->formatNum(gmdate('m', $ts));
         case 'currentmonthname':
             return $this->mVarCache[$index] = $wgContLang->getMonthName(gmdate('n', $ts));
         case 'currentmonthnamegen':
             return $this->mVarCache[$index] = $wgContLang->getMonthNameGen(gmdate('n', $ts));
         case 'currentmonthabbrev':
             return $this->mVarCache[$index] = $wgContLang->getMonthAbbreviation(gmdate('n', $ts));
         case 'currentday':
             return $this->mVarCache[$index] = $wgContLang->formatNum(gmdate('j', $ts));
         case 'currentday2':
             return $this->mVarCache[$index] = $wgContLang->formatNum(gmdate('d', $ts));
         case 'localmonth':
             return $this->mVarCache[$index] = $wgContLang->formatNum($localMonth);
         case 'localmonthname':
             return $this->mVarCache[$index] = $wgContLang->getMonthName($localMonthName);
         case 'localmonthnamegen':
             return $this->mVarCache[$index] = $wgContLang->getMonthNameGen($localMonthName);
         case 'localmonthabbrev':
             return $this->mVarCache[$index] = $wgContLang->getMonthAbbreviation($localMonthName);
         case 'localday':
             return $this->mVarCache[$index] = $wgContLang->formatNum($localDay);
         case 'localday2':
             return $this->mVarCache[$index] = $wgContLang->formatNum($localDay2);
         case 'pagename':
             return wfEscapeWikiText($this->mTitle->getText());
         case 'pagenamee':
             return $this->mTitle->getPartialURL();
         case 'fullpagename':
             return wfEscapeWikiText($this->mTitle->getPrefixedText());
         case 'fullpagenamee':
             return $this->mTitle->getPrefixedURL();
         case 'subpagename':
             return wfEscapeWikiText($this->mTitle->getSubpageText());
         case 'subpagenamee':
             return $this->mTitle->getSubpageUrlForm();
         case 'basepagename':
             return wfEscapeWikiText($this->mTitle->getBaseText());
         case 'basepagenamee':
             return wfUrlEncode(str_replace(' ', '_', $this->mTitle->getBaseText()));
         case 'talkpagename':
             if ($this->mTitle->canTalk()) {
                 $talkPage = $this->mTitle->getTalkPage();
                 return wfEscapeWikiText($talkPage->getPrefixedText());
             } else {
                 return '';
             }
         case 'talkpagenamee':
             if ($this->mTitle->canTalk()) {
                 $talkPage = $this->mTitle->getTalkPage();
                 return $talkPage->getPrefixedUrl();
             } else {
                 return '';
             }
         case 'subjectpagename':
             $subjPage = $this->mTitle->getSubjectPage();
             return wfEscapeWikiText($subjPage->getPrefixedText());
         case 'subjectpagenamee':
             $subjPage = $this->mTitle->getSubjectPage();
             return $subjPage->getPrefixedUrl();
         case 'revisionid':
             // Let the edit saving system know we should parse the page
             // *after* a revision ID has been assigned.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONID}} used, setting vary-revision...\n");
             return $this->mRevisionId;
         case 'revisionday':
             // Let the edit saving system know we should parse the page
             // *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONDAY}} used, setting vary-revision...\n");
             return intval(substr($this->getRevisionTimestamp(), 6, 2));
         case 'revisionday2':
             // Let the edit saving system know we should parse the page
             // *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONDAY2}} used, setting vary-revision...\n");
             return substr($this->getRevisionTimestamp(), 6, 2);
         case 'revisionmonth':
             // Let the edit saving system know we should parse the page
             // *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONMONTH}} used, setting vary-revision...\n");
             return intval(substr($this->getRevisionTimestamp(), 4, 2));
         case 'revisionyear':
             // Let the edit saving system know we should parse the page
             // *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONYEAR}} used, setting vary-revision...\n");
             return substr($this->getRevisionTimestamp(), 0, 4);
         case 'revisiontimestamp':
             // Let the edit saving system know we should parse the page
             // *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONTIMESTAMP}} used, setting vary-revision...\n");
             return $this->getRevisionTimestamp();
         case 'revisionuser':
             // Let the edit saving system know we should parse the page
             // *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONUSER}} used, setting vary-revision...\n");
             return $this->getRevisionUser();
         case 'namespace':
             return str_replace('_', ' ', $wgContLang->getNsText($this->mTitle->getNamespace()));
         case 'namespacee':
             return wfUrlencode($wgContLang->getNsText($this->mTitle->getNamespace()));
         case 'talkspace':
             return $this->mTitle->canTalk() ? str_replace('_', ' ', $this->mTitle->getTalkNsText()) : '';
         case 'talkspacee':
             return $this->mTitle->canTalk() ? wfUrlencode($this->mTitle->getTalkNsText()) : '';
         case 'subjectspace':
             return $this->mTitle->getSubjectNsText();
         case 'subjectspacee':
             return wfUrlencode($this->mTitle->getSubjectNsText());
         case 'currentdayname':
             return $this->mVarCache[$index] = $wgContLang->getWeekdayName(gmdate('w', $ts) + 1);
         case 'currentyear':
             return $this->mVarCache[$index] = $wgContLang->formatNum(gmdate('Y', $ts), true);
         case 'currenttime':
             return $this->mVarCache[$index] = $wgContLang->time(wfTimestamp(TS_MW, $ts), false, false);
         case 'currenthour':
             return $this->mVarCache[$index] = $wgContLang->formatNum(gmdate('H', $ts), true);
         case 'currentweek':
             // @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
             // int to remove the padding
             return $this->mVarCache[$index] = $wgContLang->formatNum((int) gmdate('W', $ts));
         case 'currentdow':
             return $this->mVarCache[$index] = $wgContLang->formatNum(gmdate('w', $ts));
         case 'localdayname':
             return $this->mVarCache[$index] = $wgContLang->getWeekdayName($localDayOfWeek + 1);
         case 'localyear':
             return $this->mVarCache[$index] = $wgContLang->formatNum($localYear, true);
         case 'localtime':
             return $this->mVarCache[$index] = $wgContLang->time($localTimestamp, false, false);
         case 'localhour':
             return $this->mVarCache[$index] = $wgContLang->formatNum($localHour, true);
         case 'localweek':
             // @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
             // int to remove the padding
             return $this->mVarCache[$index] = $wgContLang->formatNum((int) $localWeek);
         case 'localdow':
             return $this->mVarCache[$index] = $wgContLang->formatNum($localDayOfWeek);
         case 'numberofarticles':
             return $this->mVarCache[$index] = $wgContLang->formatNum(SiteStats::articles());
         case 'numberoffiles':
             return $this->mVarCache[$index] = $wgContLang->formatNum(SiteStats::images());
         case 'numberofusers':
             return $this->mVarCache[$index] = $wgContLang->formatNum(SiteStats::users());
         case 'numberofactiveusers':
             return $this->mVarCache[$index] = $wgContLang->formatNum(SiteStats::activeUsers());
         case 'numberofpages':
             return $this->mVarCache[$index] = $wgContLang->formatNum(SiteStats::pages());
         case 'numberofadmins':
             return $this->mVarCache[$index] = $wgContLang->formatNum(SiteStats::numberingroup('sysop'));
         case 'numberofedits':
             return $this->mVarCache[$index] = $wgContLang->formatNum(SiteStats::edits());
         case 'numberofviews':
             return $this->mVarCache[$index] = $wgContLang->formatNum(SiteStats::views());
         case 'currenttimestamp':
             return $this->mVarCache[$index] = wfTimestamp(TS_MW, $ts);
         case 'localtimestamp':
             return $this->mVarCache[$index] = $localTimestamp;
         case 'currentversion':
             return $this->mVarCache[$index] = SpecialVersion::getVersion();
         case 'sitename':
             return $wgSitename;
         case 'server':
             return $wgServer;
         case 'servername':
             return $wgServerName;
         case 'scriptpath':
             return $wgScriptPath;
         case 'directionmark':
             return $wgContLang->getDirMark();
         case 'contentlanguage':
             global $wgContLanguageCode;
             return $wgContLanguageCode;
         default:
             $ret = null;
             if (wfRunHooks('ParserGetVariableValueSwitch', array(&$this, &$this->mVarCache, &$index, &$ret))) {
                 return $ret;
             } else {
                 return null;
             }
     }
 }
 protected function appendStatistics($property)
 {
     $data = array();
     $data['pages'] = intval(SiteStats::pages());
     $data['articles'] = intval(SiteStats::articles());
     $data['views'] = intval(SiteStats::views());
     $data['edits'] = intval(SiteStats::edits());
     $data['images'] = intval(SiteStats::images());
     $data['users'] = intval(SiteStats::users());
     $data['admins'] = intval(SiteStats::admins());
     $data['jobs'] = intval(SiteStats::jobs());
     $this->getResult()->addValue('query', $property, $data);
 }
Esempio n. 16
0
 /**
  * @return int
  */
 static function jobs()
 {
     if (!isset(self::$jobs)) {
         // wikia change start, eloy
         global $wgMemc;
         $key = wfMemcKey('SiteStats', 'jobs');
         self::$jobs = $wgMemc->get($key);
         if (!self::$jobs) {
             // wikia change end
             $dbr = wfGetDB(DB_SLAVE);
             self::$jobs = $dbr->estimateRowCount('job');
             /* Zero rows still do single row read for row that doesn't exist, but people are annoyed by that */
             if (self::$jobs == 1) {
                 self::$jobs = 0;
             }
             $wgMemc->set($key, self::$jobs, 3600);
         }
     }
     return self::$jobs;
 }
Esempio n. 17
0
 /**
  * @return int
  */
 static function jobs()
 {
     if (!isset(self::$jobs)) {
         try {
             self::$jobs = array_sum(JobQueueGroup::singleton()->getQueueSizes());
         } catch (JobQueueError $e) {
             self::$jobs = 0;
         }
         /**
          * Zero rows still do single row read for row that doesn't exist,
          * but people are annoyed by that
          */
         if (self::$jobs == 1) {
             self::$jobs = 0;
         }
     }
     return self::$jobs;
 }
Esempio n. 18
0
 public function usersInGroup($group = null)
 {
     $this->checkType('usersInGroup', 1, $group, 'string');
     return array((int) SiteStats::numberingroup(strtolower($group)));
 }
Esempio n. 19
0
 /**
  * @return int
  */
 static function jobs()
 {
     if (!isset(self::$jobs)) {
         $dbr = wfGetDB(DB_SLAVE);
         self::$jobs = array_sum(JobQueueGroup::singleton()->getQueueSizes());
         /**
          * Zero rows still do single row read for row that doesn't exist,
          * but people are annoyed by that
          */
         if (self::$jobs == 1) {
             self::$jobs = 0;
         }
     }
     return self::$jobs;
 }
Esempio n. 20
0
 /**
  * @param IDatabase $dbw
  * @return bool|mixed
  */
 public static function cacheUpdate($dbw)
 {
     global $wgActiveUserDays;
     $dbr = wfGetDB(DB_REPLICA, 'vslow');
     # Get non-bot users than did some recent action other than making accounts.
     # If account creation is included, the number gets inflated ~20+ fold on enwiki.
     $activeUsers = $dbr->selectField('recentchanges', 'COUNT( DISTINCT rc_user_text )', ['rc_user != 0', 'rc_bot' => 0, 'rc_log_type != ' . $dbr->addQuotes('newusers') . ' OR rc_log_type IS NULL', 'rc_timestamp >= ' . $dbr->addQuotes($dbr->timestamp(wfTimestamp(TS_UNIX) - $wgActiveUserDays * 24 * 3600))], __METHOD__);
     $dbw->update('site_stats', ['ss_active_users' => intval($activeUsers)], ['ss_row_id' => 1], __METHOD__);
     // Invalid cache used by parser functions
     SiteStats::unload();
     return $activeUsers;
 }
Esempio n. 21
0
 static function jobs()
 {
     if (!isset(self::$jobs)) {
         $dbr = wfGetDB(DB_SLAVE);
         self::$jobs = $dbr->estimateRowCount('job');
         /* Zero rows still do single row read for row that doesn't exist, but people are annoyed by that */
         if (self::$jobs == 1) {
             self::$jobs = 0;
         }
     }
     return self::$jobs;
 }
Esempio n. 22
0
 protected function appendStatistics($property)
 {
     global $wgDisableCounters;
     $data = array();
     $data['pages'] = intval(SiteStats::pages());
     $data['articles'] = intval(SiteStats::articles());
     if (!$wgDisableCounters) {
         $data['views'] = intval(SiteStats::views());
     }
     $data['edits'] = intval(SiteStats::edits());
     $data['images'] = intval(SiteStats::images());
     $data['users'] = intval(SiteStats::users());
     $data['activeusers'] = intval(SiteStats::activeUsers());
     $data['admins'] = intval(SiteStats::numberingroup('sysop'));
     $data['jobs'] = intval(SiteStats::jobs());
     return $this->getResult()->addValue('query', $property, $data);
 }
Esempio n. 23
0
 /**
  * Return value of a magic variable (like PAGENAME)
  *
  * @private
  *
  * @param $index integer
  * @param $frame PPFrame
  *
  * @return string
  */
 function getVariableValue($index, $frame = false)
 {
     global $wgContLang, $wgSitename, $wgServer;
     global $wgArticlePath, $wgScriptPath, $wgStylePath;
     if (is_null($this->mTitle)) {
         // If no title set, bad things are going to happen
         // later. Title should always be set since this
         // should only be called in the middle of a parse
         // operation (but the unit-tests do funky stuff)
         throw new MWException(__METHOD__ . ' Should only be ' . ' called while parsing (no title set)');
     }
     /**
      * Some of these require message or data lookups and can be
      * expensive to check many times.
      */
     if (wfRunHooks('ParserGetVariableValueVarCache', array(&$this, &$this->mVarCache))) {
         if (isset($this->mVarCache[$index])) {
             return $this->mVarCache[$index];
         }
     }
     $ts = wfTimestamp(TS_UNIX, $this->mOptions->getTimestamp());
     wfRunHooks('ParserGetVariableValueTs', array(&$this, &$ts));
     # Use the time zone
     global $wgLocaltimezone;
     if (isset($wgLocaltimezone)) {
         $oldtz = date_default_timezone_get();
         date_default_timezone_set($wgLocaltimezone);
     }
     $localTimestamp = date('YmdHis', $ts);
     $localMonth = date('m', $ts);
     $localMonth1 = date('n', $ts);
     $localMonthName = date('n', $ts);
     $localDay = date('j', $ts);
     $localDay2 = date('d', $ts);
     $localDayOfWeek = date('w', $ts);
     $localWeek = date('W', $ts);
     $localYear = date('Y', $ts);
     $localHour = date('H', $ts);
     if (isset($wgLocaltimezone)) {
         date_default_timezone_set($oldtz);
     }
     $pageLang = $this->getFunctionLang();
     switch ($index) {
         case 'currentmonth':
             $value = $pageLang->formatNum(gmdate('m', $ts));
             break;
         case 'currentmonth1':
             $value = $pageLang->formatNum(gmdate('n', $ts));
             break;
         case 'currentmonthname':
             $value = $pageLang->getMonthName(gmdate('n', $ts));
             break;
         case 'currentmonthnamegen':
             $value = $pageLang->getMonthNameGen(gmdate('n', $ts));
             break;
         case 'currentmonthabbrev':
             $value = $pageLang->getMonthAbbreviation(gmdate('n', $ts));
             break;
         case 'currentday':
             $value = $pageLang->formatNum(gmdate('j', $ts));
             break;
         case 'currentday2':
             $value = $pageLang->formatNum(gmdate('d', $ts));
             break;
         case 'localmonth':
             $value = $pageLang->formatNum($localMonth);
             break;
         case 'localmonth1':
             $value = $pageLang->formatNum($localMonth1);
             break;
         case 'localmonthname':
             $value = $pageLang->getMonthName($localMonthName);
             break;
         case 'localmonthnamegen':
             $value = $pageLang->getMonthNameGen($localMonthName);
             break;
         case 'localmonthabbrev':
             $value = $pageLang->getMonthAbbreviation($localMonthName);
             break;
         case 'localday':
             $value = $pageLang->formatNum($localDay);
             break;
         case 'localday2':
             $value = $pageLang->formatNum($localDay2);
             break;
         case 'pagename':
             $value = wfEscapeWikiText($this->mTitle->getText());
             break;
         case 'pagenamee':
             $value = wfEscapeWikiText($this->mTitle->getPartialURL());
             break;
         case 'fullpagename':
             $value = wfEscapeWikiText($this->mTitle->getPrefixedText());
             break;
         case 'fullpagenamee':
             $value = wfEscapeWikiText($this->mTitle->getPrefixedURL());
             break;
         case 'subpagename':
             $value = wfEscapeWikiText($this->mTitle->getSubpageText());
             break;
         case 'subpagenamee':
             $value = wfEscapeWikiText($this->mTitle->getSubpageUrlForm());
             break;
         case 'basepagename':
             $value = wfEscapeWikiText($this->mTitle->getBaseText());
             break;
         case 'basepagenamee':
             $value = wfEscapeWikiText(wfUrlEncode(str_replace(' ', '_', $this->mTitle->getBaseText())));
             break;
         case 'talkpagename':
             if ($this->mTitle->canTalk()) {
                 $talkPage = $this->mTitle->getTalkPage();
                 $value = wfEscapeWikiText($talkPage->getPrefixedText());
             } else {
                 $value = '';
             }
             break;
         case 'talkpagenamee':
             if ($this->mTitle->canTalk()) {
                 $talkPage = $this->mTitle->getTalkPage();
                 $value = wfEscapeWikiText($talkPage->getPrefixedUrl());
             } else {
                 $value = '';
             }
             break;
         case 'subjectpagename':
             $subjPage = $this->mTitle->getSubjectPage();
             $value = wfEscapeWikiText($subjPage->getPrefixedText());
             break;
         case 'subjectpagenamee':
             $subjPage = $this->mTitle->getSubjectPage();
             $value = wfEscapeWikiText($subjPage->getPrefixedUrl());
             break;
         case 'revisionid':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONID}} used, setting vary-revision...\n");
             $value = $this->mRevisionId;
             break;
         case 'revisionday':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONDAY}} used, setting vary-revision...\n");
             $value = intval(substr($this->getRevisionTimestamp(), 6, 2));
             break;
         case 'revisionday2':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONDAY2}} used, setting vary-revision...\n");
             $value = substr($this->getRevisionTimestamp(), 6, 2);
             break;
         case 'revisionmonth':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONMONTH}} used, setting vary-revision...\n");
             $value = substr($this->getRevisionTimestamp(), 4, 2);
             break;
         case 'revisionmonth1':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONMONTH1}} used, setting vary-revision...\n");
             $value = intval(substr($this->getRevisionTimestamp(), 4, 2));
             break;
         case 'revisionyear':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONYEAR}} used, setting vary-revision...\n");
             $value = substr($this->getRevisionTimestamp(), 0, 4);
             break;
         case 'revisiontimestamp':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONTIMESTAMP}} used, setting vary-revision...\n");
             $value = $this->getRevisionTimestamp();
             break;
         case 'revisionuser':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONUSER}} used, setting vary-revision...\n");
             $value = $this->getRevisionUser();
             break;
         case 'namespace':
             $value = str_replace('_', ' ', $wgContLang->getNsText($this->mTitle->getNamespace()));
             break;
         case 'namespacee':
             $value = wfUrlencode($wgContLang->getNsText($this->mTitle->getNamespace()));
             break;
         case 'talkspace':
             $value = $this->mTitle->canTalk() ? str_replace('_', ' ', $this->mTitle->getTalkNsText()) : '';
             break;
         case 'talkspacee':
             $value = $this->mTitle->canTalk() ? wfUrlencode($this->mTitle->getTalkNsText()) : '';
             break;
         case 'subjectspace':
             $value = $this->mTitle->getSubjectNsText();
             break;
         case 'subjectspacee':
             $value = wfUrlencode($this->mTitle->getSubjectNsText());
             break;
         case 'currentdayname':
             $value = $pageLang->getWeekdayName(gmdate('w', $ts) + 1);
             break;
         case 'currentyear':
             $value = $pageLang->formatNum(gmdate('Y', $ts), true);
             break;
         case 'currenttime':
             $value = $pageLang->time(wfTimestamp(TS_MW, $ts), false, false);
             break;
         case 'currenthour':
             $value = $pageLang->formatNum(gmdate('H', $ts), true);
             break;
         case 'currentweek':
             # @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
             # int to remove the padding
             $value = $pageLang->formatNum((int) gmdate('W', $ts));
             break;
         case 'currentdow':
             $value = $pageLang->formatNum(gmdate('w', $ts));
             break;
         case 'localdayname':
             $value = $pageLang->getWeekdayName($localDayOfWeek + 1);
             break;
         case 'localyear':
             $value = $pageLang->formatNum($localYear, true);
             break;
         case 'localtime':
             $value = $pageLang->time($localTimestamp, false, false);
             break;
         case 'localhour':
             $value = $pageLang->formatNum($localHour, true);
             break;
         case 'localweek':
             # @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
             # int to remove the padding
             $value = $pageLang->formatNum((int) $localWeek);
             break;
         case 'localdow':
             $value = $pageLang->formatNum($localDayOfWeek);
             break;
         case 'numberofarticles':
             $value = $pageLang->formatNum(SiteStats::articles());
             break;
         case 'numberoffiles':
             $value = $pageLang->formatNum(SiteStats::images());
             break;
         case 'numberofusers':
             $value = $pageLang->formatNum(SiteStats::users());
             break;
         case 'numberofactiveusers':
             $value = $pageLang->formatNum(SiteStats::activeUsers());
             break;
         case 'numberofpages':
             $value = $pageLang->formatNum(SiteStats::pages());
             break;
         case 'numberofadmins':
             $value = $pageLang->formatNum(SiteStats::numberingroup('sysop'));
             break;
         case 'numberofedits':
             $value = $pageLang->formatNum(SiteStats::edits());
             break;
         case 'numberofviews':
             $value = $pageLang->formatNum(SiteStats::views());
             break;
         case 'currenttimestamp':
             $value = wfTimestamp(TS_MW, $ts);
             break;
         case 'localtimestamp':
             $value = $localTimestamp;
             break;
         case 'currentversion':
             $value = SpecialVersion::getVersion();
             break;
         case 'articlepath':
             return $wgArticlePath;
         case 'sitename':
             return $wgSitename;
         case 'server':
             return $wgServer;
         case 'servername':
             $serverParts = wfParseUrl($wgServer);
             return $serverParts && isset($serverParts['host']) ? $serverParts['host'] : $wgServer;
         case 'scriptpath':
             return $wgScriptPath;
         case 'stylepath':
             return $wgStylePath;
         case 'directionmark':
             return $pageLang->getDirMark();
         case 'contentlanguage':
             global $wgLanguageCode;
             return $wgLanguageCode;
         default:
             $ret = null;
             if (wfRunHooks('ParserGetVariableValueSwitch', array(&$this, &$this->mVarCache, &$index, &$ret, &$frame))) {
                 return $ret;
             } else {
                 return null;
             }
     }
     if ($index) {
         $this->mVarCache[$index] = $value;
     }
     return $value;
 }
 public function executeIndex()
 {
     wfProfileIn(__METHOD__);
     $this->total = SiteStats::articles();
     wfProfileOut(__METHOD__);
 }
Esempio n. 25
0
/**
 * Should low-performance queries be disabled?
 *
 * @return bool
 * @codeCoverageIgnore
 */
function wfQueriesMustScale()
{
    global $wgMiserMode;
    return $wgMiserMode || SiteStats::pages() > 100000 && SiteStats::edits() > 1000000 && SiteStats::users() > 10000;
}
Esempio n. 26
0
 protected function appendUserGroups($property, $numberInGroup)
 {
     global $wgGroupPermissions, $wgAddGroups, $wgRemoveGroups, $wgGroupsAddToSelf, $wgGroupsRemoveFromSelf;
     $data = array();
     $result = $this->getResult();
     foreach ($wgGroupPermissions as $group => $permissions) {
         $arr = array('name' => $group, 'rights' => array_keys($permissions, true));
         if ($numberInGroup) {
             global $wgAutopromote;
             if ($group == 'user') {
                 $arr['number'] = SiteStats::users();
                 // '*' and autopromote groups have no size
             } elseif ($group !== '*' && !isset($wgAutopromote[$group])) {
                 $arr['number'] = SiteStats::numberInGroup($group);
             }
         }
         $groupArr = array('add' => $wgAddGroups, 'remove' => $wgRemoveGroups, 'add-self' => $wgGroupsAddToSelf, 'remove-self' => $wgGroupsRemoveFromSelf);
         foreach ($groupArr as $type => $rights) {
             if (isset($rights[$group])) {
                 $arr[$type] = $rights[$group];
                 $result->setIndexedTagName($arr[$type], 'group');
             }
         }
         $result->setIndexedTagName($arr['rights'], 'permission');
         $data[] = $arr;
     }
     $result->setIndexedTagName($data, 'group');
     return $result->addValue('query', $property, $data);
 }
Esempio n. 27
0
 public static function numberingroup($parser, $name = '', $raw = null)
 {
     return self::formatRaw(SiteStats::numberingroup(strtolower($name)), $raw);
 }
Esempio n. 28
0
 /**
  * Return value of a magic variable (like PAGENAME)
  *
  * @private
  */
 function getVariableValue($index)
 {
     global $wgContLang, $wgSitename, $wgServer, $wgServerName, $wgScriptPath;
     /**
      * Some of these require message or data lookups and can be
      * expensive to check many times.
      */
     static $varCache = array();
     if (wfRunHooks('ParserGetVariableValueVarCache', array(&$this, &$varCache))) {
         if (isset($varCache[$index])) {
             return $varCache[$index];
         }
     }
     $ts = time();
     wfRunHooks('ParserGetVariableValueTs', array(&$this, &$ts));
     # Use the time zone
     global $wgLocaltimezone;
     if (isset($wgLocaltimezone)) {
         $oldtz = getenv('TZ');
         putenv('TZ=' . $wgLocaltimezone);
     }
     $localTimestamp = date('YmdHis', $ts);
     $localMonth = date('m', $ts);
     $localMonthName = date('n', $ts);
     $localDay = date('j', $ts);
     $localDay2 = date('d', $ts);
     $localDayOfWeek = date('w', $ts);
     $localWeek = date('W', $ts);
     $localYear = date('Y', $ts);
     $localHour = date('H', $ts);
     if (isset($wgLocaltimezone)) {
         putenv('TZ=' . $oldtz);
     }
     switch ($index) {
         case 'currentmonth':
             return $varCache[$index] = $wgContLang->formatNum(date('m', $ts));
         case 'currentmonthname':
             return $varCache[$index] = $wgContLang->getMonthName(date('n', $ts));
         case 'currentmonthnamegen':
             return $varCache[$index] = $wgContLang->getMonthNameGen(date('n', $ts));
         case 'currentmonthabbrev':
             return $varCache[$index] = $wgContLang->getMonthAbbreviation(date('n', $ts));
         case 'currentday':
             return $varCache[$index] = $wgContLang->formatNum(date('j', $ts));
         case 'currentday2':
             return $varCache[$index] = $wgContLang->formatNum(date('d', $ts));
         case 'localmonth':
             return $varCache[$index] = $wgContLang->formatNum($localMonth);
         case 'localmonthname':
             return $varCache[$index] = $wgContLang->getMonthName($localMonthName);
         case 'localmonthnamegen':
             return $varCache[$index] = $wgContLang->getMonthNameGen($localMonthName);
         case 'localmonthabbrev':
             return $varCache[$index] = $wgContLang->getMonthAbbreviation($localMonthName);
         case 'localday':
             return $varCache[$index] = $wgContLang->formatNum($localDay);
         case 'localday2':
             return $varCache[$index] = $wgContLang->formatNum($localDay2);
         case 'pagename':
             return $this->mTitle->getText();
         case 'pagenamee':
             return $this->mTitle->getPartialURL();
         case 'fullpagename':
             return $this->mTitle->getPrefixedText();
         case 'fullpagenamee':
             return $this->mTitle->getPrefixedURL();
         case 'subpagename':
             return $this->mTitle->getSubpageText();
         case 'subpagenamee':
             return $this->mTitle->getSubpageUrlForm();
         case 'basepagename':
             return $this->mTitle->getBaseText();
         case 'basepagenamee':
             return wfUrlEncode(str_replace(' ', '_', $this->mTitle->getBaseText()));
         case 'talkpagename':
             if ($this->mTitle->canTalk()) {
                 $talkPage = $this->mTitle->getTalkPage();
                 return $talkPage->getPrefixedText();
             } else {
                 return '';
             }
         case 'talkpagenamee':
             if ($this->mTitle->canTalk()) {
                 $talkPage = $this->mTitle->getTalkPage();
                 return $talkPage->getPrefixedUrl();
             } else {
                 return '';
             }
         case 'subjectpagename':
             $subjPage = $this->mTitle->getSubjectPage();
             return $subjPage->getPrefixedText();
         case 'subjectpagenamee':
             $subjPage = $this->mTitle->getSubjectPage();
             return $subjPage->getPrefixedUrl();
         case 'revisionid':
             return $this->mRevisionId;
         case 'revisionday':
             return intval(substr($this->getRevisionTimestamp(), 6, 2));
         case 'revisionday2':
             return substr($this->getRevisionTimestamp(), 6, 2);
         case 'revisionmonth':
             return intval(substr($this->getRevisionTimestamp(), 4, 2));
         case 'revisionyear':
             return substr($this->getRevisionTimestamp(), 0, 4);
         case 'revisiontimestamp':
             return $this->getRevisionTimestamp();
         case 'namespace':
             return str_replace('_', ' ', $wgContLang->getNsText($this->mTitle->getNamespace()));
         case 'namespacee':
             return wfUrlencode($wgContLang->getNsText($this->mTitle->getNamespace()));
         case 'talkspace':
             return $this->mTitle->canTalk() ? str_replace('_', ' ', $this->mTitle->getTalkNsText()) : '';
         case 'talkspacee':
             return $this->mTitle->canTalk() ? wfUrlencode($this->mTitle->getTalkNsText()) : '';
         case 'subjectspace':
             return $this->mTitle->getSubjectNsText();
         case 'subjectspacee':
             return wfUrlencode($this->mTitle->getSubjectNsText());
         case 'currentdayname':
             return $varCache[$index] = $wgContLang->getWeekdayName(date('w', $ts) + 1);
         case 'currentyear':
             return $varCache[$index] = $wgContLang->formatNum(date('Y', $ts), true);
         case 'currenttime':
             return $varCache[$index] = $wgContLang->time(wfTimestamp(TS_MW, $ts), false, false);
         case 'currenthour':
             return $varCache[$index] = $wgContLang->formatNum(date('H', $ts), true);
         case 'currentweek':
             // @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
             // int to remove the padding
             return $varCache[$index] = $wgContLang->formatNum((int) date('W', $ts));
         case 'currentdow':
             return $varCache[$index] = $wgContLang->formatNum(date('w', $ts));
         case 'localdayname':
             return $varCache[$index] = $wgContLang->getWeekdayName($localDayOfWeek + 1);
         case 'localyear':
             return $varCache[$index] = $wgContLang->formatNum($localYear, true);
         case 'localtime':
             return $varCache[$index] = $wgContLang->time($localTimestamp, false, false);
         case 'localhour':
             return $varCache[$index] = $wgContLang->formatNum($localHour, true);
         case 'localweek':
             // @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
             // int to remove the padding
             return $varCache[$index] = $wgContLang->formatNum((int) $localWeek);
         case 'localdow':
             return $varCache[$index] = $wgContLang->formatNum($localDayOfWeek);
         case 'numberofarticles':
             return $varCache[$index] = $wgContLang->formatNum(SiteStats::articles());
         case 'numberoffiles':
             return $varCache[$index] = $wgContLang->formatNum(SiteStats::images());
         case 'numberofusers':
             return $varCache[$index] = $wgContLang->formatNum(SiteStats::users());
         case 'numberofpages':
             return $varCache[$index] = $wgContLang->formatNum(SiteStats::pages());
         case 'numberofadmins':
             return $varCache[$index] = $wgContLang->formatNum(SiteStats::admins());
         case 'currenttimestamp':
             return $varCache[$index] = wfTimestampNow();
         case 'localtimestamp':
             return $varCache[$index] = $localTimestamp;
         case 'currentversion':
             return $varCache[$index] = SpecialVersion::getVersion();
         case 'sitename':
             return $wgSitename;
         case 'server':
             return $wgServer;
         case 'servername':
             return $wgServerName;
         case 'scriptpath':
             return $wgScriptPath;
         case 'directionmark':
             return $wgContLang->getDirMark();
         case 'contentlanguage':
             global $wgContLanguageCode;
             return $wgContLanguageCode;
         default:
             $ret = null;
             if (wfRunHooks('ParserGetVariableValueSwitch', array(&$this, &$varCache, &$index, &$ret))) {
                 return $ret;
             } else {
                 return null;
             }
     }
 }
 /**
  * Print basic information about this site.
  */
 public function printWikiInfo()
 {
     global $wgSitename, $wgLanguageCode;
     $this->prepareSerialization();
     $this->delay_flush = 35;
     // don't do intermediate flushes with default parameters
     // assemble export data:
     $expData = new SMWExpData(new SMWExpResource('&wiki;#wiki'));
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('rdf', 'type'), new SMWExpData(SMWExporter::getInstance()->getSpecialNsResource('swivt', 'Wikisite')));
     // basic wiki information
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('rdfs', 'label'), new SMWExpLiteral($wgSitename));
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('swivt', 'siteName'), new SMWExpLiteral($wgSitename, 'http://www.w3.org/2001/XMLSchema#string'));
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('swivt', 'pagePrefix'), new SMWExpLiteral(SMWExporter::getInstance()->expandURI('&wikiurl;'), 'http://www.w3.org/2001/XMLSchema#string'));
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('swivt', 'smwVersion'), new SMWExpLiteral(SMW_VERSION, 'http://www.w3.org/2001/XMLSchema#string'));
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('swivt', 'langCode'), new SMWExpLiteral($wgLanguageCode, 'http://www.w3.org/2001/XMLSchema#string'));
     $mainpage = Title::newMainPage();
     if (!is_null($mainpage)) {
         $ed = new SMWExpData(new SMWExpResource($mainpage->getFullURL()));
         $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('swivt', 'mainPage'), $ed);
     }
     // statistical information
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('swivt', 'pageCount'), new SMWExpLiteral(SiteStats::pages(), 'http://www.w3.org/2001/XMLSchema#int'));
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('swivt', 'contentPageCount'), new SMWExpLiteral(SiteStats::articles(), 'http://www.w3.org/2001/XMLSchema#int'));
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('swivt', 'mediaCount'), new SMWExpLiteral(SiteStats::images(), 'http://www.w3.org/2001/XMLSchema#int'));
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('swivt', 'editCount'), new SMWExpLiteral(SiteStats::edits(), 'http://www.w3.org/2001/XMLSchema#int'));
     // SiteStats::views was deprecated in MediaWiki 1.25
     // "Stop calling this function, it will be removed some time in the future"
     //$expData->addPropertyObjectValue(
     //	SMWExporter::getInstance()->getSpecialNsResource( 'swivt', 'viewCount' ),
     //	new SMWExpLiteral( SiteStats::views(), 'http://www.w3.org/2001/XMLSchema#int' )
     //);
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('swivt', 'userCount'), new SMWExpLiteral(SiteStats::users(), 'http://www.w3.org/2001/XMLSchema#int'));
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('swivt', 'adminCount'), new SMWExpLiteral(SiteStats::numberingroup('sysop'), 'http://www.w3.org/2001/XMLSchema#int'));
     $this->serializer->startSerialization();
     $this->serializer->serializeExpData(SMWExporter::getInstance()->getOntologyExpData(''));
     $this->serializer->serializeExpData($expData);
     // link to list of existing pages:
     if (strpos(SMWExporter::getInstance()->expandURI('&wikiurl;'), '?') === false) {
         // check whether we have title as a first parameter or in URL
         $nexturl = SMWExporter::getInstance()->expandURI('&export;?offset=0');
     } else {
         $nexturl = SMWExporter::getInstance()->expandURI('&export;&amp;offset=0');
     }
     $expData = new SMWExpData(new SMWExpResource($nexturl));
     $ed = new SMWExpData(SMWExporter::getInstance()->getSpecialNsResource('owl', 'Thing'));
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('rdf', 'type'), $ed);
     $ed = new SMWExpData(new SMWExpResource($nexturl));
     $expData->addPropertyObjectValue(SMWExporter::getInstance()->getSpecialNsResource('rdfs', 'isDefinedBy'), $ed);
     $this->serializer->serializeExpData($expData);
     $this->serializer->finishSerialization();
     $this->flush(true);
 }
 /**
  * Render page header for Hubs
  *
  * @param: array $params
  */
 public function executeHubs($params)
 {
     global $wgSupressPageTitle;
     wfProfileIn(__METHOD__);
     $this->displaytitle = true;
     // Leave this for now. To discuss do we want PageTitle
     if ($this->displaytitle) {
         $this->title = wfMessage('oasis-home')->escaped();
     }
     // number of pages on this wiki
     $this->tallyMsg = wfMessage('oasis-total-articles-mainpage', SiteStats::articles())->parse();
     if (!empty($wgSupressPageTitle)) {
         $this->title = '';
     }
     wfProfileOut(__METHOD__);
 }