public function getAttribute($type, $name)
{
if (!($elt = $this[$name])) {
return null;
}
$s_elt = strval($elt);
switch ($type) {
case 'children':
return isset($this->_parent[$s_elt]);
case 'container':
$attr = self::ELT_NOSELECT;
break;
case 'namespace_other':
$attr = self::ELT_NAMESPACE_OTHER;
break;
case 'namespace_shared':
$attr = self::ELT_NAMESPACE_SHARED;
break;
case 'needsort':
$attr = self::ELT_NEED_SORT;
break;
case 'nochildren':
$attr = self::ELT_NOINFERIORS;
break;
case 'nonimap':
$attr = self::ELT_NONIMAP;
break;
case 'open':
if (!$elt->children) {
return false;
}
$attr = self::ELT_IS_OPEN;
break;
case 'polled':
if ($this->_elts[$s_elt] & self::ELT_IS_POLLED) {
return true;
} elseif ($this->_elts[$s_elt] & self::ELT_NOT_POLLED) {
return false;
}
$polled = $this->poll[$elt];
$this->setAttribute('polled', $elt, $polled);
return $polled;
case 'remote':
$attr = self::ELT_REMOTE;
break;
case 'remote_auth':
$attr = self::ELT_REMOTE_AUTH;
break;
case 'remote_mbox':
$attr = self::ELT_REMOTE_MBOX;
break;
case 'subscribed':
if ($elt->inbox) {
return true;
}
$attr = self::ELT_IS_SUBSCRIBED;
break;
case 'vfolder':
$attr = self::ELT_VFOLDER;
break;
default:
return null;
}
return (bool) ($this->_elts[$s_elt] & $attr);
}