Typo fix
[squirrelmail.git] / functions / imap_mailbox.php
index 0a93ae01cde0590867a2de042f9dda775d0ecd01..774d90e39b1f37ea3af4909dcf900198fec419cc 100755 (executable)
@@ -5,7 +5,7 @@
  *
  * This implements all functions that manipulate mailboxes
  *
- * @copyright 1999-2017 The SquirrelMail Project Team
+ * @copyright 1999-2020 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
@@ -410,10 +410,18 @@ function sqimap_mailbox_exists ($imap_stream, $mailbox, $mailboxlist=null) {
  * 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
+ * @param boolean $handle_errors When TRUE, IMAP errors
+ *                               are handled herein, causing
+ *                               an error to be displayed on
+ *                               screen and execution to stop
+ *                               and when FALSE, error status
+ *                               is returned to the caller
+ *                               (OPTIONAL; default is TRUE)
  * @return array results of select command (on success - permanentflags, flags and rights)
+ *               (on failure (and when $handle_errors is false), empty array)
  * @since 1.0 or older
  */
-function sqimap_mailbox_select ($imap_stream, $mailbox) {
+function sqimap_mailbox_select ($imap_stream, $mailbox, $handle_errors=true) {
     if (empty($mailbox)) {
         return;
     }
@@ -439,7 +447,7 @@ function sqimap_mailbox_select ($imap_stream, $mailbox) {
     }
 
     $read = sqimap_run_command($imap_stream, 'SELECT ' . sqimap_encode_mailbox_name($mailbox),
-                               true, $response, $message);
+                               $handle_errors, $response, $message);
     $result = array();
     for ($i = 0, $cnt = count($read); $i < $cnt; $i++) {
         if (preg_match('/^\*\s+OK\s\[(\w+)\s(\w+)\]/',$read[$i], $regs)) {
@@ -456,7 +464,7 @@ function sqimap_mailbox_select ($imap_stream, $mailbox) {
             }
         }
     }
-    if (!isset($result['PERMANENTFLAGS'])) {
+    if (!empty($result) && !isset($result['PERMANENTFLAGS'])) {
         $result['PERMANENTFLAGS'] = $result['FLAGS'];
     }
     if (preg_match('/^\[(.+)\]/',$message, $regs)) {
@@ -849,10 +857,10 @@ function sqimap_mailbox_option_list($imap_stream, $show_selected = 0, $folder_sk
         $lowerbox = strtolower(sm_encode_html_special_chars($value));
         $sel = false;
         if ($show_selected != 0) {
-            reset($show_selected);
-            while (!$sel && (list($x, $val) = each($show_selected))) {
+            foreach ($show_selected as $val) {
                 if (strtolower($value) == strtolower(sm_encode_html_special_chars($val))) {
                     $sel = true;
+                    break;
                 }
             }
         }