Skip to content

Commit

Permalink
Several bugfixes; see CHANGELOG for details
Browse files Browse the repository at this point in the history
  • Loading branch information
thomascube committed Aug 4, 2006
1 parent c4e7e4f commit fa4cd20
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 44 deletions.
9 changes: 9 additions & 0 deletions CHANGELOG
@@ -1,6 +1,15 @@
CHANGELOG RoundCube Webmail
---------------------------

2006/08/04 (thomasb)
----------
- Fixed Bug in saving identities (Ticket #1483915)
- Set folder name in window title (Bug #1483919)
- Don't add imap_root to INBOX path (Bug #1483816)
- Attempt to create default folders only after login
- Avoid usage of $CONFIG in rcube_imap class


2006/07/30 (thomasb)
----------
- Alter links in HTML messages (Bug #1326402)
Expand Down
3 changes: 2 additions & 1 deletion config/main.inc.php.dist
Expand Up @@ -137,7 +137,8 @@ $rcmail_config['sent_mbox'] = 'Sent';
// leave blank if they should be deleted directly
$rcmail_config['trash_mbox'] = 'Trash';

// display these folders separately in the mailbox list
// display these folders separately in the mailbox list.
// these folders will automatically be created if they do not exist
$rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash');

// protect the default folders from renames, deletes, and subscription changes
Expand Down
10 changes: 6 additions & 4 deletions program/include/main.inc
Expand Up @@ -205,9 +205,6 @@ function rcmail_imap_init($connect=FALSE)
if ($CONFIG['enable_caching']===TRUE)
$IMAP->set_caching(TRUE);

if (is_array($CONFIG['default_imap_folders']))
$IMAP->set_default_mailboxes($CONFIG['default_imap_folders']);

// set pagesize from config
if (isset($CONFIG['pagesize']))
$IMAP->set_pagesize($CONFIG['pagesize']);
Expand All @@ -224,6 +221,9 @@ function rcmail_set_imap_prop()
if (!empty($CONFIG['imap_root']))
$IMAP->set_rootdir($CONFIG['imap_root']);

if (is_array($CONFIG['default_imap_folders']))
$IMAP->set_default_mailboxes($CONFIG['default_imap_folders']);

if (!empty($_SESSION['mbox']))
$IMAP->set_mailbox($_SESSION['mbox']);
if (isset($_SESSION['page']))
Expand Down Expand Up @@ -510,8 +510,10 @@ function rcmail_login($user, $pass, $host=NULL)
$_SESSION['user_lang'] = $sess_user_lang;
$_SESSION['password'] = encrypt_passwd($pass);

// force reloading complete list of subscribed mailboxes
// force reloading complete list of subscribed mailboxes
rcmail_set_imap_prop();
$IMAP->clear_cache('mailboxes');
$IMAP->create_default_folders();

return TRUE;
}
Expand Down
105 changes: 67 additions & 38 deletions program/include/rcube_imap.inc
Expand Up @@ -36,7 +36,7 @@ require_once('lib/utf7.inc');
*
* @package RoundCube Webmail
* @author Thomas Bruederli <roundcube@gmail.com>
* @version 1.30
* @version 1.31
* @link http://ilohamail.org
*/
class rcube_imap
Expand All @@ -52,7 +52,8 @@ class rcube_imap
var $sort_order = 'DESC';
var $delimiter = NULL;
var $caching_enabled = FALSE;
var $default_folders = array('inbox', 'drafts', 'sent', 'junk', 'trash');
var $default_folders = array('INBOX');
var $default_folders_lc = array('inbox');
var $cache = array();
var $cache_keys = array();
var $cache_changes = array();
Expand Down Expand Up @@ -208,15 +209,16 @@ class rcube_imap
{
if (is_array($arr))
{
$this->default_folders = array();

// add mailbox names lower case
foreach ($arr as $mbox_row)
$this->default_folders[] = strtolower($mbox_row);

$this->default_folders = $arr;
$this->default_folders_lc = array();

// add inbox if not included
if (!in_array('inbox', $this->default_folders))
array_unshift($arr, 'inbox');
if (!in_array_nocase('INBOX', $this->default_folders))
array_unshift($this->default_folders, 'INBOX');

// create a second list with lower cased names
foreach ($this->default_folders as $mbox)
$this->default_folders_lc[] = strtolower($mbox);
}
}

Expand Down Expand Up @@ -333,6 +335,10 @@ class rcube_imap
$a_out[] = $name;
}

// INBOX should always be available
if (!in_array_nocase('INBOX', $a_out))
array_unshift($a_out, 'INBOX');

// sort mailboxes
$a_out = $this->_sort_mailbox_list($a_out);

Expand Down Expand Up @@ -362,20 +368,6 @@ class rcube_imap
if (!is_array($a_folders) || !sizeof($a_folders))
$a_folders = array();

// create Default folders if they do not exist
global $CONFIG;
foreach ($CONFIG['default_imap_folders'] as $folder)
{
if (!in_array_nocase($folder, $a_folders))
{
$this->create_mailbox($folder, TRUE);
$this->subscribe($folder);
}
}

$a_folders = iil_C_ListSubscribed($this->conn, $this->_mod_mailbox($root), $filter);
$a_mailbox_cache = array();

// write mailboxlist to cache
$this->update_cache('mailboxes', $a_folders);

Expand Down Expand Up @@ -1155,7 +1147,12 @@ class rcube_imap
* --------------------------------*/


// return an array with all folders available in IMAP server
/**
* Get a list of all folders available on the IMAP server
*
* @param string IMAP root dir
* @return array Inbdexed array with folder names
*/
function list_unsubscribed($root='')
{
static $sa_unsubscribed;
Expand Down Expand Up @@ -1197,7 +1194,9 @@ class rcube_imap
}


// subscribe to a specific mailbox(es)
/**
* subscribe to a specific mailbox(es)
*/
function subscribe($mbox_name, $mode='subscribe')
{
if (is_array($mbox_name))
Expand All @@ -1210,7 +1209,9 @@ class rcube_imap
}


// unsubscribe mailboxes
/**
* unsubscribe mailboxes
*/
function unsubscribe($mbox_name)
{
if (is_array($mbox_name))
Expand All @@ -1223,7 +1224,9 @@ class rcube_imap
}


// create a new mailbox on the server and register it in local cache
/**
* create a new mailbox on the server and register it in local cache
*/
function create_mailbox($name, $subscribe=FALSE)
{
$result = FALSE;
Expand All @@ -1238,19 +1241,21 @@ class rcube_imap

$abs_name = $this->_mod_mailbox($name_enc);
$a_mailbox_cache = $this->get_cache('mailboxes');
if (strlen($abs_name) && (!is_array($a_mailbox_cache) || !in_array($abs_name, $a_mailbox_cache)))

if (strlen($abs_name) && (!is_array($a_mailbox_cache) || !in_array_nocase($abs_name, $a_mailbox_cache)))
$result = iil_C_CreateFolder($this->conn, $abs_name);

// update mailboxlist cache
if ($result && $subscribe)
// try to subscribe it
if ($subscribe)
$this->subscribe($name_enc);

return $result ? $name : FALSE;
}


// set a new name to an existing mailbox
/**
* set a new name to an existing mailbox
*/
function rename_mailbox($mbox_name, $new_name)
{
$result = FALSE;
Expand Down Expand Up @@ -1279,7 +1284,9 @@ class rcube_imap
}


// remove mailboxes from server
/**
* remove mailboxes from server
*/
function delete_mailbox($mbox_name)
{
$deleted = FALSE;
Expand All @@ -1296,7 +1303,7 @@ class rcube_imap

// unsubscribe mailbox before deleting
iil_C_UnSubscribe($this->conn, $mailbox);

// send delete command to server
$result = iil_C_DeleteFolder($this->conn, $mailbox);
if ($result>=0)
Expand All @@ -1314,6 +1321,28 @@ class rcube_imap
}


/**
* Create all folders specified as default
*/
function create_default_folders()
{
$a_folders = iil_C_ListMailboxes($this->conn, $this->_mod_mailbox(''), '*');
$a_subscribed = iil_C_ListSubscribed($this->conn, $this->_mod_mailbox(''), '*');

// create default folders if they do not exist
foreach ($this->default_folders as $folder)
{
$abs_name = $this->_mod_mailbox($folder);
if (!in_array_nocase($abs_name, $a_subscribed))
{
if (!in_array_nocase($abs_name, $a_folders))
$this->create_mailbox($folder, TRUE);
else
$this->subscribe($folder);
}
}
}



/* --------------------------------
Expand Down Expand Up @@ -1830,7 +1859,7 @@ class rcube_imap

function _mod_mailbox($mbox_name, $mode='in')
{
if ((!empty($this->root_ns) && $this->root_ns == $mbox_name) || ($mbox_name == 'INBOX' && $mode == 'in'))
if ((!empty($this->root_ns) && $this->root_ns == $mbox_name) || $mbox_name == 'INBOX')
return $mbox_name;

if (!empty($this->root_dir) && $mode=='in')
Expand All @@ -1852,8 +1881,8 @@ class rcube_imap
{
if ($folder{0}=='.')
continue;
if (($p = array_search(strtolower($folder), $this->default_folders))!==FALSE)

if (($p = array_search(strtolower($folder), $this->default_folders_lc))!==FALSE)
$a_defaults[$p] = $folder;
else
$a_out[] = $folder;
Expand Down
9 changes: 9 additions & 0 deletions program/js/app.js
Expand Up @@ -3212,6 +3212,15 @@ function rcube_webmail()
this.set_classname(mbox_li, 'selected', true);
}
}

// also update mailbox name in window title
if (document.title)
{
var doc_title = String(document.title);
var reg = new RegExp(this.env.mailbox.toLowerCase(), 'i');
if (this.env.mailbox && doc_title.match(reg))
document.title = doc_title.replace(reg, mbox).replace(/^\([0-9]+\)\s+/i, '');
}

this.env.mailbox = mbox;
};
Expand Down
2 changes: 1 addition & 1 deletion program/steps/settings/save_identity.inc
Expand Up @@ -61,7 +61,7 @@ if ($_POST['_iid'])
$updated = $DB->affected_rows();
}

if ($updated)
if ($updated && !empty($_POST['_standard']))
{
show_message('successfullysaved', 'confirmation');

Expand Down

0 comments on commit fa4cd20

Please sign in to comment.