summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--program/include/rcube_imap.php5
-rw-r--r--program/include/rcube_imap_generic.php58
2 files changed, 40 insertions, 23 deletions
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 4bf7cac88..7fbff37f1 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -163,8 +163,9 @@ class rcube_imap
}
// get server properties
- if (!empty($this->conn->rootdir))
- $this->set_rootdir($this->conn->rootdir);
+ $rootdir = $this->conn->getRootDir();
+ if (!empty($rootdir))
+ $this->set_rootdir($rootdir);
if (empty($this->delimiter))
$this->get_hierarchy_delimiter();
diff --git a/program/include/rcube_imap_generic.php b/program/include/rcube_imap_generic.php
index 29f23f669..9009d125d 100644
--- a/program/include/rcube_imap_generic.php
+++ b/program/include/rcube_imap_generic.php
@@ -86,8 +86,6 @@ class rcube_imap_generic
public $error;
public $errornum;
public $message;
- public $rootdir;
- public $delimiter;
public $data = array();
public $flags = array(
'SEEN' => '\\Seen',
@@ -128,6 +126,14 @@ class rcube_imap_generic
{
}
+ /**
+ * Send simple (one line) command to the connection stream
+ *
+ * @param string $string Command string
+ * @param bool $endln True if CRLF need to be added at the end of command
+ *
+ * @param int Number of bytes sent, False on error
+ */
function putLine($string, $endln=true)
{
if (!$this->fp)
@@ -147,7 +153,15 @@ class rcube_imap_generic
return $res;
}
- // $this->putLine replacement with Command Continuation Requests (RFC3501 7.5) support
+ /**
+ * Send command to the connection stream with Command Continuation
+ * Requests (RFC3501 7.5) and LITERAL+ (RFC2088) support
+ *
+ * @param string $string Command string
+ * @param bool $endln True if CRLF need to be added at the end of command
+ *
+ * @param int Number of bytes sent, False on error
+ */
function putLineC($string, $endln=true)
{
if (!$this->fp)
@@ -534,11 +548,15 @@ class rcube_imap_generic
return $code;
}
+ /**
+ * Gets the root directory and delimiter (of personal namespace)
+ *
+ * @return mixed A root directory name, or false.
+ */
function getRootDir()
{
if (isset($this->prefs['rootdir']) && is_string($this->prefs['rootdir'])) {
- $this->rootdir = $this->prefs['rootdir'];
- return true;
+ return $this->prefs['rootdir'];
}
if (!is_array($data = $this->getNamespace())) {
@@ -551,16 +569,15 @@ class rcube_imap_generic
}
$first_userspace = $user_space_data[0];
- if (count($first_userspace) !=2 ) {
+ if (count($first_userspace) !=2) {
return false;
}
- $this->rootdir = $first_userspace[0];
- $this->delimiter = $first_userspace[1];
- $this->prefs['rootdir'] = substr($this->rootdir, 0, -1);
- $this->prefs['delimiter'] = $this->delimiter;
+ $rootdir = $first_userspace[0];
+ $this->prefs['delimiter'] = $first_userspace[1];
+ $this->prefs['rootdir'] = $rootdir ? substr($rootdir, 0, -1) : '';
- return true;
+ return $this->prefs['rootdir'];
}
/**
@@ -574,11 +591,11 @@ class rcube_imap_generic
*/
function getHierarchyDelimiter()
{
- if ($this->delimiter) {
- return $this->delimiter;
+ if ($this->prefs['delimiter']) {
+ return $this->prefs['delimiter'];
}
if (!empty($this->prefs['delimiter'])) {
- return ($this->delimiter = $this->prefs['delimiter']);
+ return $this->prefs['delimiter'];
}
// try (LIST "" ""), should return delimiter (RFC2060 Sec 6.3.8)
@@ -590,8 +607,7 @@ class rcube_imap_generic
$delimiter = $args[3];
if (strlen($delimiter) > 0) {
- $this->delimiter = $delimiter;
- return $delimiter;
+ return ($this->prefs['delimiter'] = $delimiter);
}
}
@@ -614,7 +630,7 @@ class rcube_imap_generic
}
// extract delimiter
- return $this->delimiter = $first_userspace[1];
+ return $this->prefs['delimiter'] = $first_userspace[1];
}
/**
@@ -1845,11 +1861,11 @@ class rcube_imap_generic
if (empty($mailbox)) {
$mailbox = '*';
}
-
- if (empty($ref) && $this->rootdir) {
- $ref = $this->rootdir;
+/*
+ if (empty($ref) && $this->prefs['rootdir']) {
+ $ref = $this->prefs['rootdir'];
}
-
+*/
$args = array($this->escape($ref), $this->escape($mailbox));
if (!empty($status_opts) && $this->getCapability('LIST-STATUS')) {