Changeset 2959 in subversion


Ignore:
Timestamp:
Sep 17, 2009 8:07:58 AM (4 years ago)
Author:
alec
Message:
  • Fix incorrect count of new messages in folder list when using multiple IMAP clients (#1485995)
  • Fix all folders checking for new messages with disabled caching (#1486128)
Location:
trunk/roundcubemail
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/roundcubemail/CHANGELOG

    r2957 r2959  
    22=========================== 
    33 
     4- Fix incorrect count of new messages in folder list when using multiple IMAP clients (#1485995) 
     5- Fix all folders checking for new messages with disabled caching (#1486128) 
    46- Support skins in 'archive' and 'markasjunk' plugins 
    57- Added 'html_editor' hook (#1486068) 
  • trunk/roundcubemail/program/steps/mail/check_recent.inc

    r2860 r2959  
    6969      } 
    7070    } 
     71    else { 
     72      send_unread_count($mbox_name); 
     73    } 
    7174  } 
    72   else if ($unseen = $IMAP->messagecount($mbox_name, 'UNSEEN', $check_all)) { 
    73     $OUTPUT->command('set_unread_count', $mbox_name, $unseen); 
     75  else if ($check_all) { 
     76    send_unread_count($mbox_name); 
    7477  } 
    7578} 
     
    7780$OUTPUT->send(); 
    7881 
     82 
     83function send_unread_count($mbox_name) 
     84{ 
     85    global $RCMAIL; 
     86 
     87    $old_unseen = $_SESSION['unseen_count'][$mbox_name]; 
     88    $unseen = $RCMAIL->imap->messagecount($mbox_name, 'UNSEEN', true); 
     89 
     90    if ($unseen != $old_unseen) 
     91      $RCMAIL->output->command('set_unread_count', $mbox_name, $unseen, ($mbox_name == 'INBOX')); 
     92 
     93    // @TODO: this data is doubled (session and cache tables) if caching is enabled 
     94    $_SESSION['unseen_count'][$mbox_name] = $unseen; 
     95} 
     96 
    7997?> 
  • trunk/roundcubemail/program/steps/mail/folders.inc

    r2758 r2959  
    6161      $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text()); 
    6262      $OUTPUT->command('set_unread_count', $mbox_name, 0); 
     63      $_SESSION['unseen_count'][$mbox_name] = 0; 
    6364    } 
    6465    else 
     
    6869 
    6970$OUTPUT->send($commands); 
     71 
    7072?> 
  • trunk/roundcubemail/program/steps/mail/getunread.inc

    r1917 r2959  
    2525{ 
    2626  $inbox = ($IMAP->get_mailbox_name() == 'INBOX'); 
    27   foreach ($a_folders as $mbox_row) 
    28     $OUTPUT->command('set_unread_count', $mbox_row, $IMAP->messagecount($mbox_row, 'UNSEEN'), $inbox && $mbox_row == 'INBOX'); 
     27  foreach ($a_folders as $mbox_row) { 
     28    $unseen = $IMAP->messagecount($mbox_row, 'UNSEEN', !isset($_SESSION['unseen_count'][$mbox_row])); 
     29    $_SESSION['unseen_count'][$mbox_row] = $unseen; 
     30 
     31    if ($unseen) { 
     32      $OUTPUT->command('set_unread_count', $mbox_row, $unseen, $inbox && $mbox_row == 'INBOX'); 
     33    } 
     34  } 
    2935} 
    3036 
    3137$OUTPUT->send(); 
     38 
    3239?> 
  • trunk/roundcubemail/program/steps/mail/list.inc

    r2634 r2959  
    6161  $a_headers = $IMAP->list_headers($mbox_name, NULL, $sort_col, $sort_order); 
    6262 
     63// count UNSEEN messages... 
     64$old_unseen = $_SESSION['unseen_count'][$mbox_name]; 
    6365$unseen = $count ? $IMAP->messagecount($mbox_name, 'UNSEEN', !empty($_REQUEST['_refresh'])) : 0; 
     66$_SESSION['unseen_count'][$mbox_name] = $unseen; 
     67 
     68// ...and update mailboxlist 
     69if ($unseen != $old_unseen) 
     70  $OUTPUT->command('set_unread_count', $mbox_name, $unseen, ($mbox_name == 'INBOX')); 
    6471 
    6572// update message count display 
     
    8188else 
    8289  $OUTPUT->show_message('nomessagesfound', 'notice'); 
    83    
    84 // update mailboxlist 
    85 $OUTPUT->command('set_unread_count', $mbox_name, $unseen, ($mbox_name == 'INBOX')); 
    8690 
    8791// send response 
  • trunk/roundcubemail/program/steps/mail/mark.inc

    r2758 r2959  
    6363  if ($flag == 'SEEN' || $flag == 'UNSEEN' || ($flag == 'DELETED' && !$CONFIG['skip_deleted'])) { 
    6464    $mbox_name = $IMAP->get_mailbox_name(); 
    65     $OUTPUT->command('set_unread_count', $mbox_name, $IMAP->messagecount($mbox_name, 'UNSEEN'), ($mbox_name == 'INBOX')); 
     65    $unseen = $IMAP->messagecount($mbox_name, 'UNSEEN'); 
     66    $old_unseen = $_SESSION['unseen_count'][$mbox_name]; 
     67    if ($old_unseen != $unseen) { 
     68      $OUTPUT->command('set_unread_count', $mbox_name, $unseen, ($mbox_name == 'INBOX')); 
     69      $_SESSION['unseen_count'][$mbox_name] = $unseen; 
     70    } 
    6671  } 
    6772  else if ($flag == 'DELETED' && $CONFIG['skip_deleted']) { 
     
    97102      $mbox = $IMAP->get_mailbox_name(); 
    98103      $unseen_count = $msg_count ? $IMAP->messagecount($mbox, 'UNSEEN') : 0; 
    99       $OUTPUT->command('set_unread_count', $mbox, $unseen_count, ($mbox == 'INBOX')); 
     104      $old_unseen = $_SESSION['unseen_count'][$mbox]; 
     105      if ($old_unseen != $unseen_count) { 
     106        $OUTPUT->command('set_unread_count', $mbox, $unseen_count, ($mbox == 'INBOX')); 
     107        $_SESSION['unseen_count'][$mbox] = $unseen_count; 
     108      } 
    100109      $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count)); 
    101110 
  • trunk/roundcubemail/program/steps/mail/move_del.inc

    r2930 r2959  
    103103  $mbox = $IMAP->get_mailbox_name(); 
    104104  $unseen_count = $msg_count ? $IMAP->messagecount($mbox, 'UNSEEN') : 0; 
    105   $OUTPUT->command('set_unread_count', $mbox, $unseen_count, ($mbox == 'INBOX')); 
     105  $old_unseen = $_SESSION['unseen_count'][$mbox]; 
     106   
     107  if ($old_unseen != $unseen_count) { 
     108    $OUTPUT->command('set_unread_count', $mbox, $unseen_count, ($mbox == 'INBOX')); 
     109    $_SESSION['unseen_count'][$mbox] = $unseen_count; 
     110  } 
    106111 
    107112  if ($RCMAIL->action=='moveto' && $target) { 
    108     $OUTPUT->command('set_unread_count', $target, $IMAP->messagecount($target, 'UNSEEN')); 
     113    $unseen_count = $IMAP->messagecount($target, 'UNSEEN', true); 
     114    $old_unseen = $_SESSION['unseen_count'][$target]; 
     115    if ($old_unseen != $unseen_count) { 
     116      $OUTPUT->command('set_unread_count', $target, $unseen_count); 
     117      $_SESSION['unseen_count'][$target] = $unseen_count; 
     118    } 
    109119  } 
    110120 
Note: See TracChangeset for help on using the changeset viewer.