protected function escape($val)
{
if (is_array($val)) {
// iterate over the whole array
foreach ($val as $k => $v) {
$val[$k] = $this->escape($v);
}
return $val;
} elseif (is_object($val)) {
// iterate over all public properties
foreach (get_object_vars($val) as $k => $v) {
$val->{$k} = $this->escape($v);
}
return $val;
} elseif (is_string($val)) {
return htmlspecialchars($val);
} elseif (is_scalar($val)) {
return $val;
} elseif (is_null($val)) {
return $val;
} else {
throw new rex_exception(sprintf('Unexpected type for $val, "%s" given', gettype($val)));
}
}