* Adds a table to the content that will be added to the output.
*
* @param string $content The content that will be added to the output
- * @param string $table The table
+ * @param string $table
* @return string The content with the table added
*/
protected function addTable( $content, $table ) {
];
}
+ // Display image SHA-1 value
+ if ( $title->inNamespace( NS_FILE ) ) {
+ $fileObj = wfFindFile( $title );
+ if ( $fileObj !== false ) {
+ // Convert the base-36 sha1 value obtained from database to base-16
+ $output = Wikimedia\base_convert( $fileObj->getSha1(), 36, 16, 40 );
+ $pageInfo['header-basic'][] = [
+ $this->msg( 'pageinfo-file-hash' ),
+ $output
+ ];
+ }
+ }
+
// Page protection
$pageInfo['header-restrictions'] = [];
self::getCacheKey( $cache, $page->getTitle(), $page->getLatest() ),
WANObjectCache::TTL_WEEK,
function ( $oldValue, &$ttl, &$setOpts ) use ( $page, $config, $fname ) {
+ global $wgActorTableSchemaMigrationStage;
+
$title = $page->getTitle();
$id = $title->getArticleID();
$dbrWatchlist = wfGetDB( DB_REPLICA, 'watchlist' );
$setOpts += Database::getCacheSetOptions( $dbr, $dbrWatchlist );
+ if ( $wgActorTableSchemaMigrationStage === MIGRATION_NEW ) {
+ $tables = [ 'revision_actor_temp' ];
+ $field = 'revactor_actor';
+ $pageField = 'revactor_page';
+ $tsField = 'revactor_timestamp';
+ $joins = [];
+ } elseif ( $wgActorTableSchemaMigrationStage === MIGRATION_OLD ) {
+ $tables = [ 'revision' ];
+ $field = 'rev_user_text';
+ $pageField = 'rev_page';
+ $tsField = 'rev_timestamp';
+ $joins = [];
+ } else {
+ $tables = [ 'revision', 'revision_actor_temp', 'actor' ];
+ $field = 'COALESCE( actor_name, rev_user_text)';
+ $pageField = 'rev_page';
+ $tsField = 'rev_timestamp';
+ $joins = [
+ 'revision_actor_temp' => [ 'LEFT JOIN', 'revactor_rev = rev_id' ],
+ 'actor' => [ 'LEFT JOIN', 'revactor_actor = actor_id' ],
+ ];
+ }
+
$watchedItemStore = MediaWikiServices::getInstance()->getWatchedItemStore();
$result = [];
$result['authors'] = 0;
} else {
$result['authors'] = (int)$dbr->selectField(
- 'revision',
- 'COUNT(DISTINCT rev_user_text)',
- [ 'rev_page' => $id ],
- $fname
+ $tables,
+ "COUNT(DISTINCT $field)",
+ [ $pageField => $id ],
+ $fname,
+ [],
+ $joins
);
}
// Recent number of distinct authors
$result['recent_authors'] = (int)$dbr->selectField(
- 'revision',
- 'COUNT(DISTINCT rev_user_text)',
+ $tables,
+ "COUNT(DISTINCT $field)",
[
- 'rev_page' => $id,
- "rev_timestamp >= " . $dbr->addQuotes( $threshold )
+ $pageField => $id,
+ "$tsField >= " . $dbr->addQuotes( $threshold )
],
- $fname
+ $fname,
+ [],
+ $joins
);
// Subpages (if enabled)