Improve bypass() method so it works "recursively"
This commit is contained in:
parent
9d174daf9f
commit
71619510c4
1 changed files with 20 additions and 4 deletions
|
@ -99,16 +99,16 @@ class kolab_storage_cache
|
||||||
// lock synchronization for this folder or wait if locked
|
// lock synchronization for this folder or wait if locked
|
||||||
$this->_sync_lock();
|
$this->_sync_lock();
|
||||||
|
|
||||||
// synchronize IMAP mailbox cache
|
// disable messages cache if configured to do so
|
||||||
$this->bypass(true);
|
$this->bypass(true);
|
||||||
|
|
||||||
|
// synchronize IMAP mailbox cache
|
||||||
$this->imap->folder_sync($this->folder->name);
|
$this->imap->folder_sync($this->folder->name);
|
||||||
|
|
||||||
// compare IMAP index with object cache index
|
// compare IMAP index with object cache index
|
||||||
$imap_index = $this->imap->index($this->folder->name);
|
$imap_index = $this->imap->index($this->folder->name);
|
||||||
$this->index = $imap_index->get();
|
$this->index = $imap_index->get();
|
||||||
|
|
||||||
$this->bypass(false);
|
|
||||||
|
|
||||||
// determine objects to fetch or to invalidate
|
// determine objects to fetch or to invalidate
|
||||||
if ($this->ready) {
|
if ($this->ready) {
|
||||||
// read cache index
|
// read cache index
|
||||||
|
@ -143,6 +143,8 @@ class kolab_storage_cache
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->bypass(false);
|
||||||
|
|
||||||
// remove lock
|
// remove lock
|
||||||
$this->_sync_unlock();
|
$this->_sync_unlock();
|
||||||
|
|
||||||
|
@ -813,11 +815,25 @@ class kolab_storage_cache
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($messages_cache) {
|
if ($messages_cache) {
|
||||||
|
// handle recurrent (multilevel) bypass() calls
|
||||||
|
if ($disable) {
|
||||||
|
$this->cache_bypassed += 1;
|
||||||
|
if ($this->cache_bypassed > 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->cache_bypassed -= 1;
|
||||||
|
if ($this->cache_bypassed > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch ($cache_bypass) {
|
switch ($cache_bypass) {
|
||||||
case 2:
|
case 2:
|
||||||
// Disable messages cache completely
|
// Disable messages cache completely
|
||||||
$this->imap->set_messages_caching(!$disable);
|
$this->imap->set_messages_caching(!$disable);
|
||||||
return;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
// We'll disable messages cache, but keep index cache.
|
// We'll disable messages cache, but keep index cache.
|
||||||
|
|
Loading…
Add table
Reference in a new issue