diff options
Diffstat (limited to 'includes/SpecialPopularpages.php')
-rw-r--r-- | includes/SpecialPopularpages.php | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/includes/SpecialPopularpages.php b/includes/SpecialPopularpages.php index 77d41437..cd2f60e7 100644 --- a/includes/SpecialPopularpages.php +++ b/includes/SpecialPopularpages.php @@ -1,14 +1,12 @@ <?php /** * - * @package MediaWiki - * @subpackage SpecialPage + * @addtogroup SpecialPage */ /** - * - * @package MediaWiki - * @subpackage SpecialPage + * implements Special:Popularpages + * @addtogroup SpecialPage */ class PopularPagesPage extends QueryPage { @@ -23,16 +21,28 @@ class PopularPagesPage extends QueryPage { function isSyndicated() { return false; } function getSQL() { - $dbr =& wfGetDB( DB_SLAVE ); + $dbr = wfGetDB( DB_SLAVE ); $page = $dbr->tableName( 'page' ); - return + $query = "SELECT 'Popularpages' as type, page_namespace as namespace, page_title as title, page_counter as value - FROM $page - WHERE page_namespace=".NS_MAIN." AND page_is_redirect=0"; + FROM $page "; + $where = + "WHERE page_is_redirect=0 AND page_namespace"; + + global $wgContentNamespaces; + if( empty( $wgContentNamespaces ) ) { + $where .= '='.NS_MAIN; + } else if( count( $wgContentNamespaces ) > 1 ) { + $where .= ' in (' . implode( ', ', $wgContentNamespaces ) . ')'; + } else { + $where .= '='.$wgContentNamespaces[0]; + } + + return $query . $where; } function formatResult( $skin, $result ) { @@ -49,11 +59,11 @@ class PopularPagesPage extends QueryPage { * Constructor */ function wfSpecialPopularpages() { - list( $limit, $offset ) = wfCheckLimits(); + list( $limit, $offset ) = wfCheckLimits(); - $ppp = new PopularPagesPage(); + $ppp = new PopularPagesPage(); - return $ppp->doQuery( $offset, $limit ); + return $ppp->doQuery( $offset, $limit ); } ?> |