*/
use MediaWiki\MediaWikiServices;
-use MediaWiki\Permissions\PermissionManager;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Revision\SlotRecord;
use MediaWiki\Storage\NameTableAccessException;
$permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
- if ( $samePage && $this->mNewPage && $permissionManager->userCan(
- 'edit', $user, $this->mNewPage, PermissionManager::RIGOR_QUICK
+ if ( $samePage && $this->mNewPage && $permissionManager->quickUserCan(
+ 'edit', $user, $this->mNewPage
) ) {
- if ( $this->mNewRev->isCurrent() && $permissionManager->userCan(
+ if ( $this->mNewRev->isCurrent() && $permissionManager->quickUserCan(
'rollback', $user, $this->mNewPage
) ) {
$rollbackLink = Linker::generateRollback( $this->mNewRev, $this->getContext(),
protected function getMarkPatrolledLinkInfo() {
$user = $this->getUser();
$config = $this->getConfig();
+ $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
// Prepare a change patrol link, if applicable
if (
// Is patrolling enabled and the user allowed to?
$config->get( 'UseRCPatrol' ) &&
- $this->mNewPage && $this->mNewPage->quickUserCan( 'patrol', $user ) &&
+ $this->mNewPage &&
+ $permissionManager->quickUserCan( 'patrol', $user, $this->mNewPage ) &&
// Only do this if the revision isn't more than 6 hours older
// than the Max RC age (6h because the RC might not be cleaned out regularly)
RecentChange::isInRCLifespan( $this->mNewRev->getTimestamp(), 21600 )
// Build the link
if ( $rcid ) {
$this->getOutput()->preventClickjacking();
- if ( MediaWikiServices::getInstance()->getPermissionManager()
- ->userHasRight( $user, 'writeapi' ) ) {
+ if ( $permissionManager->userHasRight( $user, 'writeapi' ) ) {
$this->getOutput()->addModules( 'mediawiki.page.patrol.ajax' );
}
) {
$out->addParserOutput( $parserOutput, [
'enableSectionEditLinks' => $this->mNewRev->isCurrent()
- && $this->mNewRev->getTitle()->quickUserCan( 'edit', $this->getUser() ),
+ && MediaWikiServices::getInstance()->getPermissionManager()->quickUserCan(
+ 'edit',
+ $this->getUser(),
+ $this->mNewRev->getTitle()
+ )
] );
}
}
}
/**
- * Process $wgExternalDiffEngine and get a sane, usable engine
+ * Process ExternalDiffEngine config and get a sane, usable engine
*
* @return bool|string 'wikidiff2', path to an executable, or false
* @internal For use by this class and TextSlotDiffRenderer only.
*/
public static function getEngine() {
- global $wgExternalDiffEngine;
- // We use the global here instead of Config because we write to the value,
- // and Config is not mutable.
- if ( $wgExternalDiffEngine == 'wikidiff' || $wgExternalDiffEngine == 'wikidiff3' ) {
- wfDeprecated( "\$wgExternalDiffEngine = '{$wgExternalDiffEngine}'", '1.27' );
- $wgExternalDiffEngine = false;
- } elseif ( $wgExternalDiffEngine == 'wikidiff2' ) {
- wfDeprecated( "\$wgExternalDiffEngine = '{$wgExternalDiffEngine}'", '1.32' );
- $wgExternalDiffEngine = false;
- } elseif ( !is_string( $wgExternalDiffEngine ) && $wgExternalDiffEngine !== false ) {
- // And prevent people from shooting themselves in the foot...
- wfWarn( '$wgExternalDiffEngine is set to a non-string value, forcing it to false' );
- $wgExternalDiffEngine = false;
- }
-
- if ( is_string( $wgExternalDiffEngine ) && is_executable( $wgExternalDiffEngine ) ) {
- return $wgExternalDiffEngine;
- } elseif ( $wgExternalDiffEngine === false && function_exists( 'wikidiff2_do_diff' ) ) {
+ $externalDiffEngine = MediaWikiServices::getInstance()->getMainConfig()
+ ->get( 'ExternalDiffEngine' );
+
+ if ( $externalDiffEngine ) {
+ if ( is_string( $externalDiffEngine ) ) {
+ if ( is_executable( $externalDiffEngine ) ) {
+ return $externalDiffEngine;
+ }
+ wfDebug( 'ExternalDiffEngine config points to a non-executable, ignoring' );
+ } else {
+ wfWarn( 'ExternalDiffEngine config is set to a non-string value, ignoring' );
+ }
+ }
+
+ if ( function_exists( 'wikidiff2_do_diff' ) ) {
return 'wikidiff2';
- } else {
- // Native PHP
- return false;
}
+
+ // Native PHP
+ return false;
}
/**
private function userCanEdit( Revision $rev ) {
$user = $this->getUser();
- if ( !$rev->getContentHandler()->supportsDirectEditing() ) {
- return false;
- }
-
if ( !$rev->userCan( RevisionRecord::DELETED_TEXT, $user ) ) {
return false;
}
$editQuery['oldid'] = $rev->getId();
}
- $key = $title->quickUserCan( 'edit', $user ) ? 'editold' : 'viewsourceold';
+ $key = MediaWikiServices::getInstance()->getPermissionManager()
+ ->quickUserCan( 'edit', $user, $title ) ? 'editold' : 'viewsourceold';
$msg = $this->msg( $key )->escaped();
$editLink = $this->msg( 'parentheses' )->rawParams(
Linker::linkKnown( $title, $msg, [], $editQuery ) )->escaped();
* false signifies that there is no previous/next revision ($old is the oldest/newest one).
*/
public function mapDiffPrevNext( $old, $new ) {
+ $rl = MediaWikiServices::getInstance()->getRevisionLookup();
if ( $new === 'prev' ) {
// Show diff between revision $old and the previous one. Get previous one from DB.
$newid = intval( $old );
- $oldid = $this->getTitle()->getPreviousRevisionID( $newid );
+ $oldid = false;
+ $newRev = $rl->getRevisionById( $newid );
+ if ( $newRev ) {
+ $oldRev = $rl->getPreviousRevision( $newRev );
+ if ( $oldRev ) {
+ $oldid = $oldRev->getId();
+ }
+ }
} elseif ( $new === 'next' ) {
// Show diff between revision $old and the next one. Get next one from DB.
$oldid = intval( $old );
- $newid = $this->getTitle()->getNextRevisionID( $oldid );
+ $newid = false;
+ $oldRev = $rl->getRevisionById( $oldid );
+ if ( $oldRev ) {
+ $newRev = $rl->getNextRevision( $oldRev );
+ if ( $newRev ) {
+ $newid = $newRev->getId();
+ }
+ }
} else {
$oldid = intval( $old );
$newid = intval( $new );