Changeset 5251 in subversion


Ignore:
Timestamp:
Sep 20, 2011 7:55:59 AM (21 months ago)
Author:
alec
Message:
  • Fix cached indexes validation after removing messages when skip_deleted=true
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/roundcubemail/program/include/rcube_imap_cache.php

    r5233 r5251  
    814814 
    815815        // Folder is empty but cache isn't 
    816         if (empty($mbox_data['EXISTS']) && (!empty($index['seq']) || !empty($index['tree']))) { 
    817             $this->clear($mailbox); 
    818             $exists = false; 
     816        if (empty($mbox_data['EXISTS'])) { 
     817            if (!empty($index['seq']) || !empty($index['tree'])) { 
     818                $this->clear($mailbox); 
     819                $exists = false; 
     820                return false; 
     821            } 
     822        } 
     823        // Folder is not empty but cache is 
     824        else if (empty($index['seq']) && empty($index['tree'])) { 
     825            unset($this->icache[$mailbox][$is_thread ? 'thread' : 'index']); 
    819826            return false; 
    820827        } 
     
    881888 
    882889                if (!empty($ids)) { 
    883                     $index = null; // cache invalid 
     890                    return false; 
    884891                } 
    885892            } 
     
    9971004            $index['modseq'], $qresync); 
    9981005 
     1006        $invalidated = false; 
     1007 
    9991008        if (!empty($result)) { 
    10001009            foreach ($result as $id => $msg) { 
     
    10031012                if ($this->skip_deleted && !empty($msg->flags['DELETED'])) { 
    10041013                    $this->remove_message($mailbox, $uid); 
     1014 
     1015                    if (!$invalidated) { 
     1016                        $invalidated = true; 
     1017                        // Invalidate thread indexes (?) 
     1018                        $this->remove_thread($mailbox); 
     1019                        // Invalidate index 
     1020                        $index['valid'] = false; 
     1021                    } 
    10051022                    continue; 
    10061023                } 
     
    10371054                    // Invalidate thread indexes (?) 
    10381055                    $this->remove_thread($mailbox); 
     1056                    // Invalidate index 
     1057                    $index['valid'] = false; 
    10391058                } 
    10401059            } 
Note: See TracChangeset for help on using the changeset viewer.