public function unsubscribe($id)
{
if (is_array($id)) {
/* We want to delete from the TOP of the tree down to ensure that
* parents have an accurate view of what children are left. */
$this->sortList($id);
$id = array_reverse($id);
} else {
$id = array($id);
}
foreach ($id as $val) {
/* INBOX can never be unsubscribed to. */
if (($elt = $this[$val]) && !$elt->inbox) {
$this->_changed = true;
/* Do not delete from tree if there are child elements -
* instead, convert to a container element. */
if ($elt->children) {
$this->setAttribute('container', $elt, true);
}
/* Set as unsubscribed, add to unsubscribed list, and remove
* from subscribed list. */
$this->setAttribute('subscribed', $elt, false);
/* Remove from polled list. */
$this->poll->removePollList($elt);
}
}
}