Merge "Replace deprecated User function in ChangesListSpecialPage"
This commit is contained in:
commit
e2861ca8bb
3 changed files with 105 additions and 43 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue