Merge "Rewrite pref cleanup script"
[lhc/web/wiklou.git] / includes / changes / ChangesListBooleanFilter.php
index 913bd38..f37ed2d 100644 (file)
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @license GPL 2+
  * @author Matthew Flaschen
  */
 
 use Wikimedia\Rdbms\IDatabase;
 
 /**
- * An individual filter in a boolean group
+ * Represents a hide-based boolean filter (used on ChangesListSpecialPage and descendants)
  *
  * @since 1.29
  */
@@ -127,7 +126,7 @@ class ChangesListBooleanFilter extends ChangesListFilter {
                }
 
                if ( isset( $filterDefinition['default'] ) ) {
-                       $this->defaultValue = $filterDefinition['default'];
+                       $this->setDefault( $filterDefinition['default'] );
                } else {
                        throw new MWException( 'You must set a default' );
                }
@@ -156,12 +155,14 @@ class ChangesListBooleanFilter extends ChangesListFilter {
        }
 
        /**
-        * Sets default
+        * Sets default.  It must be a boolean.
+        *
+        * It will be coerced to boolean.
         *
         * @param bool $defaultValue
         */
        public function setDefault( $defaultValue ) {
-               $this->defaultValue = $defaultValue;
+               $this->defaultValue = (bool)$defaultValue;
        }
 
        /**
@@ -236,9 +237,12 @@ class ChangesListBooleanFilter extends ChangesListFilter {
         */
        public function isSelected( FormOptions $opts ) {
                return !$opts[ $this->getName() ] &&
-                       array_filter( $this->getSiblings(), function ( $sibling ) use ( $opts ) {
-                               return $opts[ $sibling->getName() ];
-                       } );
+                       array_filter(
+                               $this->getSiblings(),
+                               function ( ChangesListBooleanFilter $sibling ) use ( $opts ) {
+                                       return $opts[ $sibling->getName() ];
+                               }
+                       );
        }
 
        /**