From be6146661d5cbbba52c5b14e37b38bc5bdfa070b Mon Sep 17 00:00:00 2001 From: nathan Date: Thu, 28 Oct 2021 14:02:13 -0600 Subject: [PATCH] Api: Fix check of disabled attribute was misbehaving if the value was null or 0 This showed up when validating tracker config, some rows were disabled with disabled="@tracker". When tracker=0, they did not return their value. --- api/src/Etemplate/Widget.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/api/src/Etemplate/Widget.php b/api/src/Etemplate/Widget.php index a3f41e0f23..35524bd8b3 100644 --- a/api/src/Etemplate/Widget.php +++ b/api/src/Etemplate/Widget.php @@ -634,17 +634,22 @@ class Widget */ protected static function check_disabled($disabled, array $expand) { - if (($not = $disabled[0] == '!')) + if(($not = $disabled[0] == '!')) { - $disabled = substr($disabled,1); + $disabled = substr($disabled, 1); } - list($value,$check) = $vals = explode('=',$disabled); + list($value, $check) = $vals = explode('=', $disabled); // use expand_name to be able to use @ or $ $val = self::expand_name($value, $expand['c'], $expand['row'], $expand['c_'], $expand['row_'], $expand['cont']); $check_val = self::expand_name($check, $expand['c'], $expand['row'], $expand['c_'], $expand['row_'], $expand['cont']); - $result = count($vals) == 1 ? $val != '' : ($check_val[0] == '/' ? preg_match($check_val,$val) : $val == $check_val); - if ($not) $result = !$result; + $result = count($vals) == 1 ? + boolval($val) : + ($check_val[0] == '/' ? preg_match($check_val, $val) : $val == $check_val); + if($not) + { + $result = !$result; + } //error_log(__METHOD__."('".($not?'!':'')."$disabled' = '$val' ".(count($vals) == 1 ? '' : ($not?'!':'=')."= '$check_val'")." = ".($result?'True':'False')); return $result;