/**
* 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);
        }
    }
}
/**
 * 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);
    }
}
 /**
  * @param $row
  * @return bool|string
  */
 protected function getUserGroups($row)
 {
     if (!$row->gug_numgroups) {
         return false;
     }
     $result = $this->mDb->select('global_user_groups', 'gug_group', array('gug_user' => $row->gu_id), __METHOD__);
     $globalgroups = array();
     foreach ($result as $row2) {
         if (!isset($this->wikiSets[$row2->gug_group])) {
             // We don't need to get the sets of groups we already know about.
             $globalgroups[] = $row2->gug_group;
         }
     }
     if (count($globalgroups) != 0) {
         $wikiSetQuery = $this->mDb->select(array('global_group_restrictions', 'wikiset'), array('ggr_group', 'ws_id', 'ws_name', 'ws_type', 'ws_wikis'), array('ggr_set=ws_id', 'ggr_group' => $globalgroups), __METHOD__);
         foreach ($wikiSetQuery as $wikiSetRow) {
             $this->wikiSets[$wikiSetRow->ggr_group] = WikiSet::newFromRow($wikiSetRow);
         }
     }
     $rights = array();
     foreach ($result as $row2) {
         if (isset($this->wikiSets[$row2->gug_group]) && !$this->wikiSets[$row2->gug_group]->inSet()) {
             $group = User::makeGroupLinkWiki($row2->gug_group, User::getGroupMember($row2->gug_group));
             $rights[] = Html::element('span', array('class' => 'groupnotappliedhere'), $group);
         } else {
             $rights[] = User::makeGroupLinkWiki($row2->gug_group, User::getGroupMember($row2->gug_group));
         }
     }
     return $this->getLanguage()->listToText($rights);
 }
Example #4
0
/**
* constructor
*/
function wfSpecialStatistics()
{
    global $wgOut, $wgLang, $wgRequest, $wgUser;
    $fname = 'wfSpecialStatistics';
    $action = $wgRequest->getVal('action');
    $dbr =& wfGetDB(DB_SLAVE);
    extract($dbr->tableNames('page', 'site_stats', 'user', 'user_groups'));
    $row = $dbr->selectRow('site_stats', '*', false, $fname);
    $views = $row->ss_total_views;
    $edits = $row->ss_total_edits;
    $good = $row->ss_good_articles;
    $images = $row->ss_images;
    # This code is somewhat schema-agnostic, because I'm changing it in a minor release -- TS
    if (isset($row->ss_total_pages) && $row->ss_total_pages == -1) {
        # Update schema
        $u = new SiteStatsUpdate(0, 0, 0);
        $u->doUpdate();
        $row = $dbr->selectRow('site_stats', '*', false, $fname);
    }
    if (isset($row->ss_total_pages)) {
        $total = $row->ss_total_pages;
    } else {
        $sql = "SELECT COUNT(page_namespace) AS total FROM {$page}";
        $res = $dbr->query($sql, $fname);
        $pageRow = $dbr->fetchObject($res);
        $total = $pageRow->total;
    }
    if (isset($row->ss_users)) {
        $users = $row->ss_users;
    } else {
        $sql = "SELECT MAX(user_id) AS total FROM {$user}";
        $res = $dbr->query($sql, $fname);
        $userRow = $dbr->fetchObject($res);
        $users = $userRow->total;
    }
    $admins = $dbr->selectField('user_groups', 'COUNT(*)', array('ug_group' => 'sysop'), $fname);
    $numJobs = $dbr->selectField('job', 'COUNT(*)', '', $fname);
    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 .= wfMsg('sitestatstext', $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 .= wfMsg('userstatstext', $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) {
            $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)) {
                    # <jld>
                    $ns = $row->page_namespace;
                    if (!$wgUser->isAllowedEx($ns, "~", "browse")) {
                        continue;
                    }
                    #if ( ! $wgUser->isAllowed( hnpClass::buildPermissionKey($ns,"~","browse") ) )  	continue;
                    # </jld>
                    $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);
            }
        }
    }
}
 /**
  * @param $row
  * @return bool|string
  */
 protected function getUserGroups($row)
 {
     if (!$row->gug_numgroups) {
         return false;
     }
     if ($row->gug_numgroups == 1) {
         return User::makeGroupLinkWiki($row->gug_singlegroup, User::getGroupMember($row->gug_singlegroup));
     }
     $result = $this->mDb->select('global_user_groups', 'gug_group', array('gug_user' => $row->gu_id), __METHOD__);
     $rights = array();
     foreach ($result as $row2) {
         $rights[] = User::makeGroupLinkWiki($row2->gug_group, User::getGroupMember($row2->gug_group));
     }
     return implode(', ', $rights);
 }