Fix so database_attachments::cleanup() does not remove attachments from other sessions (#1490542)
| | |
| | | - Fix bug where message content could overlap attachments list in Larry skin (#1490479) |
| | | - Fix so microseconds macro (u) in log_date_format works (#1490446) |
| | | - Fix so unrecognized TNEF attachments are displayed on the list of attachments (#1490351) |
| | | - Fix so database_attachments::cleanup() does not remove attachments from other sessions (#1490542) |
| | | |
| | | RELEASE 1.1.3 |
| | | ------------- |
| | |
| | | protected $cache; |
| | | |
| | | // A prefix for the cache key used in the session and in the key field of the cache table |
| | | protected $prefix = "db_attach"; |
| | | const PREFIX = "ATTACH"; |
| | | |
| | | /** |
| | | * Save a newly uploaded attachment |
| | |
| | | $ttl = 12 * 60 * 60; // default: 12 hours |
| | | $ttl = $rcmail->config->get('database_attachments_cache_ttl', $ttl); |
| | | $type = $rcmail->config->get('database_attachments_cache', 'db'); |
| | | $prefix = self::PREFIX; |
| | | |
| | | // Add session identifier to the prefix to prevent from removing attachments |
| | | // in other sessions of the same user (#1490542) |
| | | if ($id = session_id()) { |
| | | $prefix .= $id; |
| | | } |
| | | |
| | | // Init SQL cache (disable cache data serialization) |
| | | $this->cache = $rcmail->get_cache($this->prefix, $type, $ttl, false); |
| | | $this->cache = $rcmail->get_cache($prefix, $type, $ttl, false); |
| | | } |
| | | |
| | | return $this->cache; |
| | |
| | | class redundant_attachments extends filesystem_attachments |
| | | { |
| | | // A prefix for the cache key used in the session and in the key field of the cache table |
| | | private $prefix = "ATTACH"; |
| | | const PREFIX = "ATTACH"; |
| | | |
| | | // rcube_cache instance for SQL DB |
| | | private $cache; |
| | |
| | | |
| | | private $loaded; |
| | | |
| | | /** |
| | | * Default constructor |
| | | */ |
| | | function init() |
| | | { |
| | | parent::init(); |
| | | } |
| | | |
| | | /** |
| | | * Loads plugin configuration and initializes cache object(s) |
| | |
| | | |
| | | $ttl = 12 * 60 * 60; // 12 hours |
| | | $ttl = $rcmail->config->get('redundant_attachments_cache_ttl', $ttl); |
| | | $prefix = self::PREFIX; |
| | | |
| | | if ($id = session_id()) { |
| | | $prefix .= $id; |
| | | } |
| | | |
| | | // Init SQL cache (disable cache data serialization) |
| | | $this->cache = $rcmail->get_cache($this->prefix, 'db', $ttl, false); |
| | | $this->cache = $rcmail->get_cache($prefix, 'db', $ttl, false); |
| | | |
| | | // Init memcache (fallback) cache |
| | | if ($rcmail->config->get('redundant_attachments_memcache')) { |
| | | $this->mem_cache = $rcmail->get_cache($this->prefix, 'memcache', $ttl, false); |
| | | $this->mem_cache = $rcmail->get_cache($prefix, 'memcache', $ttl, false); |
| | | } |
| | | |
| | | $this->loaded = true; |