From 2965a981b7ec22866fbdf2d567d87e2d068d3617 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Fri, 31 Jul 2015 16:04:08 -0400
Subject: [PATCH] Allow to search and import missing PGP pubkeys from keyservers using Publickey.js
---
program/lib/Roundcube/rcube_imap.php | 38 ++++++++++++++++++++++++++++----------
1 files changed, 28 insertions(+), 10 deletions(-)
diff --git a/program/lib/Roundcube/rcube_imap.php b/program/lib/Roundcube/rcube_imap.php
index d1d1fbf..65e0950 100644
--- a/program/lib/Roundcube/rcube_imap.php
+++ b/program/lib/Roundcube/rcube_imap.php
@@ -1957,6 +1957,16 @@
for ($i=1; $i<count($part); $i++) {
if (!is_array($part[$i])) {
$struct->ctype_secondary = strtolower($part[$i]);
+
+ // read content type parameters
+ if (is_array($part[$i+1])) {
+ $struct->ctype_parameters = array();
+ for ($j=0; $j<count($part[$i+1]); $j+=2) {
+ $param = strtolower($part[$i+1][$j]);
+ $struct->ctype_parameters[$param] = $part[$i+1][$j+1];
+ }
+ }
+
break;
}
}
@@ -2364,36 +2374,38 @@
/**
* Returns the whole message source as string (or saves to a file)
*
- * @param int $uid Message UID
- * @param resource $fp File pointer to save the message
+ * @param int $uid Message UID
+ * @param resource $fp File pointer to save the message
+ * @param string $part Optional message part ID
*
* @return string Message source string
*/
- public function get_raw_body($uid, $fp=null)
+ public function get_raw_body($uid, $fp=null, $part = null)
{
if (!$this->check_connection()) {
return null;
}
return $this->conn->handlePartBody($this->folder, $uid,
- true, null, null, false, $fp);
+ true, $part, null, false, $fp);
}
/**
* Returns the message headers as string
*
- * @param int $uid Message UID
+ * @param int $uid Message UID
+ * @param string $part Optional message part ID
*
* @return string Message headers string
*/
- public function get_raw_headers($uid)
+ public function get_raw_headers($uid, $part = null)
{
if (!$this->check_connection()) {
return null;
}
- return $this->conn->fetchPartHeader($this->folder, $uid, true);
+ return $this->conn->fetchPartHeader($this->folder, $uid, true, $part);
}
@@ -3951,9 +3963,15 @@
// @TODO: Honor MAXSIZE and DEPTH options
foreach ($queries as $attrib => $entry) {
- if ($result = $this->conn->getAnnotation($folder, $entry, $attrib)) {
- foreach ($result as $folder => $data) {
- $res[$folder] = array_merge((array) $res[$folder], $data);
+ $result = $this->conn->getAnnotation($folder, $entry, $attrib);
+
+ // an error, invalidate any previous getAnnotation() results
+ if (!is_array($result)) {
+ return null;
+ }
+ else {
+ foreach ($result as $fldr => $data) {
+ $res[$fldr] = array_merge((array) $res[$fldr], $data);
}
}
}
--
Gitblit v1.9.1