diff options
| author | alecpl <alec@alec.pl> | 2010-11-12 10:47:04 +0000 | 
|---|---|---|
| committer | alecpl <alec@alec.pl> | 2010-11-12 10:47:04 +0000 | 
| commit | 44840971e8e405cc41f923eaff0a32d7accb496c (patch) | |
| tree | e5bdb35c732708b4ae8652369b4e9a599f2d5d4c /program | |
| parent | d2b27d11759cd1c668293a569aed1afaa7cfd741 (diff) | |
- Fix handling of folders with name "0" (#1487119)
Diffstat (limited to 'program')
| -rw-r--r-- | program/include/html.php | 2 | ||||
| -rw-r--r-- | program/include/main.inc | 4 | ||||
| -rw-r--r-- | program/include/rcmail.php | 2 | ||||
| -rw-r--r-- | program/include/rcube_imap.php | 54 | ||||
| -rw-r--r-- | program/include/rcube_imap_generic.php | 17 | ||||
| -rw-r--r-- | program/steps/mail/func.inc | 2 | ||||
| -rw-r--r-- | program/steps/mail/move_del.inc | 4 | ||||
| -rw-r--r-- | program/steps/settings/manage_folders.inc | 30 | 
8 files changed, 55 insertions, 60 deletions
| diff --git a/program/include/html.php b/program/include/html.php index b73c54a8c..27d1d7750 100644 --- a/program/include/html.php +++ b/program/include/html.php @@ -75,7 +75,7 @@ class html          $suffix = $attrib['nl'] || ($content && $attrib['nl'] !== false && !in_array($tagname, $inline_tags)) ? "\n" : '';          $tagname = self::$lc_tags ? strtolower($tagname) : $tagname; -        if ($content || in_array($tagname, self::$containers)) { +        if (isset($content) || in_array($tagname, self::$containers)) {              $templ = $attrib['noclose'] ? "<%s%s>%s" : "<%s%s>%s</%s>%s";              unset($attrib['noclose']);              return sprintf($templ, $tagname, self::attrib_string($attrib, $allowed_attrib), $content, $tagname, $suffix); diff --git a/program/include/main.inc b/program/include/main.inc index 31c9a0805..5bbc421af 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -1348,7 +1348,7 @@ function rcmail_build_folder_tree(&$arrFolders, $folder, $delm='/', $path='')      $currentFolder = substr($folder, 0, $pos);      // sometimes folder has a delimiter as the last character -    if (empty($subFolders)) +    if (!strlen($subFolders))        $virtual = false;      else if (!isset($arrFolders[$currentFolder]))        $virtual = true; @@ -1378,7 +1378,7 @@ function rcmail_build_folder_tree(&$arrFolders, $folder, $delm='/', $path='')    else      $arrFolders[$currentFolder]['virtual'] = $virtual; -  if (!empty($subFolders)) +  if (strlen($subFolders))      rcmail_build_folder_tree($arrFolders[$currentFolder]['folders'], $subFolders, $delm, $path.$delm);  } diff --git a/program/include/rcmail.php b/program/include/rcmail.php index 8fa9df72f..e76b1420a 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -782,7 +782,7 @@ class rcmail      if ($default_folders = $this->config->get('default_imap_folders')) {        $this->imap->set_default_mailboxes($default_folders);      } -    if (!empty($_SESSION['mbox'])) { +    if (isset($_SESSION['mbox'])) {        $this->imap->set_mailbox($_SESSION['mbox']);      }      if (isset($_SESSION['page'])) { diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index 14cf396de..a9ddf865c 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -565,7 +565,7 @@ class rcube_imap       */      function messagecount($mbox_name='', $mode='ALL', $force=false, $status=true)      { -        $mailbox = $mbox_name ? $this->mod_mailbox($mbox_name) : $this->mailbox; +        $mailbox = strlen($mbox_name) ? $this->mod_mailbox($mbox_name) : $this->mailbox;          return $this->_messagecount($mailbox, $mode, $force, $status);      } @@ -586,7 +586,7 @@ class rcube_imap      {          $mode = strtoupper($mode); -        if (empty($mailbox)) +        if (!strlen($mailbox))              $mailbox = $this->mailbox;          // count search set @@ -2551,7 +2551,7 @@ class rcube_imap          $fbox = $from_mbox;          $tbox = $to_mbox;          $to_mbox = $this->mod_mailbox($to_mbox); -        $from_mbox = $from_mbox ? $this->mod_mailbox($from_mbox) : $this->mailbox; +        $from_mbox = strlen($from_mbox) ? $this->mod_mailbox($from_mbox) : $this->mailbox;          list($uids, $all_mode) = $this->_parse_uids($uids, $from_mbox); @@ -2721,7 +2721,7 @@ class rcube_imap       */      function clear_mailbox($mbox_name=NULL)      { -        $mailbox = !empty($mbox_name) ? $this->mod_mailbox($mbox_name) : $this->mailbox; +        $mailbox = strlen($mbox_name) ? $this->mod_mailbox($mbox_name) : $this->mailbox;          // SELECT will set messages count for clearFolder()          if ($this->conn->select($mailbox)) { @@ -2874,7 +2874,7 @@ class rcube_imap          $a_mboxes = $this->_list_mailboxes($root, $filter);          foreach ($a_mboxes as $idx => $mbox_row) { -            if ($name = $this->mod_mailbox($mbox_row, 'out')) +            if (strlen($name = $this->mod_mailbox($mbox_row, 'out')))                  $a_out[] = $name;              unset($a_mboxes[$idx]);          } @@ -2978,7 +2978,7 @@ class rcube_imap          // modify names with root dir          foreach ($a_mboxes as $idx => $mbox_name) { -            if ($name = $this->mod_mailbox($mbox_name, 'out')) +            if (strlen($name = $this->mod_mailbox($mbox_name, 'out')))                  $a_folders[] = $name;              unset($a_mboxes[$idx]);          } @@ -3194,27 +3194,25 @@ class rcube_imap       */      function mailbox_exists($mbox_name, $subscription=false)      { -        if ($mbox_name) { -            if ($mbox_name == 'INBOX') -                return true; +        if ($mbox_name == 'INBOX') +            return true; -            $key  = $subscription ? 'subscribed' : 'existing'; -            $mbox = $this->mod_mailbox($mbox_name); +        $key  = $subscription ? 'subscribed' : 'existing'; +        $mbox = $this->mod_mailbox($mbox_name); -            if (is_array($this->icache[$key]) && in_array($mbox, $this->icache[$key])) -                return true; +        if (is_array($this->icache[$key]) && in_array($mbox, $this->icache[$key])) +            return true; -            if ($subscription) { -                $a_folders = $this->conn->listSubscribed('', $mbox); -            } -            else { -                $a_folders = $this->conn->listMailboxes('', $mbox); -	        } +        if ($subscription) { +            $a_folders = $this->conn->listSubscribed('', $mbox); +        } +        else { +            $a_folders = $this->conn->listMailboxes('', $mbox); +       } -            if (is_array($a_folders) && in_array($mbox, $a_folders)) { -                $this->icache[$key][] = $mbox; -                return true; -            } +        if (is_array($a_folders) && in_array($mbox, $a_folders)) { +            $this->icache[$key][] = $mbox; +            return true;          }          return false; @@ -3230,7 +3228,7 @@ class rcube_imap       */      function mod_mailbox($mbox_name, $mode='in')      { -        if (empty($mbox_name)) +        if (!strlen($mbox_name))              return '';          if ($mode == 'in') { @@ -3460,8 +3458,8 @@ class rcube_imap          if ($mailbox)              $mailbox = $this->mod_mailbox($mailbox); -        if ($this->get_capability('METADATA') ||  -            empty($mailbox) && $this->get_capability('METADATA-SERVER') +        if ($this->get_capability('METADATA') || +            (!strlen($mailbox) && $this->get_capability('METADATA-SERVER'))          ) {              return $this->conn->setMetadata($mailbox, $entries);          } @@ -3494,7 +3492,7 @@ class rcube_imap              $mailbox = $this->mod_mailbox($mailbox);          if ($this->get_capability('METADATA') ||  -            empty($mailbox) && $this->get_capability('METADATA-SERVER') +            (!strlen($mailbox) && $this->get_capability('METADATA-SERVER'))          ) {              return $this->conn->deleteMetadata($mailbox, $entries);          } @@ -3528,7 +3526,7 @@ class rcube_imap              $mailbox = $this->mod_mailbox($mailbox);          if ($this->get_capability('METADATA') ||  -            empty($mailbox) && $this->get_capability('METADATA-SERVER') +            !strlen(($mailbox) && $this->get_capability('METADATA-SERVER'))          ) {              return $this->conn->getMetadata($mailbox, $entries, $options);          } diff --git a/program/include/rcube_imap_generic.php b/program/include/rcube_imap_generic.php index 864c57193..8ee17c2ee 100644 --- a/program/include/rcube_imap_generic.php +++ b/program/include/rcube_imap_generic.php @@ -801,7 +801,7 @@ class rcube_imap_generic      function select($mailbox)      { -	    if (empty($mailbox)) { +	    if (!strlen($mailbox)) {  		    return false;  	    } @@ -852,7 +852,7 @@ class rcube_imap_generic       */      function status($mailbox, $items=array())      { -	    if (empty($mailbox)) { +	    if (!strlen($mailbox)) {  		    return false;  	    } @@ -886,11 +886,12 @@ class rcube_imap_generic      function checkForRecent($mailbox)      { -	    if (empty($mailbox)) { +	    if (!strlen($mailbox)) {  		    $mailbox = 'INBOX';  	    }  	    $this->select($mailbox); +  	    if ($this->selected == $mailbox) {  		    return $this->data['RECENT'];  	    } @@ -1618,10 +1619,6 @@ class rcube_imap_generic      function copy($messages, $from, $to)      { -	    if (empty($from) || empty($to)) { -	        return false; -	    } -  	    if (!$this->select($from)) {  	        return false;  	    } @@ -1638,10 +1635,6 @@ class rcube_imap_generic      function move($messages, $from, $to)      { -        if (!$from || !$to) { -            return false; -        } -          $r = $this->copy($messages, $from, $to);          if ($r) { @@ -1881,7 +1874,7 @@ class rcube_imap_generic      private function _listMailboxes($ref, $mailbox, $subscribed=false,          $status_opts=array(), $select_opts=array())      { -		if (empty($mailbox)) { +		if (!strlen($mailbox)) {  	        $mailbox = '*';  	    } diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 39551c1c0..be5c26142 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -46,7 +46,7 @@ if (!in_array($RCMAIL->action, $NOIMAP_ACTIONS) && !$RCMAIL->imap_connect()) {  }  // set imap properties and session vars -if ($mbox = get_input_value('_mbox', RCUBE_INPUT_GPC)) +if (strlen(trim($mbox = get_input_value('_mbox', RCUBE_INPUT_GPC))))    $IMAP->set_mailbox(($_SESSION['mbox'] = $mbox));  else if ($IMAP)    $_SESSION['mbox'] = $IMAP->get_mailbox_name(); diff --git a/program/steps/mail/move_del.inc b/program/steps/mail/move_del.inc index 4f52a60ca..e64c32742 100644 --- a/program/steps/mail/move_del.inc +++ b/program/steps/mail/move_del.inc @@ -28,7 +28,7 @@ $old_count = $IMAP->messagecount(NULL, $IMAP->threading ? 'THREADS' : 'ALL');  $old_pages = ceil($old_count / $IMAP->page_size);  // move messages -if ($RCMAIL->action=='moveto' && !empty($_POST['_uid']) && !empty($_POST['_target_mbox'])) { +if ($RCMAIL->action=='moveto' && !empty($_POST['_uid']) && strlen($_POST['_target_mbox'])) {      $count = sizeof(explode(',', ($uids = get_input_value('_uid', RCUBE_INPUT_POST))));      $target = get_input_value('_target_mbox', RCUBE_INPUT_POST);      $mbox = get_input_value('_mbox', RCUBE_INPUT_POST); @@ -116,7 +116,7 @@ else      $_SESSION['unseen_count'][$mbox] = $unseen_count;    } -  if ($RCMAIL->action=='moveto' && $target) { +  if ($RCMAIL->action=='moveto' && strlen($target)) {      rcmail_send_unread_count($target, true);    } diff --git a/program/steps/settings/manage_folders.inc b/program/steps/settings/manage_folders.inc index adcb5eecf..299a7b219 100644 --- a/program/steps/settings/manage_folders.inc +++ b/program/steps/settings/manage_folders.inc @@ -27,35 +27,39 @@ $RCMAIL->imap_connect();  // subscribe to one or more mailboxes  if ($RCMAIL->action=='subscribe')    { -  if ($mbox = get_input_value('_mbox', RCUBE_INPUT_POST, false, 'UTF7-IMAP')) +  $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, false, 'UTF7-IMAP'); +  if (strlen($mbox))      $IMAP->subscribe(array($mbox));    }  // unsubscribe one or more mailboxes  else if ($RCMAIL->action=='unsubscribe')    { -  if ($mbox = get_input_value('_mbox', RCUBE_INPUT_POST, false, 'UTF7-IMAP')) +  $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, false, 'UTF7-IMAP'); +  if (strlen($mbox))      $IMAP->unsubscribe(array($mbox));    }  // enable threading for one or more mailboxes  else if ($RCMAIL->action=='enable-threading')    { -  if ($mbox = get_input_value('_mbox', RCUBE_INPUT_POST, false, 'UTF7-IMAP')) +  $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, false, 'UTF7-IMAP'); +  if (strlen($mbox))      rcube_set_threading($mbox, true);    }  // enable threading for one or more mailboxes  else if ($RCMAIL->action=='disable-threading')    { -  if ($mbox = get_input_value('_mbox', RCUBE_INPUT_POST, false, 'UTF7-IMAP')) +  $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, false, 'UTF7-IMAP'); +  if (strlen($mbox))      rcube_set_threading($mbox, false);    }  // create a new mailbox  else if ($RCMAIL->action=='create-folder')    { -  if (!empty($_POST['_name'])) +  if (strlen(trim($_POST['_name'])))      {      $name = trim(get_input_value('_name', RCUBE_INPUT_POST, FALSE, 'UTF7-IMAP'));      $create = $IMAP->create_mailbox($name, TRUE); @@ -83,7 +87,7 @@ else if ($RCMAIL->action=='create-folder')  // rename a mailbox  else if ($RCMAIL->action=='rename-folder')    { -  if (!empty($_POST['_folder_oldname']) && !empty($_POST['_folder_newname'])) +  if (strlen(trim($_POST['_folder_oldname'])) && strlen(trim($_POST['_folder_newname'])))      {      $name_utf8 = trim(get_input_value('_folder_newname', RCUBE_INPUT_POST));      $oldname_utf8 = get_input_value('_folder_oldname', RCUBE_INPUT_POST); @@ -101,13 +105,13 @@ else if ($RCMAIL->action=='rename-folder')      foreach ($a_threaded as $key => $val)        if ($key == $oldname) {          unset($a_threaded[$key]); -	$a_threaded[$name] = true; +	    $a_threaded[$name] = true;          }        else if (preg_match($oldprefix, $key)) {          unset($a_threaded[$key]); -	$a_threaded[preg_replace($oldprefix, $name.$delimiter, $key)] = true;       +	    $a_threaded[preg_replace($oldprefix, $name.$delimiter, $key)] = true;        } -       +      $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded));      } @@ -163,7 +167,7 @@ else if ($RCMAIL->action=='delete-folder')    $mboxes_utf8 = get_input_value('_mboxes', RCUBE_INPUT_POST);    $mboxes = rcube_charset_convert($mboxes_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); -  if ($mboxes) +  if (strlen($mboxes))      $deleted = $IMAP->delete_mailbox(array($mboxes));    if ($OUTPUT->ajax_call && $deleted) @@ -284,7 +288,7 @@ function rcube_subscription_form($attrib)      $protected = ($CONFIG['protect_default_folders'] == true && in_array($folder['id'], $CONFIG['default_imap_folders']));      $classes = array($i%2 ? 'even' : 'odd');      $folder_js = JQ($folder['id']); -    $display_folder = str_repeat('    ', $folder['level']) . ($protected ? rcmail_localize_foldername($folder['id']) : $folder['name']); +    $display_folder = str_repeat('    ', $folder['level']) . Q($protected ? rcmail_localize_foldername($folder['id']) : $folder['name']);      $folder_utf8 = rcube_charset_convert($folder['id'], 'UTF7-IMAP');      if ($folder['virtual']) { @@ -298,7 +302,7 @@ function rcube_subscription_form($attrib)      $table->add_row(array('id' => 'rcmrow'.$idx, 'class' => join(' ', $classes))); -    $table->add('name', Q($display_folder)); +    $table->add('name', $display_folder);      $table->add('msgcount', (($folder['virtual'] || $noselect) ? '' : $IMAP->messagecount($folder['id'], 'ALL', false, false)));      $table->add('subscribed', $checkbox_subscribe->show(($subscribed ? $folder_utf8 : ''),        array('value' => $folder_utf8, 'disabled' => ($protected || $noselect) ? 'disabled' : ''))); @@ -320,7 +324,7 @@ function rcube_subscription_form($attrib)      $a_js_folders['rcmrow'.$idx] = array($folder_utf8, $display_folder, $protected || $folder['virtual']);    } -  rcmail::get_instance()->plugins->exec_hook('folders_list', array('table'=>$table)); +  rcmail::get_instance()->plugins->exec_hook('folders_list', array('table' => $table));    $OUTPUT->add_gui_object('subscriptionlist', $attrib['id']);    $OUTPUT->set_env('subscriptionrows', $a_js_folders); | 
