- Fix handling of folders with name "0" (#1487119)

release-0.6
alecpl 14 years ago
parent d2b27d1175
commit 44840971e8

@ -66,6 +66,7 @@ CHANGELOG Roundcube Webmail
- Add option for minimum length of autocomplete's string (#1486428)
- Fix operations on messages in unsubscribed folder (#1487107)
- Add support for shared folders (#1403507)
- Fix handling of folders with name "0" (#1487119)
RELEASE 0.4.2
-------------

@ -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);

@ -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);
}

@ -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'])) {

@ -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);
}

@ -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 = '*';
}

@ -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();

@ -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);
}

@ -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('&nbsp;&nbsp;&nbsp;&nbsp;', $folder['level']) . ($protected ? rcmail_localize_foldername($folder['id']) : $folder['name']);
$display_folder = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $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);

Loading…
Cancel
Save