diff --git a/felamimail/inc/class.bofelamimail.inc.php b/felamimail/inc/class.bofelamimail.inc.php
index 835a402454..5d4cb3c7a9 100644
--- a/felamimail/inc/class.bofelamimail.inc.php
+++ b/felamimail/inc/class.bofelamimail.inc.php
@@ -40,6 +40,7 @@
// message encodings
var $encoding = array("7bit", "8bit", "binary", "base64", "quoted-printable", "other");
static $displayCharset;
+ static $botranslation;
// set to true, if php is compiled with multi byte string support
var $mbAvailable = FALSE;
@@ -71,7 +72,7 @@
$this->bopreferences =& CreateObject('felamimail.bopreferences');
$this->sofelamimail =& CreateObject('felamimail.sofelamimail');
- $this->botranslation =& CreateObject('phpgwapi.translation');
+ self::$botranslation =& CreateObject('phpgwapi.translation');
$this->mailPreferences = $this->bopreferences->getPreferences();
if ($this->mailPreferences) {
@@ -365,7 +366,7 @@
*/
function decodeFolderName($_folderName)
{
- return $this->botranslation->convert($_folderName, self::$displayCharset, 'UTF7-IMAP');
+ return self::$botranslation->convert($_folderName, self::$displayCharset, 'UTF7-IMAP');
}
function decodeMimePart($_mimeMessage, $_encoding, $_charset = '')
@@ -401,7 +402,7 @@
foreach((array)$elements as $element) {
if ($element->charset == 'default')
$element->charset = 'iso-8859-1';
- $newString .= $this->botranslation->convert($element->text,$element->charset);
+ $newString .= self::$botranslation->convert($element->text,$element->charset);
}
return preg_replace('/([\000-\012\015\016\020-\037\075])/','',$newString);
} elseif(function_exists(mb_decode_mimeheader)) {
@@ -593,7 +594,7 @@
*/
function encodeFolderName($_folderName)
{
- return $this->botranslation->convert($_folderName, 'UTF7-IMAP', self::$displayCharset);
+ return self::$botranslation->convert($_folderName, 'UTF7-IMAP', self::$displayCharset);
}
# function encodeHeader($_string, $_encoding='q')
@@ -970,19 +971,7 @@
if($_partID != '') {
$structure = $this->_getSubStructure($structure, $_partID);
}
-
- if(isset($structure->parameters['NAME'])) {
- $filename = $this->decode_header($structure->parameters['NAME']);
- } elseif(isset($structure->dparameters['FILENAME'])) {
- $filename = $this->decode_header($structure->dparameters['FILENAME']);
- } elseif(isset($structure->dparameters['FILENAME*'])) {
- $filename = $this->decode_header($structure->dparameters['FILENAME*']);
- } elseif ( isset($structure->filename) && !empty($structure->filename) && $structure->filename != 'NIL') {
- $filename = $this->decode_header($structure->filename);
- } else {
- $filename = lang("unknown").($structure->subType ? ".".$structure->subType : "");
- }
-
+ $filename = self::getFileNameFromStructure($structure);
$attachment = $this->icServer->getBodyPart($_uid, $_partID, true);
switch ($structure->encoding) {
@@ -1042,19 +1031,7 @@
// parse message structure
$structure = $this->icServer->getStructure($_uid, true);
$structure = $this->_getSubStructure($structure, $partID);
-
- if(isset($structure->parameters['NAME'])) {
- $filename = $this->decode_header($structure->parameters['NAME']);
- } elseif(isset($structure->dparameters['FILENAME'])) {
- $filename = $this->decode_header($structure->dparameters['FILENAME']);
- } elseif(isset($structure->dparameters['FILENAME*'])) {
- $filename = $this->decode_header($structure->dparameters['FILENAME*']);
- } elseif( isset($structure->filename) && !empty($structure->filename) && $structure->filename != 'NIL') {
- $filename = $this->decode_header($structure->filename);
- } else {
- $filename = lang("unknown").($structure->subType ? ".".$structure->subType : "");
- }
-
+ $filename = self::getFileNameFromStructure($structure);
$attachment = $this->icServer->getBodyPart($_uid, $partID, true);
switch ($structure->encoding) {
@@ -1429,8 +1406,9 @@
function getMultipartMixed($_uid, $_structure, $_htmlMode)
{
+ if (self::$debug) echo __METHOD__."$_uid, $_htmlMode
";
$bodyPart = array();
-
+ if (self::$debug) _debug_array($_structure);
foreach($_structure as $part) {
switch($part->type) {
case 'MULTIPART':
@@ -1470,6 +1448,10 @@
default:
// do nothing
// the part is a attachment
+ #$bodyPart[] = $this->getMessageBody($_uid, $_htmlMode, $part->partID, $part);
+ #if (!($part->type == 'TEXT' && ($part->subType == 'PLAIN' || $part->subType == 'HTML'))) {
+ # $bodyPart[] = $this->getMessageAttachments($_uid, $part->partID, $part);
+ #}
}
}
@@ -1838,12 +1820,7 @@
function getMessageAttachments($_uid, $_partID='', $_structure='')
{
- #if($_structure!='') {
- # if(is_object($_structure)) {
- # print "buh
";
- # }
- # _debug_array($_structure); exit;
- #}
+ if (self::$debug) echo __METHOD__."$_uid, $_partID
";
if(is_object($_structure)) {
$structure = $_structure;
@@ -1855,12 +1832,10 @@
}
}
- #print "
";
- #_debug_array($structure);
-
+ if (self::$debug) _debug_array($structure);
+ $attachments = array();
// this kind of messages contain only the attachment and no body
if($structure->type == 'APPLICATION' || $structure->type == 'AUDIO' || $structure->type == 'IMAGE') {
- $attachments = array();
$newAttachment = array();
$newAttachment['size'] = $structure->bytes;
@@ -1870,17 +1845,7 @@
if(isset($structure->cid)) {
$newAttachment['cid'] = $structure->cid;
}
- if(isset($structure->parameters['NAME'])) {
- $newAttachment['name'] = $this->decode_header($structure->parameters['NAME']);
- } elseif(isset($structure->dparameters['FILENAME'])) {
- $newAttachment['name'] = $this->decode_header($structure->dparameters['FILENAME']);
- } elseif(isset($structure->dparameters['FILENAME*'])) {
- $newAttachment['name'] = $this->decode_header($structure->dparameters['FILENAME*']);
- } elseif ( isset($structure->filename) && !empty($structure->filename) && $structure->filename != 'NIL') {
- $newAttachment['name'] = $this->decode_header($structure->filename);
- } else {
- $newAttachment['name'] = lang("unknown").($structure->subType ? ".".$structure->subType : "");
- }
+ $newAttachment['name'] = self::getFileNameFromStructure($structure);
# if the new attachment is a winmail.dat, we have to decode that first
if ( $newAttachment['name'] == 'winmail.dat' &&
( $wmattachments = $this->decode_winmail( $_uid, $newAttachment['partID'] ) ) )
@@ -1891,17 +1856,17 @@
}
//$attachments[] = $newAttachment;
- return $attachments;
+ #return $attachments;
}
// this kind of message can have no attachments
if($structure->type == 'TEXT' ||
($structure->type == 'MULTIPART' && $structure->subType == 'ALTERNATIVE' && !is_array($structure->subParts)) ||
!is_array($structure->subParts)) {
- return array();
+ if (count($attachments) == 0) return array();
}
- $attachments = array();
+ #$attachments = array();
foreach($structure->subParts as $subPart) {
// skip all non attachment parts
@@ -1912,7 +1877,7 @@
{
if ($subPart->type == 'MULTIPART' && $subPart->subType == 'ALTERNATIVE')
{
- $attachments = $this->getMessageAttachments($_uid, '', $subPart);
+ $attachments = array_merge($this->getMessageAttachments($_uid, '', $subPart), $attachments);
}
continue;
}
@@ -1922,7 +1887,8 @@
($subPart->subType == 'RELATED' ||
$subPart->subType == 'MIXED' ||
$subPart->subType == 'SIGNED' ||
- $subPart->subType == 'APPLEDOUBLE')) {
+ $subPart->subType == 'APPLEDOUBLE'))
+ {
$attachments = array_merge($this->getMessageAttachments($_uid, '', $subPart), $attachments);
} else {
$newAttachment = array();
@@ -1933,17 +1899,7 @@
if(isset($subPart->cid)) {
$newAttachment['cid'] = $subPart->cid;
}
- if(isset($subPart->parameters['NAME'])) {
- $newAttachment['name'] = $this->decode_header($subPart->parameters['NAME']);
- } elseif(isset($subPart->dparameters['FILENAME'])) {
- $newAttachment['name'] = $this->decode_header($subPart->dparameters['FILENAME']);
- } elseif(isset($subPart->dparameters['FILENAME*'])) {
- $newAttachment['name'] = $this->decode_header($subPart->dparameters['FILENAME*']);
- } elseif ( isset($subPart->filename) && !empty($subPart->filename) && $subPart->filename != 'NIL') {
- $newAttachment['name'] = $this->decode_header($subPart->filename);
- } else {
- $newAttachment['name'] = lang("unknown").($subPart->subType ? ".".$subPart->subType : "");
- }
+ $newAttachment['name'] = self::getFileNameFromStructure($subPart);
# if the new attachment is a winmail.dat, we have to decode that first
if ( $newAttachment['name'] == 'winmail.dat' &&
( $wmattachments = $this->decode_winmail( $_uid, $newAttachment['partID'] ) ) )
@@ -1961,8 +1917,24 @@
}
+ static function getFileNameFromStructure(&$structure)
+ {
+ if(isset($structure->parameters['NAME'])) {
+ return self::decode_header($structure->parameters['NAME']);
+ } elseif(isset($structure->dparameters['FILENAME'])) {
+ return self::decode_header($structure->dparameters['FILENAME']);
+ } elseif(isset($structure->dparameters['FILENAME*'])) {
+ return self::decode_header($structure->dparameters['FILENAME*']);
+ } elseif ( isset($structure->filename) && !empty($structure->filename) && $structure->filename != 'NIL') {
+ return self::decode_header($structure->filename);
+ } else {
+ return lang("unknown").($structure->subType ? ".".$structure->subType : "");
+ }
+ }
+
function getMessageBody($_uid, $_htmlOptions='', $_partID='', $_structure = '')
{
+ if (self::$debug) echo __METHOD__."$_uid, $_htmlOptions, $_partID
";
if($_htmlOptions != '') {
$this->htmlOptions = $_htmlOptions;
}
diff --git a/felamimail/inc/class.uipreferences.inc.php b/felamimail/inc/class.uipreferences.inc.php
index a829d88e97..cb2bfd924e 100644
--- a/felamimail/inc/class.uipreferences.inc.php
+++ b/felamimail/inc/class.uipreferences.inc.php
@@ -377,7 +377,8 @@
$sentOptions = array_merge(array('' => lang('default').' '.lang("folder settings"), 'none' => lang("Don't use Sent")),($accountData['active'] ? $folderList :array($icServer->sentfolder => $icServer->sentfolder)));
$draftOptions = array_merge(array('' => lang('default').' '.lang("folder settings"), 'none' => lang("Don't use draft folder")),($accountData['active'] ? $folderList :array($icServer->draftfolder => $icServer->draftfolder)));
$templateOptions = array_merge(array('' => lang('default').' '.lang("folder settings"), 'none' => lang("Don't use template folder")),($accountData['active'] ? $folderList :array($icServer->templatefolder => $icServer->templatefolder)));
- $folderList = array_merge( array('' => lang('default').' '.lang("folder settings")),($accountData['active'] ? $folderList :$icServer->folderstoshowinhome));
+ $tomerge = ($accountData['active'] ? $folderList :$icServer->folderstoshowinhome);
+ $folderList = array_merge( array('' => lang('default').' '.lang("folder settings")),(is_array($tomerge)?$tomerge:array()));
$this->t->set_var('allowAccounts',($preferences->userDefinedAccounts ? 1 : 0));
$this->t->set_var('identity_selectbox', html::select('identity[signature]',$sigvalue,$allSignatures, true, "style='width: 250px;'"));