- Betroffene App
- WoltLab Suite Core
Wenn man in einer DatabaseObjectAction einen boolschen Parameter mitgibt und diesen mit readBoolean() einliest, dann kommen falsche Ergebnisse dabei raus. Der Code funktioniert nur, wenn man 0 oder 1 oder aber 'false' oder 'true' als String übergibt. Für Sachen die per Javascript aufgerufen werden funktioniert das, aber es gibt ja auch Situationen wo man eine Action per PHP startet:
PHP: Aufruf
$action = new ImageAction($this->objects, 'rotate', array('force' => true);
$action->execute();
PHP: ImageAction::rotate()
var_dump($this->parameters['force']); // true
$this->readBoolean('force', true);
var_dump($this->parameters['force']); // false
Hier sollte wahrscheinlich noch ein is_bool hinzugefügt werden. Man kann sich zwar mit force => 1 behelfen, aber was boolean ist sollte auch boolean bleiben
PHP: \wcf\data\AbstractDatabaseObjectAction
case self::TYPE_BOOLEAN:
if (!isset($target[$variableName])) {
if ($allowEmpty) {
$target[$variableName] = false;
}
else {
throw new UserInputException($variableName);
}
}
else {
if (is_numeric($target[$variableName])) {
$target[$variableName] = (bool) $target[$variableName];
}
else {
$target[$variableName] = $target[$variableName] != 'false';
}
}
break;
Alles anzeigen