| | |
| | | // Save current message from internal cache |
| | | if ($message = $this->icache['__message']) { |
| | | // clean up some object's data |
| | | $object = $this->message_object_prepare($message['object']); |
| | | $this->message_object_prepare($message['object']); |
| | | |
| | | // calculate current md5 sum |
| | | $md5sum = md5(serialize($object)); |
| | | $md5sum = md5(serialize($message['object'])); |
| | | |
| | | if ($message['md5sum'] != $md5sum) { |
| | | $this->add_message($message['mailbox'], $object, !$message['exists']); |
| | | $this->add_message($message['mailbox'], $message['object'], !$message['exists']); |
| | | } |
| | | |
| | | $this->icache['__message']['md5sum'] = $md5sum; |
| | |
| | | |
| | | /** |
| | | * Prepares message object to be stored in database. |
| | | * |
| | | * @param rcube_message_header|rcube_message_part |
| | | */ |
| | | private function message_object_prepare($msg) |
| | | private function message_object_prepare(&$msg) |
| | | { |
| | | // Remove body too big (>25kB) |
| | | if ($msg->body && strlen($msg->body) > 25 * 1024) { |
| | |
| | | list($msg->ctype_primary, $msg->ctype_secondary) = explode('/', $msg->mimetype); |
| | | } |
| | | |
| | | unset($msg->replaces); |
| | | |
| | | if (is_array($msg->structure->parts)) { |
| | | foreach ($msg->structure->parts as $idx => $part) { |
| | | $msg->structure->parts[$idx] = $this->message_object_prepare($part); |
| | | foreach ($msg->structure->parts as $part) { |
| | | $this->message_object_prepare($part); |
| | | } |
| | | } |
| | | |
| | | return $msg; |
| | | if (is_array($msg->parts)) { |
| | | foreach ($msg->parts as $part) { |
| | | $this->message_object_prepare($part); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |