From 5981d695ce8713085a74896cdb34e28203bd801a Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Wed, 20 Apr 2011 11:58:00 +0000 Subject: [PATCH] * Made SiteStatsInit::articles() give a correct result when $wgUseCommaCount is false (btw, do we really need to keep that variable?) * Changed updateArticleCount.php to use that function instead of doing its own query --- includes/SiteStats.php | 24 ++++++++++------- maintenance/updateArticleCount.php | 41 ++++++++---------------------- 2 files changed, 25 insertions(+), 40 deletions(-) diff --git a/includes/SiteStats.php b/includes/SiteStats.php index b603bfbbee..5a0d7a5d7d 100644 --- a/includes/SiteStats.php +++ b/includes/SiteStats.php @@ -293,16 +293,22 @@ class SiteStatsInit { * @return Integer */ public function articles() { - $this->mArticles = $this->db->selectField( - 'page', - 'COUNT(*)', - array( - 'page_namespace' => MWNamespace::getContentNamespaces(), - 'page_is_redirect' => 0, - 'page_len > 0' - ), - __METHOD__ + global $wgUseCommaCount; + + $tables = array( 'page' ); + $conds = array( + 'page_namespace' => MWNamespace::getContentNamespaces(), + 'page_is_redirect' => 0, + 'page_len > 0' ); + + if ( !$wgUseCommaCount ) { + $tables[] = 'pagelinks'; + $conds[] = 'pl_from=page_id'; + } + + $this->mArticles = $this->db->selectField( $tables, 'COUNT(DISTINCT page_id)', + $conds, __METHOD__ ); return $this->mArticles; } diff --git a/maintenance/updateArticleCount.php b/maintenance/updateArticleCount.php index 1f5f72d1c1..dbbfb80c3f 100644 --- a/maintenance/updateArticleCount.php +++ b/maintenance/updateArticleCount.php @@ -35,41 +35,20 @@ class UpdateArticleCount extends Maintenance { public function execute() { $this->output( "Counting articles..." ); - $result = $this->count(); - if ( $result !== false ) { - $this->output( "found {$result}.\n" ); - if ( $this->hasOption( 'update' ) ) { - $this->output( "Updating site statistics table... " ); - $dbw = wfGetDB( DB_MASTER ); - $dbw->update( 'site_stats', array( 'ss_good_articles' => $result ), array( 'ss_row_id' => 1 ), __METHOD__ ); - $this->output( "done.\n" ); - } else { - $this->output( "To update the site statistics table, run the script with the --update option.\n" ); - } + $counter = new SiteStatsInit( false ); + $result = $counter->articles(); + + $this->output( "found {$result}.\n" ); + if ( $this->hasOption( 'update' ) ) { + $this->output( "Updating site statistics table... " ); + $dbw = wfGetDB( DB_MASTER ); + $dbw->update( 'site_stats', array( 'ss_good_articles' => $result ), array( 'ss_row_id' => 1 ), __METHOD__ ); + $this->output( "done.\n" ); } else { - $this->output( "failed.\n" ); + $this->output( "To update the site statistics table, run the script with the --update option.\n" ); } } - - /** - * Count the number of valid content pages in the wiki - * - * @return mixed Integer, or false if there's a problem - */ - private function count() { - return wfGetDB( DB_SLAVE )->selectField( - array( 'page', 'pagelinks' ), - 'COUNT(DISTINCT page_id)', - array( - 'pl_from=page_id', - 'page_namespace' => MWNamespace::getContentNamespaces(), - 'page_is_redirect' => 0, - 'page_len > 0', - ), - __METHOD__ - ); - } } $maintClass = "UpdateArticleCount"; -- 2.20.1