Allow more values to be passed to `BooleanFormField::value()`
authorMatthias Schmidt <gravatronics@live.com>
Sun, 6 May 2018 07:25:21 +0000 (09:25 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Sun, 6 May 2018 07:25:21 +0000 (09:25 +0200)
See #2509

wcfsetup/install/files/lib/system/form/builder/field/BooleanFormField.class.php

index 3addaf84add47b97b6b4ee1cd155e379a05c4241..5a6f769e0e9e483ee81c2c50b6aab2256ef2933a 100644 (file)
@@ -59,7 +59,13 @@ class BooleanFormField extends AbstractFormField {
         * @return      static          this field
         */
        public function value($value): IFormField {
-               if (!is_bool($value)) {
+               if (is_string($value) && in_array($value, ['0', '1', 'true', 'false'])) {
+                       $value = ($value === '1' || $value === 'true');
+               }
+               if (is_int($value) && ($value === 0 || $value === 1)) {
+                       $value = ($value === 1);
+               }
+               else if (!is_bool($value)) {
                        throw new \InvalidArgumentException("Given value is no bool, " . gettype($value) . " given.");
                }