Merge "Replace deprecated User function in ChangesListSpecialPage"

This commit is contained in:
jenkins-bot 2021-10-01 15:17:39 +00:00 committed by Gerrit Code Review
commit e2861ca8bb
3 changed files with 105 additions and 43 deletions

View file

@ -23,6 +23,7 @@
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;
use MediaWiki\User\UserIdentity;
use OOUI\IconWidget;
use Wikimedia\Rdbms\DBQueryTimeoutError;
use Wikimedia\Rdbms\FakeResultWrapper;
@ -42,24 +43,6 @@ abstract class ChangesListSpecialPage extends SpecialPage {
*/
private const TAG_DESC_CHARACTER_LIMIT = 120;
/**
* Preference name for saved queries. Subclasses that use saved queries should override this.
* @var string
*/
protected static $savedQueriesPreferenceName;
/**
* Preference name for 'days'. Subclasses should override this.
* @var string
*/
protected static $daysPreferenceName;
/**
* Preference name for collapsing the active filter display. Subclasses should override this.
* @var string
*/
protected static $collapsedPreferenceName;
/** @var string */
protected $rcSubpage;
@ -176,9 +159,12 @@ abstract class ChangesListSpecialPage extends SpecialPage {
'description' => 'rcfilters-filter-user-experience-level-newcomer-description',
'cssClassSuffix' => 'user-newcomer',
'isRowApplicableCallable' => static function ( IContextSource $ctx, RecentChange $rc ) {
$performer = User::newFromIdentity( $rc->getPerformerIdentity() );
return $performer && $performer->isRegistered() &&
$performer->getExperienceLevel() === 'newcomer';
$performer = $rc->getPerformerIdentity();
return $performer->isRegistered() &&
MediaWikiServices::getInstance()
->getUserFactory()
->newFromUserIdentity( $performer )
->getExperienceLevel() === 'newcomer';
}
],
[
@ -187,9 +173,12 @@ abstract class ChangesListSpecialPage extends SpecialPage {
'description' => 'rcfilters-filter-user-experience-level-learner-description',
'cssClassSuffix' => 'user-learner',
'isRowApplicableCallable' => static function ( IContextSource $ctx, RecentChange $rc ) {
$performer = User::newFromIdentity( $rc->getPerformerIdentity() );
return $performer && $performer->isRegistered() &&
$performer->getExperienceLevel() === 'learner';
$performer = $rc->getPerformerIdentity();
return $performer->isRegistered() &&
MediaWikiServices::getInstance()
->getUserFactory()
->newFromUserIdentity( $performer )
->getExperienceLevel() === 'learner';
},
],
[
@ -198,9 +187,12 @@ abstract class ChangesListSpecialPage extends SpecialPage {
'description' => 'rcfilters-filter-user-experience-level-experienced-description',
'cssClassSuffix' => 'user-experienced',
'isRowApplicableCallable' => static function ( IContextSource $ctx, RecentChange $rc ) {
$performer = User::newFromIdentity( $rc->getPerformerIdentity() );
return $performer && $performer->isRegistered() &&
$performer->getExperienceLevel() === 'experienced';
$performer = $rc->getPerformerIdentity();
return $performer->isRegistered() &&
MediaWikiServices::getInstance()
->getUserFactory()
->newFromUserIdentity( $performer )
->getExperienceLevel() === 'experienced';
},
]
],
@ -721,7 +713,9 @@ abstract class ChangesListSpecialPage extends SpecialPage {
) {
// Get the saved queries data and parse it
$savedQueries = FormatJson::decode(
$this->getUser()->getOption( static::$savedQueriesPreferenceName ),
MediaWikiServices::getInstance()
->getUserOptionsLookup()
->getOption( $this->getUser(), $this->getSavedQueriesPreferenceName() ),
true
);
@ -807,7 +801,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
$out->addBodyClasses( 'mw-rcfilters-enabled' );
$collapsed = MediaWikiServices::getInstance()->getUserOptionsLookup()
->getBoolOption( $this->getUser(), static::$collapsedPreferenceName );
->getBoolOption( $this->getUser(), $this->getCollapsedPreferenceName() );
if ( $collapsed ) {
$out->addBodyClasses( 'mw-rcfilters-collapsed' );
}
@ -830,7 +824,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
$out->addJsConfigVars(
'wgStructuredChangeFiltersSavedQueriesPreferenceName',
static::$savedQueriesPreferenceName
$this->getSavedQueriesPreferenceName()
);
$out->addJsConfigVars(
'wgStructuredChangeFiltersLimitPreferenceName',
@ -838,11 +832,11 @@ abstract class ChangesListSpecialPage extends SpecialPage {
);
$out->addJsConfigVars(
'wgStructuredChangeFiltersDaysPreferenceName',
static::$daysPreferenceName
$this->getDefaultDaysPreferenceName()
);
$out->addJsConfigVars(
'wgStructuredChangeFiltersCollapsedPreferenceName',
static::$collapsedPreferenceName
$this->getCollapsedPreferenceName()
);
} else {
$out->addBodyClasses( 'mw-rcfilters-disabled' );
@ -1975,7 +1969,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
* Static method to check whether StructuredFilter UI is enabled for the given user
*
* @since 1.31
* @param User $user
* @param UserIdentity $user
* @return bool
*/
public static function checkStructuredFilterUiEnabled( $user ) {
@ -1983,7 +1977,9 @@ abstract class ChangesListSpecialPage extends SpecialPage {
wfDeprecated( __METHOD__ . ' with Config argument', '1.34' );
$user = func_get_arg( 1 );
}
return !$user->getOption( 'rcenhancedfilters-disable' );
return !MediaWikiServices::getInstance()
->getUserOptionsLookup()
->getOption( $user, 'rcenhancedfilters-disable' );
}
/**
@ -2008,7 +2004,9 @@ abstract class ChangesListSpecialPage extends SpecialPage {
* @return float
*/
public function getDefaultDays() {
return floatval( $this->getUser()->getOption( static::$daysPreferenceName ) );
return floatval( MediaWikiServices::getInstance()
->getUserOptionsLookup()
->getOption( $this->getUser(), $this->getDefaultDaysPreferenceName() ) );
}
/**
@ -2019,6 +2017,30 @@ abstract class ChangesListSpecialPage extends SpecialPage {
*/
abstract protected function getLimitPreferenceName(): string;
/**
* Preference name for saved queries.
*
* @since 1.38
* @return string
*/
abstract protected function getSavedQueriesPreferenceName(): string;
/**
* Preference name for 'days'.
*
* @since 1.38
* @return string
*/
abstract protected function getDefaultDaysPreferenceName(): string;
/**
* Preference name for collapsing the active filter display.
*
* @since 1.38
* @return string
*/
abstract protected function getCollapsedPreferenceName(): string;
/**
* @param array $namespaces
* @return array

View file

@ -34,10 +34,6 @@ use Wikimedia\Rdbms\IResultWrapper;
*/
class SpecialRecentChanges extends ChangesListSpecialPage {
protected static $savedQueriesPreferenceName = 'rcfilters-saved-queries';
protected static $daysPreferenceName = 'rcdays'; // Use general RecentChanges preference
protected static $collapsedPreferenceName = 'rcfilters-rc-collapsed';
private $watchlistFilterGroupDefinition;
/** @var WatchedItemStoreInterface */
@ -972,4 +968,26 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
protected function getLimitPreferenceName(): string {
return 'rcfilters-limit'; // Use RCFilters-specific preference
}
/**
* @return string
*/
protected function getSavedQueriesPreferenceName(): string {
return 'rcfilters-saved-queries';
}
/**
* @return string
*/
protected function getDefaultDaysPreferenceName(): string {
return 'rcdays'; // Use general RecentChanges preference
}
/**
* @return string
*/
protected function getCollapsedPreferenceName(): string {
return 'rcfilters-rc-collapsed';
}
}

View file

@ -21,6 +21,7 @@
* @ingroup SpecialPage
*/
use MediaWiki\MediaWikiServices;
use MediaWiki\User\UserOptionsLookup;
use MediaWiki\Watchlist\WatchlistManager;
use Wikimedia\Rdbms\IDatabase;
@ -34,9 +35,6 @@ use Wikimedia\Rdbms\IResultWrapper;
* @ingroup SpecialPage
*/
class SpecialWatchlist extends ChangesListSpecialPage {
protected static $savedQueriesPreferenceName = 'rcfilters-wl-saved-queries';
protected static $daysPreferenceName = 'watchlistdays';
protected static $collapsedPreferenceName = 'rcfilters-wl-collapsed';
/** @var WatchedItemStoreInterface */
private $watchedItemStore;
@ -139,7 +137,9 @@ class SpecialWatchlist extends ChangesListSpecialPage {
wfDeprecated( __METHOD__ . ' with Config argument', '1.34' );
$user = func_get_arg( 1 );
}
return !$user->getOption( 'wlenhancedfilters-disable' );
return !MediaWikiServices::getInstance()
->getUserOptionsLookup()
->getOption( $user, 'wlenhancedfilters-disable' );
}
/**
@ -934,4 +934,26 @@ class SpecialWatchlist extends ChangesListSpecialPage {
protected function getLimitPreferenceName(): string {
return 'wllimit';
}
/**
* @return string
*/
protected function getSavedQueriesPreferenceName(): string {
return 'rcfilters-wl-saved-queries';
}
/**
* @return string
*/
protected function getDefaultDaysPreferenceName(): string {
return 'watchlistdays';
}
/**
* @return string
*/
protected function getCollapsedPreferenceName(): string {
return 'rcfilters-wl-collapsed';
}
}