summaryrefslogtreecommitdiff
path: root/includes/specials/SpecialMostlinked.php
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2010-07-28 11:52:48 +0200
committerPierre Schmitz <pierre@archlinux.de>2010-07-28 11:52:48 +0200
commit222b01f5169f1c7e69762e0e8904c24f78f71882 (patch)
tree8e932e12546bb991357ec48eb1638d1770be7a35 /includes/specials/SpecialMostlinked.php
parent00ab76a6b686e98a914afc1975812d2b1aaa7016 (diff)
update to MediaWiki 1.16.0
Diffstat (limited to 'includes/specials/SpecialMostlinked.php')
-rw-r--r--includes/specials/SpecialMostlinked.php37
1 files changed, 27 insertions, 10 deletions
diff --git a/includes/specials/SpecialMostlinked.php b/includes/specials/SpecialMostlinked.php
index 078489bd..f112ae17 100644
--- a/includes/specials/SpecialMostlinked.php
+++ b/includes/specials/SpecialMostlinked.php
@@ -22,22 +22,35 @@ class MostlinkedPage extends QueryPage {
function isExpensive() { return true; }
function isSyndicated() { return false; }
- /**
- * Note: Getting page_namespace only works if $this->isCached() is false
- */
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,
pl_namespace AS namespace,
pl_title AS title,
- COUNT(*) AS value,
- page_namespace
+ COUNT(*) AS value
FROM $pagelinks
LEFT JOIN $page ON pl_namespace=page_namespace AND pl_title=page_title
- GROUP BY pl_namespace, pl_title, page_namespace
- HAVING COUNT(*) > 1";
+ GROUP BY pl_namespace, pl_title
+ HAVING COUNT(*) > $cutoff";
}
/**
@@ -57,12 +70,13 @@ class MostlinkedPage extends QueryPage {
* Make a link to "what links here" for the specified title
*
* @param $title Title being queried
+ * @param $caption String: text to display on the link
* @param $skin Skin to use
- * @return string
+ * @return String
*/
function makeWlhLink( &$title, $caption, &$skin ) {
$wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedDBkey() );
- return $skin->makeKnownLinkObj( $wlh, $caption );
+ return $skin->linkKnown( $wlh, $caption );
}
/**
@@ -75,7 +89,10 @@ class MostlinkedPage extends QueryPage {
function formatResult( $skin, $result ) {
global $wgLang;
$title = Title::makeTitleSafe( $result->namespace, $result->title );
- $link = $skin->makeLinkObj( $title );
+ if ( !$title ) {
+ return '<!-- ' . htmlspecialchars( "Invalid title: [[$title]]" ) . ' -->';
+ }
+ $link = $skin->link( $title );
$wlh = $this->makeWlhLink( $title,
wfMsgExt( 'nlinks', array( 'parsemag', 'escape'),
$wgLang->formatNum( $result->value ) ), $skin );