/** * 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); }
/** * 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); }