phpdoc source parsing locks on trailing comments.
[squirrelmail.git] / functions / imap_mailbox.php
index 921ec31b2099ff2e5ef4cf77ba6750eb3ee38b3e..d8eecb2867bdf4a5f6907a5221cf5af8ea376dda 100755 (executable)
@@ -339,7 +339,7 @@ function sqimap_mailbox_exists ($imap_stream, $mailbox, $mailboxlist=null) {
 
 /**
  * Selects a mailbox
- * Before 1.3.0 used more arguments and returned data depended on those argumements.
+ * Before 1.3.0 used more arguments and returned data depended on those arguments.
  * @param stream $imap_stream imap connection resource
  * @param string $mailbox mailbox name
  * @return array results of select command (on success - permanentflags, flags and rights)
@@ -658,7 +658,11 @@ function sqimap_mailbox_parse ($line) {
  */
 function sqimap_mailbox_option_list($imap_stream, $show_selected = 0, $folder_skip = 0, $boxes = 0,
                                     $flag = 'noselect', $use_long_format = false ) {
-    global $username, $data_dir;
+    global $username, $data_dir, $translate_special_folders, $sent_folder, 
+        $trash_folder, $draft_folder;
+
+    $delimiter = sqimap_get_delimiter($imap_stream);
+
     $mbox_options = '';
     if ( $use_long_format ) {
         $shorten_box_names = 0;
@@ -688,10 +692,39 @@ function sqimap_mailbox_option_list($imap_stream, $show_selected = 0, $folder_sk
                 switch ($shorten_box_names)
                 {
                   case 2:   /* delimited, style = 2 */
-                    $box2 = str_replace('  ', '. ', htmlspecialchars($boxes_part['formatted']));
+                      if ($translate_special_folders && $boxes_part['unformatted-dm']==$sent_folder) {
+                          /*
+                           * calculate pad level from number of delimiters. do it inside if control in order 
+                           * to reduce number of calculations. Other folders don't need it.
+                           */
+                          $pad = str_pad('',7 * (count(explode($delimiter,$boxes_part['unformatted-dm']))-1),'. ');
+                          // i18n: Name of Sent folder
+                          $box2 = $pad . _("Sent");
+                      } elseif ($translate_special_folders && $boxes_part['unformatted-dm']==$trash_folder) {
+                          $pad = str_pad('',7 * (count(explode($delimiter,$boxes_part['unformatted-dm']))-1),'. ');
+                          // i18n: Name of Trash folder
+                          $box2 = $pad . _("Trash");
+                      } elseif ($translate_special_folders && $boxes_part['unformatted-dm']==$draft_folder) {
+                          $pad = str_pad('',7 * (count(explode($delimiter,$boxes_part['unformatted-dm']))-1),'. ');
+                          // i18n: Name of Drafts folder
+                          $box2 = $pad . _("Drafts");
+                      } else {
+                          $box2 = str_replace('  ', '. ', htmlspecialchars($boxes_part['formatted']));
+                      }
                     break;
                   case 1:   /* indent, style = 1 */
-                    $box2 = str_replace('  ', '  ', htmlspecialchars($boxes_part['formatted']));
+                      if ($translate_special_folders && $boxes_part['unformatted-dm']==$sent_folder) {
+                          $pad = str_pad('',12 * (count(explode($delimiter,$boxes_part['unformatted-dm']))-1),'  ');
+                          $box2 = $pad . _("Sent");
+                      } elseif ($translate_special_folders && $boxes_part['unformatted-dm']==$trash_folder) {
+                          $pad = str_pad('',12 * (count(explode($delimiter,$boxes_part['unformatted-dm']))-1),'  ');
+                          $box2 = $pad . _("Trash");
+                      } elseif ($translate_special_folders && $boxes_part['unformatted-dm']==$draft_folder) {
+                          $pad = str_pad('',12 * (count(explode($delimiter,$boxes_part['unformatted-dm']))-1),'  ');
+                          $box2 = $pad . _("Drafts");
+                      } else {
+                          $box2 = str_replace('  ', '  ', htmlspecialchars($boxes_part['formatted']));
+                      }
                     break;
                   default:  /* default, long names, style = 0 */
                     $box2 = str_replace(' ', ' ', htmlspecialchars(imap_utf7_decode_local($boxes_part['unformatted-disp'])));
@@ -1152,17 +1185,27 @@ function sqimap_fill_mailbox_tree($mbx_ary, $mbxs=false,$imap_stream) {
  * @since 1.5.0
  */
 function sqimap_utf7_decode_mbx_tree(&$mbx_tree) {
+    global $draft_folder, $sent_folder, $trash_folder, $translate_special_folders;
+
+    /* decode folder name and set mailboxname_sub */
+    if ($translate_special_folders && strtoupper($mbx_tree->mailboxname_full) == 'INBOX') {
+        $mbx_tree->mailboxname_sub = _("INBOX");
+    } elseif ($translate_special_folders && $mbx_tree->mailboxname_full == $draft_folder) {
+        $mbx_tree->mailboxname_sub = _("Drafts");
+    } elseif ($translate_special_folders && $mbx_tree->mailboxname_full == $sent_folder) {
+        $mbx_tree->mailboxname_sub = _("Sent");
+    } elseif ($translate_special_folders && $mbx_tree->mailboxname_full == $trash_folder) {
+        $mbx_tree->mailboxname_sub = _("Trash");
+    } else {
+        $mbx_tree->mailboxname_sub = imap_utf7_decode_local($mbx_tree->mailboxname_sub);
+    }
 
-   if (strtoupper($mbx_tree->mailboxname_full) == 'INBOX')
-       $mbx_tree->mailboxname_sub = _("INBOX");
-   else
-       $mbx_tree->mailboxname_sub = imap_utf7_decode_local($mbx_tree->mailboxname_sub);
-   if ($mbx_tree->mbxs) {
-      $iCnt = count($mbx_tree->mbxs);
-      for ($i=0;$i<$iCnt;++$i) {
+    if ($mbx_tree->mbxs) {
+        $iCnt = count($mbx_tree->mbxs);
+        for ($i=0;$i<$iCnt;++$i) {
             sqimap_utf7_decode_mbx_tree($mbx_tree->mbxs[$i]);
-      }
-   }
+        }
+    }
 }
 
 /**
@@ -1319,5 +1362,3 @@ function sqimap_mailbox_is_noinferiors($oImapStream,$sImapFolder,&$oBoxes) {
     }
     return false;
 }
-
-?>