function &getdisplayableBody($_bodyParts) { $bodyParts = $_bodyParts; $webserverURL = $GLOBALS['phpgw_info']['server']['webserver_url']; $nonDisplayAbleCharacters = array('[\\016]', '[\\017]', '[\\020]', '[\\021]', '[\\022]', '[\\023]', '[\\024]', '[\\025]', '[\\026]', '[\\027]', '[\\030]', '[\\031]', '[\\032]', '[\\033]', '[\\034]', '[\\035]', '[\\036]', '[\\037]'); $body = ''; #_debug_array($bodyParts); exit; foreach ($bodyParts as $singleBodyPart) { if (!empty($body)) { $body .= '<hr style="border:dotted 1px silver;">'; } #_debug_array($singleBodyPart['charSet']); $singleBodyPart['body'] = $this->botranslation->convert($singleBodyPart['body'], strtolower($singleBodyPart['charSet'])); //error_log($singleBodyPart['body']); #$CharSetUsed = mb_detect_encoding($singleBodyPart['body'] . 'a' , strtoupper($singleBodyPart['charSet']).','.strtoupper($this->displayCharset).',UTF-8, ISO-8859-1'); if ($singleBodyPart['mimeType'] == 'text/plain') { $newBody = $singleBodyPart['body']; $newBody = @htmlentities($singleBodyPart['body'], ENT_QUOTES, strtoupper($this->displayCharset)); // if the conversion to htmlentities fails somehow, try without specifying the charset, which defaults to iso- if (empty($newBody)) { $newBody = htmlentities($singleBodyPart['body'], ENT_QUOTES); } #$newBody = $this->bofelamimail->wordwrap($newBody, 90, "\n"); // search http[s] links and make them as links available again // to understand what's going on here, have a look at // http://www.php.net/manual/en/function.preg-replace.php // create links for websites $newBody = preg_replace("/((http(s?):\\/\\/)|(www\\.))([\\w,\\-,\\/,\\?,\\=,\\.,&,!\n,!>,\\%,@,\\*,#,:,~,\\+]+)/ie", "'<a href=\"{$webserverURL}/redirect.php?go='.@htmlentities(urlencode('http\$3://\$4\$5'),ENT_QUOTES,\"{$this->displayCharset}\").'\" target=\"_blank\"><font color=\"blue\">\$2\$4\$5</font></a>'", $newBody); // create links for ftp sites $newBody = preg_replace("/((ftp:\\/\\/)|(ftp\\.))([\\w\\.,-.,\\/.,\\?.,\\=.,&]+)/i", "<a href=\"ftp://\$3\$4\" target=\"_blank\"><font color=\"blue\">ftp://\$3\$4</font></a>", $newBody); // create links for email addresses $this->parseEmail($newBody); $newBody = $this->highlightQuotes($newBody); $newBody = nl2br($newBody); } else { $newBody = $singleBodyPart['body']; $newBody = $this->highlightQuotes($newBody); bofelamimail::getCleanHTML($newBody); // create links for websites #$newBody = preg_replace("/(?<!\>)((http(s?):\/\/)|(www\.))([\w,\-,\/,\?,\=,\.,&,!\n,\%,@,\*,#,:,~,\+]+)/ie", # "'<a href=\"$webserverURL/redirect.php?go='.htmlentities(urlencode('http$3://$4$5'),ENT_QUOTES,\"$this->displayCharset\").'\" target=\"_blank\"><font color=\"blue\">$2$4$5</font></a>'", $newBody); $newBody = preg_replace("/(?<!>|\\/|\")((http(s?):\\/\\/)|(www\\.))([\\w,\\-,\\/,\\?,\\=,\\.,&,!\n,\\%,@,\\*,#,:,~,\\+]+)/ie", "'<a href=\"{$webserverURL}/redirect.php?go='.@htmlentities(urlencode('http\$3://\$4\$5'),ENT_QUOTES,\"{$this->displayCharset}\").'\" target=\"_blank\"><font color=\"blue\">\$2\$4\$5</font></a>'", $newBody); // create links for websites $newBody = preg_replace("/href=(\"|\\')((http(s?):\\/\\/)|(www\\.))([\\w,\\-,\\/,\\?,\\=,\\.,&,!\n,\\%,@,\\(,\\),\\*,#,:,~,\\+]+)(\"|\\')/ie", "'href=\"{$webserverURL}/redirect.php?go='.@htmlentities(urlencode('http\$4://\$5\$6'),ENT_QUOTES,\"{$this->displayCharset}\").'\" target=\"_blank\"'", $newBody); // create links for ftp sites $newBody = preg_replace("/href=(\"|\\')((ftp:\\/\\/)|(ftp\\.))([\\w\\.,-.,\\/.,\\?.,\\=.,&]+)(\"|\\')/i", "href=\"ftp://\$4\$5\" target=\"_blank\"", $newBody); // create links for inline images $linkData = array('menuaction' => 'felamimail.uidisplay.displayImage', 'uid' => $this->uid, 'mailbox' => base64_encode($this->mailbox)); $imageURL = $GLOBALS['phpgw']->link('/index.php', $linkData); $newBody = preg_replace("/(\"|\\')cid:(.*)(\"|\\')/iUe", "'\"{$imageURL}&cid='.base64_encode('\$2').'&partID='.urlencode({$this->partID}).'\"'", $newBody); // create links for email addresses $linkData = array('menuaction' => 'felamimail.uicompose.compose'); $link = $GLOBALS['phpgw']->link('/index.php', $linkData); $newBody = preg_replace("/href=(\"|\\')mailto:([\\w,\\-,\\/,\\?,\\=,\\.,&,!\n,\\%,@,\\*,#,:,~,\\+]+)(\"|\\')/ie", "'href=\"{$link}&send_to='.base64_encode('\$2').'\"'", $newBody); #print "<pre>".htmlentities($newBody)."</pre><hr>"; // replace emails within the text with clickable links. $this->parseEmail($newBody); } $body .= $newBody; #print "<hr><pre>$body</pre><hr>"; } // create links for windows shares // \\\\\\\\ == '\\' in real life!! :) $body = preg_replace("/(\\\\\\\\)([\\w,\\\\,-]+)/i", "<a href=\"file:\$1\$2\" target=\"_blank\"><font color=\"blue\">\$1\$2</font></a>", $body); $body = preg_replace($nonDisplayAbleCharacters, '', $body); return $body; }
static function _getCleanHTML($_body) { static $nonDisplayAbleCharacters = array('[\\016]', '[\\017]', '[\\020]', '[\\021]', '[\\022]', '[\\023]', '[\\024]', '[\\025]', '[\\026]', '[\\027]', '[\\030]', '[\\031]', '[\\032]', '[\\033]', '[\\034]', '[\\035]', '[\\036]', '[\\037]'); bofelamimail::getCleanHTML($_body); $_body = preg_replace($nonDisplayAbleCharacters, '', $_body); return $_body; }
static function mergeProfileData($mergeInTo, $toMerge) { if (is_array($toMerge) && count($toMerge) > 0) { $allkeys = array_unique(array_keys($mergeInTo) + array_keys($toMerge)); foreach ($allkeys as $i => $key) { if (!array_key_exists($key, $mergeInTo) && array_key_exists($key, $toMerge) && !empty($toMerge[$key])) { $mergeInTo[$key] = $toMerge[$key]; } else { if (array_key_exists($key, $toMerge) && !empty($toMerge[$key])) { switch ($key) { case 'ea_imap_server': case 'ea_imap_type': case 'ea_imap_port': case 'ea_imap_tsl_encryption': case 'ea_imap_tsl_auth': if (strlen($toMerge['ea_imap_server']) > 0) { $mergeInTo[$key] = $toMerge[$key]; } break; case 'ea_smtp_port': case 'ea_smtp_type': case 'ea_smtp_server': if (strlen($toMerge['ea_smtp_server']) > 0) { $mergeInTo[$key] = $toMerge[$key]; } break; case 'ea_default_signature': $testVal = $toMerge['ea_default_signature']; bofelamimail::getCleanHTML($testVal); if (strlen($testVal) > 10 || $testVal != '<br>' || $testVal != '<br />') { $mergeInTo[$key] = $toMerge[$key]; } break; default: $mergeInTo[$key] = $toMerge[$key]; } } } } } return $mergeInTo; }