Fix so database_attachments::cleanup() does not remove attachments from other sessions (#1490542)

pull/300/head
Aleksander Machniak 9 years ago
parent 72b281ed84
commit e9ca5e0655

@ -35,6 +35,7 @@ CHANGELOG Roundcube Webmail
- 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
-------------

@ -22,7 +22,7 @@ class database_attachments extends filesystem_attachments
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
@ -153,9 +153,16 @@ class database_attachments extends filesystem_attachments
$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;

@ -36,7 +36,7 @@ require_once(RCUBE_PLUGINS_DIR . 'filesystem_attachments/filesystem_attachments.
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;
@ -46,13 +46,6 @@ class redundant_attachments extends filesystem_attachments
private $loaded;
/**
* Default constructor
*/
function init()
{
parent::init();
}
/**
* Loads plugin configuration and initializes cache object(s)
@ -68,15 +61,20 @@ class redundant_attachments extends filesystem_attachments
// load configuration
$this->load_config();
$ttl = 12 * 60 * 60; // 12 hours
$ttl = $rcmail->config->get('redundant_attachments_cache_ttl', $ttl);
$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;

Loading…
Cancel
Save