|
|
@ -203,11 +203,16 @@ class rcube_session
|
|
|
|
if (is_array($a_oldvars)) {
|
|
|
|
if (is_array($a_oldvars)) {
|
|
|
|
// remove unset keys on oldvars
|
|
|
|
// remove unset keys on oldvars
|
|
|
|
foreach ((array)$this->unsets as $var) {
|
|
|
|
foreach ((array)$this->unsets as $var) {
|
|
|
|
|
|
|
|
if (isset($a_oldvars[$k])) {
|
|
|
|
|
|
|
|
unset($a_oldvars[$k]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
$path = explode('.', $var);
|
|
|
|
$path = explode('.', $var);
|
|
|
|
$k = array_pop($path);
|
|
|
|
$k = array_pop($path);
|
|
|
|
$node = &$this->get_node($path, $a_oldvars);
|
|
|
|
$node = &$this->get_node($path, $a_oldvars);
|
|
|
|
unset($node[$k]);
|
|
|
|
unset($node[$k]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$newvars = $this->serialize(array_merge(
|
|
|
|
$newvars = $this->serialize(array_merge(
|
|
|
|
(array)$a_oldvars, (array)$this->unserialize($vars)));
|
|
|
|
(array)$a_oldvars, (array)$this->unserialize($vars)));
|
|
|
@ -413,10 +418,15 @@ class rcube_session
|
|
|
|
|
|
|
|
|
|
|
|
$this->unsets[] = $var;
|
|
|
|
$this->unsets[] = $var;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isset($_SESSION[$var])) {
|
|
|
|
|
|
|
|
unset($_SESSION[$var])
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
$path = explode('.', $var);
|
|
|
|
$path = explode('.', $var);
|
|
|
|
$key = array_pop($path);
|
|
|
|
$key = array_pop($path);
|
|
|
|
$node = &$this->get_node($path, $_SESSION);
|
|
|
|
$node = &$this->get_node($path, $_SESSION);
|
|
|
|
unset($node[$key]);
|
|
|
|
unset($node[$key]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|