Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
92.31% |
12 / 13 |
|
75.00% |
3 / 4 |
CRAP | |
0.00% |
0 / 1 |
| UserPrefSearchProfileOverride | |
92.31% |
12 / 13 |
|
75.00% |
3 / 4 |
5.01 | |
0.00% |
0 / 1 |
| __construct | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
1 | |||
| getOverriddenName | |
66.67% |
2 / 3 |
|
0.00% |
0 / 1 |
2.15 | |||
| priority | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
| explain | |
100.00% |
5 / 5 |
|
100.00% |
1 / 1 |
1 | |||
| 1 | <?php |
| 2 | |
| 3 | namespace CirrusSearch\Profile; |
| 4 | |
| 5 | use MediaWiki\User\Options\UserOptionsLookup; |
| 6 | use MediaWiki\User\UserIdentity; |
| 7 | |
| 8 | /** |
| 9 | * Overrider based on user preference. |
| 10 | */ |
| 11 | class UserPrefSearchProfileOverride implements SearchProfileOverride { |
| 12 | /** |
| 13 | * @var UserIdentity |
| 14 | */ |
| 15 | private $user; |
| 16 | |
| 17 | /** |
| 18 | * @var UserOptionsLookup |
| 19 | */ |
| 20 | private $userOptionsLookup; |
| 21 | |
| 22 | /** |
| 23 | * @var string name of the preference |
| 24 | */ |
| 25 | private $preference; |
| 26 | |
| 27 | /** |
| 28 | * @var int |
| 29 | */ |
| 30 | private $priority; |
| 31 | |
| 32 | /** |
| 33 | * @param UserIdentity $user |
| 34 | * @param UserOptionsLookup $userOptionsLookup |
| 35 | * @param string $preference |
| 36 | * @param int $priority |
| 37 | */ |
| 38 | public function __construct( |
| 39 | UserIdentity $user, |
| 40 | UserOptionsLookup $userOptionsLookup, |
| 41 | $preference, |
| 42 | $priority = SearchProfileOverride::USER_PREF_PRIO |
| 43 | ) { |
| 44 | $this->user = $user; |
| 45 | $this->userOptionsLookup = $userOptionsLookup; |
| 46 | $this->preference = $preference; |
| 47 | $this->priority = $priority; |
| 48 | } |
| 49 | |
| 50 | /** |
| 51 | * Get the overridden name or null if it cannot be overridden. |
| 52 | * @param string[] $contextParams |
| 53 | * @return string|null |
| 54 | */ |
| 55 | public function getOverriddenName( array $contextParams ) { |
| 56 | // Only check user options if the user is logged to avoid loading |
| 57 | // default user options. |
| 58 | if ( $this->user->getId() === 0 ) { |
| 59 | return null; |
| 60 | } |
| 61 | return $this->userOptionsLookup->getOption( $this->user, $this->preference ); |
| 62 | } |
| 63 | |
| 64 | /** |
| 65 | * The priority of this override, lower wins |
| 66 | * @return int |
| 67 | */ |
| 68 | public function priority() { |
| 69 | return $this->priority; |
| 70 | } |
| 71 | |
| 72 | public function explain(): array { |
| 73 | return [ |
| 74 | 'type' => 'userPreference', |
| 75 | 'priority' => $this->priority(), |
| 76 | 'userPreference' => $this->preference |
| 77 | ]; |
| 78 | } |
| 79 | } |