[svn-commits] mjordan: branch 11 r381835 - /branches/11/apps/app_voicemail.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Feb 20 13:14:36 CST 2013


Author: mjordan
Date: Wed Feb 20 13:14:32 2013
New Revision: 381835

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=381835
Log:
Let vm_mailbox_snapshot_create's combine option apply to "Urgent" as well

The vm_mailbox_snapshot_create function has an option that combines the
contents of INBOX and Old into a single snapshot. The intent of this is that
both 'new' messages and 'deleted' messages are given in a single snapshot, as
some applications prefer this view of the voicemail world. Unfortunately, the
initial implementation ignored the "Urgent" folder. The "Urgent" folder is a
pseudo-INBOX, in that new messages left with the 'U' flag will be placed in
that folder as opposed to INBOX. Thus, the option failed the intent with which
it was added.

This patch makes it so that the "Urgent" folder is included in the snapshot
when that option is used.


Modified:
    branches/11/apps/app_voicemail.c

Modified: branches/11/apps/app_voicemail.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/apps/app_voicemail.c?view=diff&rev=381835&r1=381834&r2=381835
==============================================================================
--- branches/11/apps/app_voicemail.c (original)
+++ branches/11/apps/app_voicemail.c Wed Feb 20 13:14:32 2013
@@ -14975,8 +14975,9 @@
 	int i;
 	int this_index_only = -1;
 	int open = 0;
-	int inbox_index = 0;
-	int old_index = 1;
+	int inbox_index = get_folder_by_name("INBOX");
+	int old_index = get_folder_by_name("Old");
+	int urgent_index = get_folder_by_name("Urgent");
 
 	if (ast_strlen_zero(mailbox)) {
 		ast_log(LOG_WARNING, "Cannot create a mailbox snapshot since no mailbox was specified\n");
@@ -15018,15 +15019,21 @@
 
 	for (i = 0; i < mailbox_snapshot->folders; i++) {
 		int combining_old = 0;
-		if ((i == old_index) && (combine_INBOX_and_OLD)) {
+		/* Assume we are combining folders if:
+		 *  - The current index is the old folder index OR
+		 *  - The current index is urgent and we were looking for INBOX OR
+		 *  - The current index is INBOX and we were looking for Urgent
+		 */
+		if ((i == old_index || (i == urgent_index && this_index_only == inbox_index) || (i == inbox_index && this_index_only == urgent_index)) && (combine_INBOX_and_OLD)) {
 			combining_old = 1;
 		}
 
 		/* This if statement is confusing looking.  Here is what it means in english.
 		 * - If a folder is given to the function and that folder's index is not the one we are iterating over, skip it...
-		 * - Unless the folder provided is the INBOX folder and the current index is the OLD folder and we are combining OLD and INBOX msgs.
+		 * - Unless we are combining old and new messages and the current index is one of old, new, or urgent folders
 		 */
-		if ((this_index_only != -1) && (this_index_only != i) && !(combining_old && i == old_index && this_index_only == inbox_index)) {
+		if ((this_index_only != -1 && this_index_only != i) &&
+			!(combining_old && (i == old_index || i == urgent_index || i == inbox_index))) {
 			continue;
 		}
 




More information about the svn-commits mailing list