$bSlots = $b->getRevisionRecord()->getSlots();
$changedRoles = $aSlots->getRolesWithDifferentContent( $bSlots );
- return ( $changedRoles !== [ 'main' ] );
+ return ( $changedRoles !== [ 'main' ] && $changedRoles !== [] );
}
/**
* @return DerivedPageDataUpdater
*/
private function newDerivedDataUpdater() {
- global $wgContLang, $wgRCWatchCategoryMembership, $wgArticleCountMethod;
+ global $wgRCWatchCategoryMembership, $wgArticleCountMethod;
$derivedDataUpdater = new DerivedPageDataUpdater(
$this, // NOTE: eventually, PageUpdater should not know about WikiPage
$this->getParserCache(),
JobQueueGroup::singleton(),
MessageCache::singleton(),
- $wgContLang,
+ MediaWikiServices::getInstance()->getContentLanguage(),
LoggerFactory::getInstance( 'SaveParse' )
);
/**
* Get parser options suitable for rendering the primary article wikitext
*
- * @see ContentHandler::makeParserOptions
+ * @see ParserOptions::newCanonical
*
* @param IContextSource|User|string $context One of the following:
* - IContextSource: Use the User and the Language of the provided
* @return ParserOptions
*/
public function makeParserOptions( $context ) {
- $options = $this->getContentHandler()->makeParserOptions( $context );
+ $options = ParserOptions::newCanonical( $context );
if ( $this->getTitle()->isConversionTable() ) {
// @todo ConversionTable should become a separate content model, so
* @return string
*/
protected function formatExpiry( $expiry ) {
- global $wgContLang;
-
if ( $expiry != 'infinity' ) {
+ $contLang = MediaWikiServices::getInstance()->getContentLanguage();
return wfMessage(
'protect-expiring',
- $wgContLang->timeanddate( $expiry, false, false ),
- $wgContLang->date( $expiry, false, false ),
- $wgContLang->time( $expiry, false, false )
+ $contLang->timeanddate( $expiry, false, false ),
+ $contLang->date( $expiry, false, false ),
+ $contLang->time( $expiry, false, false )
)->inContentLanguage()->text();
} else {
return wfMessage( 'protect-expiry-indefinite' )
* @return string
*/
public function protectDescriptionLog( array $limit, array $expiry ) {
- global $wgContLang;
-
$protectDescriptionLog = '';
foreach ( array_filter( $limit ) as $action => $restrictions ) {
$expiryText = $this->formatExpiry( $expiry[$action] );
- $protectDescriptionLog .= $wgContLang->getDirMark() .
+ $protectDescriptionLog .=
+ MediaWikiServices::getInstance()->getContentLanguage()->getDirMark() .
"[$action=$restrictions] ($expiryText)";
}
// Note array_intersect() preserves keys from the first arg, and we're
// assuming $revQuery has `revision` primary and isn't using subtables
// for anything we care about.
- $res = $dbw->select(
+ $dbw->lockForUpdate(
array_intersect(
$revQuery['tables'],
[ 'revision', 'revision_comment_temp', 'revision_actor_temp' ]
),
- '1',
[ 'rev_page' => $id ],
__METHOD__,
- 'FOR UPDATE',
+ [],
$revQuery['joins']
);
- foreach ( $res as $row ) {
- // Fetch all rows in case the DB needs that to properly lock them.
- }
// If SCHEMA_COMPAT_WRITE_OLD is set, also select all extra fields we still write,
// so we can copy it to the archive table.
public function commitRollback( $fromP, $summary, $bot,
&$resultDetails, User $guser, $tags = null
) {
- global $wgUseRCPatrol, $wgContLang;
+ global $wgUseRCPatrol;
$dbw = wfGetDB( DB_MASTER );
$targetEditorForPublic = $target->getUser( RevisionRecord::FOR_PUBLIC );
// Allow the custom summary to use the same args as the default message
+ $contLang = MediaWikiServices::getInstance()->getContentLanguage();
$args = [
$targetEditorForPublic ? $targetEditorForPublic->getName() : null,
$currentEditorForPublic ? $currentEditorForPublic->getName() : null,
$s->rev_id,
- $wgContLang->timeanddate( wfTimestamp( TS_MW, $s->rev_timestamp ) ),
+ $contLang->timeanddate( wfTimestamp( TS_MW, $s->rev_timestamp ) ),
$current->getId(),
- $wgContLang->timeanddate( $current->getTimestamp() )
+ $contLang->timeanddate( $current->getTimestamp() )
];
if ( $summary instanceof Message ) {
$summary = $summary->params( $args )->inContentLanguage()->text();
foreach ( $deleted as $catName ) {
$cat = Category::newFromName( $catName );
Hooks::run( 'CategoryAfterPageRemoved', [ $cat, $this, $id ] );
- }
-
- // Refresh counts on categories that should be empty now
- if ( count( $deleted ) ) {
- $rows = $dbw->select(
- 'category',
- [ 'cat_id', 'cat_title', 'cat_pages', 'cat_subcats', 'cat_files' ],
- [ 'cat_title' => $deleted, 'cat_pages <= 100' ],
- __METHOD__
- );
- foreach ( $rows as $row ) {
- $cat = Category::newFromRow( $row );
- // T166757: do the update after this DB commit
- DeferredUpdates::addCallableUpdate( function () use ( $cat ) {
- $cat->refreshCounts();
- } );
- }
+ // Refresh counts on categories that should be empty now (after commit, T166757)
+ DeferredUpdates::addCallableUpdate( function () use ( $cat ) {
+ $cat->refreshCountsIfEmpty();
+ } );
}
}