WLFilters: Respect default values

Followup to I3e48a9f2d9b70f0b9f6d7c6329db9c8e8001ee49
Reported in T174725#3590145

Comparing current value and active value with
different representation ("1" !== true) leads to
not applying filters that are ON by default.

Bug: T174725
Change-Id: If083610c0294756589adfc32a59388cc7422ad5d
This commit is contained in:
Stephane Bisson 2017-09-08 10:01:00 -04:00
parent 052abe72c8
commit 5e12ab58be

View file

@ -235,10 +235,13 @@ class ChangesListBooleanFilter extends ChangesListFilter {
* @inheritDoc
*/
public function isSelected( FormOptions $opts ) {
return !$opts[ $this->getName() ] &&
array_filter( $this->getSiblings(), function ( $sibling ) use ( $opts ) {
return $opts[ $sibling->getName() ];
} );
return !$this->getValue( $opts ) &&
array_filter(
$this->getSiblings(),
function ( ChangesListBooleanFilter $sibling ) use ( $opts ) {
return $sibling->getValue( $opts );
}
);
}
/**
@ -251,6 +254,14 @@ class ChangesListBooleanFilter extends ChangesListFilter {
return false;
}
return $opts[ $this->getName() ] === $this->activeValue;
return $this->getValue( $opts ) === $this->activeValue;
}
/**
* @param FormOptions $opts
* @return bool The current value of this filter according to $opts but coerced to boolean
*/
public function getValue( FormOptions $opts ) {
return (bool)$opts[ $this->getName() ];
}
}