Php-bug in CRMEntity, function insertIntoEntityTable
There seems to be a Php-bug in CRMEntity, function insertIntoEntityTable, if ($uitype == 56)
if (isset($this->column_fields[$fieldname])) {
if ($uitype == 56) {
// if ($this->column_fields[$fieldname] == 'on' || $this->column_fields[$fieldname] == 1) { // php-bug. Returns true when $this->column_fields[$fieldname] = 0
if ($this->column_fields[$fieldname] === 'on' || $this->column_fields[$fieldname] == 1) {
$fldvalue = '1';
} else {
$fldvalue = '0';
}
}
Testing php:
// When $this->column_fields[$fieldname] = 0: $test0 = $this->column_fields[$fieldname] == 'on' ? 'true' : 'false'; // true - Wrong! (php-bug) $test1 = $this->column_fields[$fieldname] === 'on' ? 'true' : 'false'; // false - Correct $test2 = (string)$this->column_fields[$fieldname] == 'on' ? 'true' : 'false'; // false - Correct $test3 = $this->column_fields[$fieldname] == 1 ? 'true' : 'false'; // false - Correct