- Make possible to overwrite server's namespaces with imap_ns_* options

release-0.6
alecpl 14 years ago
parent 1ce4420b7e
commit 02491a9789

@ -83,6 +83,7 @@ $rcmail_config['imap_delimiter'] = null;
// set these options. All can be strings or arrays of strings.
// Folders need to be ended with directory separator, e.g. "INBOX."
// (special directory "~" is an exception to this rule)
// These can be used also to overwrite server's namespaces
$rcmail_config['imap_ns_personal'] = null;
$rcmail_config['imap_ns_other'] = null;
$rcmail_config['imap_ns_shared'] = null;

@ -546,56 +546,56 @@ class rcube_imap
$imap_shared = $config->get('imap_ns_shared');
$imap_delimiter = $config->get('imap_delimiter');
if ($imap_delimiter) {
$this->delimiter = $imap_delimiter;
}
if (!$this->conn)
return;
$ns = $this->conn->getNamespace();
// NAMESPACE supported
// Set namespaces (NAMESPACE supported)
if (is_array($ns)) {
$this->namespace = $ns;
if (empty($this->delimiter))
$this->delimiter = $ns['personal'][0][1];
if (empty($this->delimiter))
$this->delimiter = $this->conn->getHierarchyDelimiter();
if (empty($this->delimiter))
$this->delimiter = '/';
}
// not supported, get namespace from config
else if ($imap_personal !== null || $imap_shared !== null || $imap_other !== null) {
if (empty($this->delimiter))
$this->delimiter = $this->conn->getHierarchyDelimiter();
if (empty($this->delimiter))
$this->delimiter = '/';
else {
$this->namespace = array(
'personal' => NULL,
'other' => NULL,
'shared' => NULL,
);
}
if ($imap_personal !== null) {
foreach ((array)$imap_personal as $dir) {
$this->namespace['personal'][] = array($dir, $this->delimiter);
}
if ($imap_delimiter) {
$this->delimiter = $imap_delimiter;
}
if (empty($this->delimiter)) {
$this->delimiter = $this->namespace['personal'][0][1];
}
if (empty($this->delimiter)) {
$this->delimiter = $this->conn->getHierarchyDelimiter();
}
if (empty($this->delimiter)) {
$this->delimiter = '/';
}
// Overwrite namespaces
if ($imap_personal !== null) {
$this->namespace['personal'] = NULL;
foreach ((array)$imap_personal as $dir) {
$this->namespace['personal'][] = array($dir, $this->delimiter);
}
if ($imap_other !== null) {
foreach ((array)$imap_other as $dir) {
if ($dir) {
$this->namespace['other'][] = array($dir, $this->delimiter);
}
}
if ($imap_other !== null) {
$this->namespace['other'] = NULL;
foreach ((array)$imap_other as $dir) {
if ($dir) {
$this->namespace['other'][] = array($dir, $this->delimiter);
}
}
if ($imap_shared !== null) {
foreach ((array)$imap_shared as $dir) {
if ($dir) {
$this->namespace['shared'][] = array($dir, $this->delimiter);
}
}
if ($imap_shared !== null) {
$this->namespace['shared'] = NULL;
foreach ((array)$imap_shared as $dir) {
if ($dir) {
$this->namespace['shared'][] = array($dir, $this->delimiter);
}
}
}

Loading…
Cancel
Save