From 46f7b7096450939fe03c95aa81ce06ae4bfca89d Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Mon, 28 Mar 2016 06:51:43 -0400 Subject: [PATCH] Enable reply/reply-all/forward buttons also in preview frame of message/rfc822 --- program/lib/Roundcube/rcube_imap_cache.php | 44 +++++++++++--------------------------------- 1 files changed, 11 insertions(+), 33 deletions(-) diff --git a/program/lib/Roundcube/rcube_imap_cache.php b/program/lib/Roundcube/rcube_imap_cache.php index 5191321..a402c18 100644 --- a/program/lib/Roundcube/rcube_imap_cache.php +++ b/program/lib/Roundcube/rcube_imap_cache.php @@ -1,6 +1,6 @@ <?php -/* +/** +-----------------------------------------------------------------------+ | This file is part of the Roundcube Webmail client | | Copyright (C) 2005-2012, The Roundcube Dev Team | @@ -99,7 +99,6 @@ ); - /** * Object constructor. * @@ -132,7 +131,6 @@ $this->messages_table = $db->table_name('cache_messages', true); } - /** * Cleanup actions (on shutdown). */ @@ -141,7 +139,6 @@ $this->save_icache(); $this->icache = null; } - /** * Set cache mode @@ -152,7 +149,6 @@ { $this->mode = $mode; } - /** * Return (sorted) messages index (UIDs). @@ -262,7 +258,6 @@ return $data; } - /** * Return messages thread. * If threaded index doesn't exist or is invalid, will be updated. @@ -317,7 +312,6 @@ return $index['object']; } - /** * Returns list of messages (headers). See rcube_imap::fetch_headers(). @@ -380,7 +374,6 @@ return $result; } - /** * Returns message data. @@ -448,7 +441,6 @@ return $message; } - /** * Saves the message in cache. @@ -522,7 +514,6 @@ $this->db->set_option('ignore_key_errors', false); } - /** * Sets the flag for specified message. * @@ -562,6 +553,8 @@ } } + $binary_check = $this->db->db_provider == 'oracle' ? "BITAND(`flags`, %d)" : "(`flags` & %d)"; + $this->db->query( "UPDATE {$this->messages_table}" ." SET `expires` = ". ($this->ttl ? $this->db->now($this->ttl) : 'NULL') @@ -569,10 +562,9 @@ ." WHERE `user_id` = ?" ." AND `mailbox` = ?" .(!empty($uids) ? " AND `uid` IN (".$this->db->array2list($uids, 'integer').")" : "") - ." AND (`flags` & $idx) ".($enabled ? "= 0" : "= $idx"), + ." AND " . sprintf($binary_check, $idx) . ($enabled ? " = 0" : " = $idx"), $this->userid, $mailbox); } - /** * Removes message(s) from cache. @@ -609,7 +601,6 @@ $this->userid, $mailbox); } } - /** * Clears index cache. @@ -650,7 +641,6 @@ } } - /** * Clears thread cache. * @@ -675,7 +665,6 @@ } } - /** * Clears the cache. * @@ -688,7 +677,6 @@ $this->remove_thread($mailbox); $this->remove_message($mailbox, $uids); } - /** * Delete expired cache entries @@ -708,7 +696,6 @@ $db->query("DELETE FROM ".$db->table_name('cache_thread', true) ." WHERE `expires` < $now"); } - /** * Fetches index data from database @@ -746,7 +733,6 @@ return null; } - /** * Fetches thread data from database */ @@ -779,7 +765,6 @@ return null; } - /** * Saves index data into database @@ -834,7 +819,6 @@ $this->db->set_option('ignore_key_errors', false); } - /** * Saves thread data into database */ @@ -884,7 +868,6 @@ $this->db->set_option('ignore_key_errors', false); } - /** * Checks index/thread validity @@ -1003,14 +986,13 @@ return false; } // ... and max UID - if ($object->max() != $this->imap->id2uid($mbox_data['EXISTS'], $mailbox, true)) { + if ($object->max() != $this->imap->id2uid($mbox_data['EXISTS'], $mailbox)) { return false; } } return true; } - /** * Synchronizes the mailbox. @@ -1188,7 +1170,6 @@ $this->icache[$mailbox]['index']['object'] = $data; } - /** * Converts cache row into message object. * @@ -1212,7 +1193,6 @@ return $message; } - /** * Saves message stored in internal cache */ @@ -1234,7 +1214,6 @@ } } - /** * Prepares message object to be stored in database. * @@ -1243,12 +1222,14 @@ private function message_object_prepare(&$msg, &$size = 0) { // Remove body too big - if ($msg->body && ($length = strlen($msg->body))) { - $size += $length; + if (isset($msg->body)) { + $length = strlen($msg->body); - if ($size > $this->threshold * 1024) { - $size -= $length; + if ($msg->body_modified || $size + $length > $this->threshold * 1024) { unset($msg->body); + } + else { + $size += $length; } } @@ -1272,7 +1253,6 @@ } } - /** * Fetches index data from IMAP server */ @@ -1293,7 +1273,6 @@ return $index; } - /** * Fetches thread data from IMAP server */ @@ -1310,7 +1289,6 @@ return new rcube_result_thread($mailbox, '* THREAD'); } - } // for backward compat. -- Gitblit v1.9.1