From 99fde665eda1c343afb57794b260dc03691ce4f1 Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Fri, 6 Jan 2012 20:26:53 +0000 Subject: [PATCH] Revert r105790 and move back view counter back to WikiPage with two modifications: * WikiPage::$mCounter is now marked as protected * Call WikiPage::loadPageData() from WikiPage::getCount() if the count is not set intead of loading the page_counter field only --- includes/SkinTemplate.php | 4 ++-- includes/Title.php | 27 --------------------------- includes/WikiPage.php | 15 ++++++++++++--- 3 files changed, 14 insertions(+), 32 deletions(-) diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php index 096393b14d..ff76653f23 100644 --- a/includes/SkinTemplate.php +++ b/includes/SkinTemplate.php @@ -318,7 +318,7 @@ class SkinTemplate extends Skin { if ( $out->isArticle() && $title->exists() ) { if ( $this->isRevisionCurrent() ) { if ( !$wgDisableCounters ) { - $viewcount = $title->getCount(); + $viewcount = $this->getWikiPage()->getCount(); if ( $viewcount ) { $tpl->set( 'viewcount', $this->msg( 'viewcount' )->numParams( $viewcount )->parse() ); } @@ -338,7 +338,7 @@ class SkinTemplate extends Skin { } if ( $wgMaxCredits != 0 ) { - $tpl->set( 'credits', Action::factory( 'credits', WikiPage::factory( $title ), + $tpl->set( 'credits', Action::factory( 'credits', $this->getWikiPage(), $this->getContext() )->getCredits( $wgMaxCredits, $wgShowCreditsIfMax ) ); } else { $tpl->set( 'lastmod', $this->lastModified() ); diff --git a/includes/Title.php b/includes/Title.php index cb36e1a49b..130fd5291c 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -63,7 +63,6 @@ class Title { var $mFragment; // /< Title fragment (i.e. the bit after the #) var $mArticleID = -1; // /< Article ID, fetched from the link cache on demand var $mLatestID = false; // /< ID of most recent revision - var $mCounter = -1; // /< Number of times this page has been viewed (-1 means "not loaded") private $mEstimateRevisions; // /< Estimated number of revisions; null of not loaded var $mRestrictions = array(); // /< Array of groups allowed to edit this article var $mOldRestrictions = false; @@ -274,14 +273,11 @@ class Title { $this->mRedirect = (bool)$row->page_is_redirect; if ( isset( $row->page_latest ) ) $this->mLatestID = (int)$row->page_latest; - if ( isset( $row->page_counter ) ) - $this->mCounter = (int)$row->page_counter; } else { // page not found $this->mArticleID = 0; $this->mLength = 0; $this->mRedirect = false; $this->mLatestID = 0; - $this->mCounter = 0; } } @@ -2757,28 +2753,6 @@ class Title { return $deleted; } - /** - * Get the number of views of this page - * - * @return int The view count for the page - */ - public function getCount() { - if ( $this->mCounter == -1 ) { - if ( $this->exists() ) { - $dbr = wfGetDB( DB_SLAVE ); - $this->mCounter = $dbr->selectField( 'page', - 'page_counter', - array( 'page_id' => $this->getArticleID() ), - __METHOD__ - ); - } else { - $this->mCounter = 0; - } - } - - return $this->mCounter; - } - /** * Get the article ID for this Title from the link cache, * adding it if necessary @@ -2891,7 +2865,6 @@ class Title { $this->mRedirect = null; $this->mLength = -1; $this->mLatestID = false; - $this->mCounter = -1; $this->mEstimateRevisions = null; } diff --git a/includes/WikiPage.php b/includes/WikiPage.php index 2da02606dd..f9feaeaaf0 100644 --- a/includes/WikiPage.php +++ b/includes/WikiPage.php @@ -47,6 +47,11 @@ class WikiPage extends Page { */ protected $mTouched = '19700101000000'; + /** + * @var int|null + */ + protected $mCounter = null; + /** * Constructor and clear the article * @param $title Title Reference to a Title object. @@ -246,6 +251,7 @@ class WikiPage extends Page { public function clear() { $this->mDataLoaded = false; + $this->mCounter = null; $this->mRedirectTarget = null; # Title object if set $this->mLastRevision = null; # Latest revision $this->mTouched = '19700101000000'; @@ -385,6 +391,7 @@ class WikiPage extends Page { # Old-fashioned restrictions $this->mTitle->loadRestrictions( $data->page_restrictions ); + $this->mCounter = intval( $data->page_counter ); $this->mTouched = wfTimestamp( TS_MW, $data->page_touched ); $this->mIsRedirect = intval( $data->page_is_redirect ); $this->mLatest = intval( $data->page_latest ); @@ -424,12 +431,14 @@ class WikiPage extends Page { } /** - * Get the number of views of this page - * * @return int The view count for the page */ public function getCount() { - return $this->mTitle->getCount(); + if ( !$this->mDataLoaded ) { + $this->loadPageData(); + } + + return $this->mCounter; } /** -- 2.20.1