*
* @since 1.22
* @param Title $title Title to clear cache for
+ * @param int|null $revid Revision id to clear
*/
- public static function invalidateCache( Title $title ) {
+ public static function invalidateCache( Title $title, $revid = null ) {
$cache = ObjectCache::getMainWANInstance();
- $revision = Revision::newFromTitle( $title, 0, Revision::READ_LATEST );
- if ( $revision !== null ) {
- $key = wfMemcKey( 'infoaction', sha1( $title->getPrefixedText() ), $revision->getId() );
+ if ( !$revid ) {
+ $revision = Revision::newFromTitle( $title, 0, Revision::READ_LATEST );
+ $revid = $revision ? $revision->getId() : null;
+ }
+ if ( $revid !== null ) {
+ $key = wfMemcKey( 'infoaction', sha1( $title->getPrefixedText() ), $revid );
$cache->delete( $key );
}
}
$this->msg( 'pageinfo-watchers' ),
$lang->formatNum( $pageCounts['watchers'] )
);
- if ( $config->get( 'ShowUpdatedMarker' ) ) {
+ if (
+ $config->get( 'ShowUpdatedMarker' ) &&
+ isset( $pageCounts['visitingWatchers'] )
+ ) {
$minToDisclose = $config->get( 'UnwatchedPageSecret' );
if ( $pageCounts['visitingWatchers'] > $minToDisclose ||
$user->isAllowed( 'unwatchedpages' ) ) {
);
// Total number of distinct authors
- $pageInfo['header-edits'][] = array(
- $this->msg( 'pageinfo-authors' ), $lang->formatNum( $pageCounts['authors'] )
- );
+ if ( $pageCounts['authors'] > 0 ) {
+ $pageInfo['header-edits'][] = array(
+ $this->msg( 'pageinfo-authors' ), $lang->formatNum( $pageCounts['authors'] )
+ );
+ }
// Recent number of edits (within past 30 days)
$pageInfo['header-edits'][] = array(
$id = $title->getArticleID();
$config = $this->context->getConfig();
- $dbr = wfGetDB( DB_SLAVE );
+ $dbrWatchlist = wfGetDB( DB_SLAVE, 'watchlist' );
$result = array();
// Number of page watchers
- $watchers = (int)$dbr->selectField(
+ $watchers = (int)$dbrWatchlist->selectField(
'watchlist',
'COUNT(*)',
array(
// Threshold: last visited about 26 weeks before latest edit
$updated = wfTimestamp( TS_UNIX, $this->page->getTimestamp() );
$age = $config->get( 'WatchersMaxAge' );
- $threshold = $dbr->timestamp( $updated - $age );
+ $threshold = $dbrWatchlist->timestamp( $updated - $age );
// Number of page watchers who also visited a "recent" edit
- $visitingWatchers = (int)$dbr->selectField(
+ $visitingWatchers = (int)$dbrWatchlist->selectField(
'watchlist',
'COUNT(*)',
array(
'wl_namespace' => $title->getNamespace(),
'wl_title' => $title->getDBkey(),
- 'wl_notificationtimestamp >= ' . $dbr->addQuotes( $threshold ) .
+ 'wl_notificationtimestamp >= ' . $dbrWatchlist->addQuotes( $threshold ) .
' OR wl_notificationtimestamp IS NULL'
),
__METHOD__
$result['visitingWatchers'] = $visitingWatchers;
}
+ $dbr = wfGetDB( DB_SLAVE );
// Total number of edits
$edits = (int)$dbr->selectField(
'revision',
- 'COUNT(rev_page)',
+ 'COUNT(*)',
array( 'rev_page' => $id ),
__METHOD__
);
$result['edits'] = $edits;
// Total number of distinct authors
- $authors = (int)$dbr->selectField(
- 'revision',
- 'COUNT(DISTINCT rev_user_text)',
- array( 'rev_page' => $id ),
- __METHOD__
- );
- $result['authors'] = $authors;
+ if ( $config->get( 'MiserMode' ) ) {
+ $result['authors'] = 0;
+ } else {
+ $result['authors'] = (int)$dbr->selectField(
+ 'revision',
+ 'COUNT(DISTINCT rev_user_text)',
+ array( 'rev_page' => $id ),
+ __METHOD__
+ );
+ }
// "Recent" threshold defined by RCMaxAge setting
$threshold = $dbr->timestamp( time() - $config->get( 'RCMaxAge' ) );
$result['recent_edits'] = $edits;
// Recent number of distinct authors
- $authors = (int)$dbr->selectField(
+ $result['recent_authors'] = (int)$dbr->selectField(
'revision',
'COUNT(DISTINCT rev_user_text)',
array(
),
__METHOD__
);
- $result['recent_authors'] = $authors;
// Subpages (if enabled)
if ( MWNamespace::hasSubpages( $title->getNamespace() ) ) {