protected function _getHeaders($id, $format, $key)
{
switch ($format) {
case self::HEADER_STREAM:
if (!isset($this->_data[$key][$id])) {
$data = null;
} elseif (is_object($this->_data[$key][$id])) {
switch ($key) {
case Horde_Imap_Client::FETCH_HEADERS:
$data = $this->_getHeaders($id, 0, $key);
break;
case Horde_Imap_Client::FETCH_HEADERTEXT:
case Horde_Imap_Client::FETCH_MIMEHEADER:
$data = $this->_data[$key][$id];
break;
}
} else {
$data = $this->_data[$key][$id];
}
return $this->_msgText(true, $data);
case self::HEADER_PARSE:
if (!isset($this->_data[$key][$id])) {
return new Horde_Mime_Headers();
} elseif (is_object($this->_data[$key][$id])) {
switch ($key) {
case Horde_Imap_Client::FETCH_HEADERS:
return clone $this->_data[$key][$id];
case Horde_Imap_Client::FETCH_HEADERTEXT:
case Horde_Imap_Client::FETCH_MIMEHEADER:
$hdrs = $this->_data[$key][$id];
break;
}
} else {
$hdrs = $this->_getHeaders($id, self::HEADER_STREAM, $key);
}
return Horde_Mime_Headers::parseHeaders($hdrs);
}
if (!isset($this->_data[$key][$id])) {
return '';
}
if (is_object($this->_data[$key][$id])) {
switch ($key) {
case Horde_Imap_Client::FETCH_HEADERS:
return $this->_data[$key][$id]->toString(array('nowrap' => true));
case Horde_Imap_Client::FETCH_HEADERTEXT:
case Horde_Imap_Client::FETCH_MIMEHEADER:
return strval($this->_data[$key][$id]);
}
}
return $this->_msgText(false, $this->_data[$key][$id]);
}