Allow to store email message references for note objects (link format tentative) + store message-id in cache for querying

This commit is contained in:
Thomas Bruederli 2014-04-14 18:25:04 +02:00
parent e25fd88b73
commit e0bc40f160
2 changed files with 36 additions and 12 deletions

View file

@ -502,6 +502,11 @@ abstract class kolab_format
return array();
}
/**
* Utility function to extract object attachment data
*
* @param array Hash array reference to append attachment data into
*/
protected function get_attachments(&$object)
{
// handle attachments
@ -520,13 +525,19 @@ abstract class kolab_format
'content' => $content,
);
}
else if (substr($attach->uri(), 0, 4) == 'http') {
else if (in_array(substr($attach->uri(), 0, 4), array('http','imap'))) {
$object['links'][] = $attach->uri();
}
}
}
protected function set_attachments($object)
/**
* Utility function to set attachment properties to the kolabformat object
*
* @param array Object data as hash array
* @param boolean True to always overwrite attachment information
*/
protected function set_attachments($object, $write = true)
{
// save attachments
$vattach = new vectorattachment;
@ -537,16 +548,17 @@ abstract class kolab_format
$attach->setLabel((string)$attr['name']);
$attach->setUri('cid:' . $cid, $attr['mimetype'] ?: 'application/octet-stream');
if ($attach->isValid()) {
$vattach->push($attach);
$vattach->push($attach);
$write = true;
}
else {
rcube::raise_error(array(
'code' => 660,
'type' => 'php',
'file' => __FILE__,
'line' => __LINE__,
'message' => "Invalid attributes for attachment $cid: " . var_export($attr, true),
), true);
rcube::raise_error(array(
'code' => 660,
'type' => 'php',
'file' => __FILE__,
'line' => __LINE__,
'message' => "Invalid attributes for attachment $cid: " . var_export($attr, true),
), true);
}
}
@ -554,8 +566,11 @@ abstract class kolab_format
$attach = new Attachment;
$attach->setUri($link, 'unknown');
$vattach->push($attach);
$write = true;
}
$this->obj->setAttachments($vattach);
if ($write) {
$this->obj->setAttachments($vattach);
}
}
}

View file

@ -109,10 +109,19 @@ class kolab_format_note extends kolab_format
{
$tags = array();
foreach ((array) $this->data['categories'] as $cat) {
foreach ((array)$this->data['categories'] as $cat) {
$tags[] = rcube_utils::normalize_string($cat);
}
// add tag for message references
foreach ((array)$this->data['links'] as $link) {
$url = parse_url($link);
if ($url['scheme'] == 'imap') {
parse_str($url['query'], $param);
$tags[] = 'ref:' . trim($param['message-id'] ?: urldecode($url['fragment']), '<> ');
}
}
return $tags;
}