protected function _convertCatenateUrl($url)
{
$e = $part = null;
$url = new Horde_Imap_Client_Url_Imap($url);
if (!is_null($url->mailbox) && !is_null($url->uid)) {
try {
$status_res = is_null($url->uidvalidity) ? null : $this->status($url->mailbox, Horde_Imap_Client::STATUS_UIDVALIDITY);
if (is_null($status_res) || $status_res['uidvalidity'] == $url->uidvalidity) {
if (!isset($this->_temp['catenate_ob'])) {
$this->_temp['catenate_ob'] = new Horde_Imap_Client_Socket_Catenate($this);
}
$part = $this->_temp['catenate_ob']->fetchFromUrl($url);
}
} catch (Horde_Imap_Client_Exception $e) {
}
}
if (is_null($part)) {
$message = 'Bad IMAP URL given in CATENATE data: ' . strval($url);
if ($e) {
$message .= ' ' . $e->getMessage();
}
throw new InvalidArgumentException($message);
}
return $part;
}