Bug #9138: Fix sentmail selection
authorMichael M Slusarz <slusarz@curecanti.org>
Wed, 11 Aug 2010 06:58:56 +0000 (00:58 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Wed, 11 Aug 2010 06:58:56 +0000 (00:58 -0600)
imp/lib/Prefs/Ui.php
imp/templates/prefs/sentmail.html

index 55c6d45..377d23c 100644 (file)
@@ -1268,20 +1268,23 @@ class IMP_Prefs_Ui
         }
 
         $sent_mail_folder = $ui->vars->sent_mail_folder;
-        if (empty($sent_mail_folder)) {
-            $sent_mail_new = $GLOBALS['injector']->getInstance('IMP_Imap')->getOb()->appendNamespace(Horde_String::convertCharset($ui->vars->sent_mail_folder_new, $GLOBALS['registry']->getCharset(), 'UTF7-IMAP'));
-        } elseif (($sent_mail_folder == '-1') &&
+        if (empty($sent_mail_folder) && $ui->vars->sent_mail_folder_new) {
+            $sent_mail_folder = $GLOBALS['injector']->getInstance('IMP_Imap')->getOb()->appendNamespace(Horde_String::convertCharset($ui->vars->sent_mail_folder_new, $GLOBALS['registry']->getCharset(), 'UTF7-IMAP'));
+        } elseif (($sent_mail_folder == "\1default") &&
                   ($sm_default = $prefs->getDefault('sent_mail_folder'))) {
+            /* Use \1 as the prefix to differentiate from a IMAP mailbox
+             * potentially named 'default'. \1 is theoretically a valid
+             * IMAP mailbox character, but it is highly unlikely it exists
+             * anywhere (and we can't use \0 in form data). */
             $sent_mail_folder = $GLOBALS['injector']->getInstance('IMP_Imap')->getOb()->appendNamespace($sm_default);
         }
 
-        if (empty($sent_mail_folder)) {
-            return false;
-        }
-
-        $imp_folder = $GLOBALS['injector']->getInstance('IMP_Folder');
-        if (!$imp_folder->exists($sent_mail_folder)) {
-            $imp_folder->create($sent_mail_folder, $prefs->getValue('subscribe'));
+        if ($sent_mail_folder) {
+            $imp_folder = $GLOBALS['injector']->getInstance('IMP_Folder');
+            if (!$imp_folder->exists($sent_mail_folder) &&
+                !$imp_folder->create($sent_mail_folder, $prefs->getValue('subscribe'))) {
+                return false;
+            }
         }
 
         return $GLOBALS['injector']->getInstance('IMP_Identity')->setValue('sent_mail_folder', $sent_mail_folder);
index 9fcd88f..54ce6c0 100644 (file)
@@ -5,7 +5,7 @@
  <div>
   <select name="sent_mail_folder" id="sent_mail_folder">
    <option value=""><gettext>None</gettext></option>
-   <option value="&#000;default" selected="selected"><gettext>Use Default Value</gettext></option>
+   <option value="&#001;default" selected="selected"><gettext>Use Default Value</gettext></option>
    <tag:flist />
   </select>
  </div>