diff options
author | alecpl <alec@alec.pl> | 2011-02-09 11:33:49 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2011-02-09 11:33:49 +0000 |
commit | 890eae675828e4d7e6ecbffc613f1eace87717fa (patch) | |
tree | fabbb5db5bb4a69a5f0186e52ef5b7fad008a619 /program/include/rcube_imap_generic.php | |
parent | ea23df6e3e0a847ec9520b6160e62740e6d087a4 (diff) |
- Use IMAP's ID extension (RFC2971) to print more info into debug log
Diffstat (limited to 'program/include/rcube_imap_generic.php')
-rw-r--r-- | program/include/rcube_imap_generic.php | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/program/include/rcube_imap_generic.php b/program/include/rcube_imap_generic.php index 41f704d8d..dace4efd2 100644 --- a/program/include/rcube_imap_generic.php +++ b/program/include/rcube_imap_generic.php @@ -759,6 +759,11 @@ class rcube_imap_generic } } + // Send ID info + if (!empty($this->prefs['ident']) && $this->getCapability('ID')) { + $this->id($this->prefs['ident']); + } + $auth_methods = array(); $result = null; @@ -1157,6 +1162,44 @@ class rcube_imap_generic return false; } + /** + * Executes ID command (RFC2971) + * + * @param array $items Client identification information key/value hash + * + * @return array Server identification information key/value hash + * @access public + * @since 0.6 + */ + function id($items=array()) + { + if (is_array($items) && !empty($items)) { + foreach ($items as $key => $value) { + $args[] = $this->escape($key); + $args[] = $this->escape($value); + } + } + + list($code, $response) = $this->execute('ID', array( + !empty($args) ? '(' . implode(' ', (array) $args) . ')' : $this->escape(null) + )); + + + if ($code == self::ERROR_OK && preg_match('/\* ID /i', $response)) { + $response = substr($response, 5); // remove prefix "* ID " + $items = $this->tokenizeResponse($response); + $result = null; + + for ($i=0, $len=count($items); $i<$len; $i += 2) { + $result[$items[$i]] = $items[$i+1]; + } + + return $result; + } + + return false; + } + function sort($mailbox, $field, $add='', $is_uid=FALSE, $encoding = 'US-ASCII') { $field = strtoupper($field); |