Thomas Bruederli wrote:
I cannot reproduce this behavior. However, I added the following to
program/steps/mail/func.inc to make sure that the correct mailbox is
stored within the session:

if (empty($_SESSION['mbox']))
  $_SESSION['mbox'] = $IMAP->get_mailbox_name();

Regards,
Thomas


I couldn't get this patch to work, and in fact I don't believe from looking at it that it would address the issue. The only place anywhere in the code that $_SESSION['mbox'] is set is in func.inc:

// set imap properties and session vars
if (strlen($_GET['_mbox']))
  {
  $IMAP->set_mailbox($_GET['_mbox']);
  $_SESSION['mbox'] = $_GET['_mbox'];
  }

If I put your snippet before this it would just be overwritten, and if I put it after it would overwrite it with an incorrect value.

The really weird thing about this bug is that when I log $_GET['_mbox'], I'm never able to observe _GET as the wrong value (the last value in the folders array). I logged dozens of lines of code to try to pinpoint where else $_SESSION['mbox'] was being assigned and I just couldn't find it.

To summarize the issues, the bug can be observed by following these steps:

1) Login
2) Click on the 'Round Cube Webmail' icon on the top left corner
3) Mark any Read message as Unread - Observe that the Unread number does not change in the folder list
4) Navigate to another folder by clicking on it on the left column
5) Navigate back to the Inbox - Observe that the Unread status has not been saved 6) repeat step 3. Observe that the Unread number now *does* change and that the status is correctly saved.

The problem is that the program is attempting to flag a message in a mailbox that doesn't exist because it's looking in the wrong mailbox. It's looking in the mailbox that's stored in the SESSION['mbox'] and the SESSION['mbox'] is inexplicably set to the last value in the array $rcmail_config['default_imap_folders'] defined in main.inc.php.

SESSION['mbox'] is only ever explicitly set in func.inc where it is assigned to a $_GET value.

I know this is hard to follow, but if anyone who can reproduce the error has any time to look at it or a decent way to work around it, I'd really appreciate it!

-Charles



Reply via email to