'img_actor' => $wgActorTableSchemaMigrationStage > MIGRATION_OLD ? 'img_actor' : null,
'img_timestamp',
'img_sha1',
- ] + CommentStore::getStore()->getFields( 'img_description' );
+ ] + MediaWikiServices::getInstance()->getCommentStore()->getFields( 'img_description' );
}
/**
* - joins: (array) to include in the `$join_conds` to `IDatabase->select()`
*/
public static function getQueryInfo( array $options = [] ) {
- $commentQuery = CommentStore::getStore()->getJoin( 'img_description' );
+ $commentQuery = MediaWikiServices::getInstance()->getCommentStore()->getJoin( 'img_description' );
$actorQuery = ActorMigration::newMigration()->getJoin( 'img_user' );
$ret = [
'tables' => [ 'image' ] + $commentQuery['tables'] + $actorQuery['tables'],
return;
}
- $cache = ObjectCache::getMainWANInstance();
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
$cachedValues = $cache->getWithSetCallback(
$key,
$cache::TTL_WEEK,
$this->repo->getMasterDB()->onTransactionPreCommitOrIdle(
function () use ( $key ) {
- ObjectCache::getMainWANInstance()->delete( $key );
+ MediaWikiServices::getInstance()->getMainWANObjectCache()->delete( $key );
},
__METHOD__
);
function decodeRow( $row, $prefix = 'img_' ) {
$decoded = $this->unprefixRow( $row, $prefix );
- $decoded['description'] = CommentStore::getStore()
+ $decoded['description'] = MediaWikiServices::getInstance()->getCommentStore()
->getComment( 'description', (object)$decoded )->text;
$decoded['user'] = User::newFromAnyId(
- isset( $decoded['user'] ) ? $decoded['user'] : null,
- isset( $decoded['user_text'] ) ? $decoded['user_text'] : null,
- isset( $decoded['actor'] ) ? $decoded['actor'] : null
+ $decoded['user'] ?? null,
+ $decoded['user_text'] ?? null,
+ $decoded['actor'] ?? null
);
unset( $decoded['user_text'], $decoded['actor'] );
if ( isset( $info['user'] ) || isset( $info['user_text'] ) || isset( $info['actor'] ) ) {
$this->user = User::newFromAnyId(
- isset( $info['user'] ) ? $info['user'] : null,
- isset( $info['user_text'] ) ? $info['user_text'] : null,
- isset( $info['actor'] ) ? $info['actor'] : null
+ $info['user'] ?? null,
+ $info['user_text'] ?? null,
+ $info['actor'] ?? null
);
}
* @param User|null $user User object or null to use $wgUser
* @param string[] $tags Change tags to add to the log entry and page revision.
* (This doesn't check $user's permissions.)
+ * @param bool $createNullRevision Set to false to avoid creation of a null revision on file
+ * upload, see T193621
* @return Status On success, the value member contains the
* archive name, or an empty string if it was a new file.
*/
function upload( $src, $comment, $pageText, $flags = 0, $props = false,
- $timestamp = false, $user = null, $tags = []
+ $timestamp = false, $user = null, $tags = [],
+ $createNullRevision = true
) {
if ( $this->getRepo()->getReadOnlyReason() !== false ) {
return $this->readOnlyFatalStatus();
) {
$props = $this->repo->getFileProps( $srcPath );
} else {
- $mwProps = new MWFileProps( MediaWiki\MediaWikiServices::getInstance()->getMimeAnalyzer() );
+ $mwProps = new MWFileProps( MediaWikiServices::getInstance()->getMimeAnalyzer() );
$props = $mwProps->getPropsFromPath( $srcPath, true );
}
}
$props,
$timestamp,
$user,
- $tags
+ $tags,
+ $createNullRevision
);
if ( !$uploadStatus->isOK() ) {
if ( $uploadStatus->hasMessage( 'filenotfound' ) ) {
* @param string|bool $timestamp
* @param null|User $user
* @param string[] $tags
+ * @param bool $createNullRevision Set to false to avoid creation of a null revision on file
+ * upload, see T193621
* @return Status
*/
function recordUpload2(
- $oldver, $comment, $pageText, $props = false, $timestamp = false, $user = null, $tags = []
+ $oldver, $comment, $pageText, $props = false, $timestamp = false, $user = null, $tags = [],
+ $createNullRevision = true
) {
global $wgCommentTableSchemaMigrationStage, $wgActorTableSchemaMigrationStage;
# Test to see if the row exists using INSERT IGNORE
# This avoids race conditions by locking the row until the commit, and also
# doesn't deadlock. SELECT FOR UPDATE causes a deadlock for every race condition.
- $commentStore = CommentStore::getStore();
+ $commentStore = MediaWikiServices::getInstance()->getCommentStore();
list( $commentFields, $commentCallback ) =
$commentStore->insertWithTempTable( $dbw, 'img_description', $comment );
$actorMigration = ActorMigration::newMigration();
$formatter->setContext( RequestContext::newExtraneousContext( $descTitle ) );
$editSummary = $formatter->getPlainActionText();
- $nullRevision = Revision::newNullRevision(
+ $nullRevision = $createNullRevision === false ? null : Revision::newNullRevision(
$dbw,
$descId,
$editSummary,
// If extra data (metadata) was not loaded then it must have been large
return $this->extraDataLoaded
- && strlen( serialize( $this->metadata ) ) <= self::CACHE_FIELD_MAX_LEN;
+ && strlen( serialize( $this->metadata ) ) <= self::CACHE_FIELD_MAX_LEN;
}
/**
* @since 1.28
*/
public function acquireFileLock() {
- return $this->getRepo()->getBackend()->lockFiles(
+ return Status::wrap( $this->getRepo()->getBackend()->lockFiles(
[ $this->getPath() ], LockManager::LOCK_EX, 10
- );
+ ) );
}
/**
* @since 1.28
*/
public function releaseFileLock() {
- return $this->getRepo()->getBackend()->unlockFiles(
+ return Status::wrap( $this->getRepo()->getBackend()->unlockFiles(
[ $this->getPath() ], LockManager::LOCK_EX
- );
+ ) );
}
/**
$now = time();
$dbw = $this->file->repo->getMasterDB();
- $commentStore = CommentStore::getStore();
+ $commentStore = MediaWikiServices::getInstance()->getCommentStore();
$actorMigration = ActorMigration::newMigration();
$encTimestamp = $dbw->addQuotes( $dbw->timestamp( $now ) );
$dbw = $this->file->repo->getMasterDB();
- $commentStore = CommentStore::getStore();
+ $commentStore = MediaWikiServices::getInstance()->getCommentStore();
$actorMigration = ActorMigration::newMigration();
$status = $this->file->repo->newGood();