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
* @inheritDoc
*/
public function isSelected( FormOptions $opts ) {
* @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 );
+ }
+ );
- 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() ];