Both functions (either as method of class user of or as method of class acp_users) in question are defined this way (simplified):
function optionget( ... $data = false)
|
{
|
...
|
$var = ($data) ? $data : $this->data['user_options'];
|
...
|
}
|
The problem in here is that
$data will also evaluate to FALSE if it was handed over nonetheless. Consider a case where I use the $data parameter by giving the value
0 (ordinal zero) or
'' (empty string) - this value wouldn't be used, instead
$this->data['user_options']
|
will be used. Which is fatal.
A correct approach would be to test without invoking typecasts:
function optionget( ... $data = false)
|
{
|
...
|
$var = ($data !== false) ? $data : $this->data['user_options'];
|
...
|
}
|
I submitted this as
minor bug because right now no code in phpBB uses the
$data parameter, so nothing is affected. Only exception: the STK uses it in
/tools/admin/reparse_bbcode.php, but obviously nobody ever had problems with it.