/** msg_header contains generic variables for values that **/
/** could be in a header. **/
- var $type0 = '', $type1 = '', $boundary = '', $charset = '';
- var $encoding = '', $size = 0, $to = array(), $from = '', $date = '';
- var $cc = array(), $bcc = array(), $reply_to = '', $subject = '';
- var $id = 0, $mailbox = '', $description = '', $filename = '';
- var $entity_id = 0, $message_id = 0, $name = '';
- // var $priority = "";
+ var $type0 = '', $type1 = '', $boundary = '', $charset = '',
+ $encoding = '', $size = 0, $to = array(), $from = '', $date = '',
+ $cc = array(), $bcc = array(), $reply_to = '', $subject = '',
+ $id = 0, $mailbox = '', $description = '', $filename = '',
+ $entity_id = 0, $message_id = 0, $name = '', $priority = 3;
}
class message {
$sid = sqimap_session_id();
// Don't kill the connection if the browser is over a dialup
// and it would take over 30 seconds to download it.
- set_time_limit(0);
+
+ // donĀ“t call set_time_limit in safe mode.
+ if (!ini_get("safe_mode")) {
+ set_time_limit(0);
+ }
fputs ($imap_stream, "$sid FETCH $id BODY[$ent_id]\r\n");
$cnt = 0;
"../src/download.php?absolute_dl=true&passed_id=$id&mailbox=$urlMailbox&passed_ent_id=$ent";
$ImageURL = '';
+ /* this executes the attachment hook with a specific MIME-type.
+ * if that doens't have results, it tries if there's a rule
+ * for a more generic type. */
$HookResults = do_hook("attachment $type0/$type1", $Links,
$startMessage, $id, $urlMailbox, $ent, $DefaultLink,
$display_filename, $where, $what);
+ if(count($HookResults[1]) <= 1) {
+ $HookResults = do_hook("attachment $type0/*", $Links,
+ $startMessage, $id, $urlMailbox, $ent, $DefaultLink,
+ $display_filename, $where, $what);
+ }
$Links = $HookResults[1];
$DefaultLink = $HookResults[6];
* RFC1522 (MIME Part Two: Message Header Extensions for Non-ASCII Text).
*/
function decodeHeader ($string, $utfencode=true) {
- if (eregi('=\\?([^?]+)\\?(q|b)\\?([^?]+)\\?=',
+
+if ( is_array( $string ) ) {
+ $string = implode("\n", $string );
+}
+
+if (eregi('=\\?([^?]+)\\?(q|b)\\?([^?]+)\\?=',
$string, $res)) {
- if (ucfirst($res[2]) == "B") {
+ if (ucfirst($res[2]) == 'B') {
$replace = base64_decode($res[3]);
- } else {
- $replace = ereg_replace("_", " ", $res[3]);
- // Convert lowercase Quoted Printable to uppercase for
- // quoted_printable_decode to understand it.
- while (ereg("(=(([0-9][abcdef])|([abcdef][0-9])|([abcdef][abcdef])))", $replace, $res)) {
- $replace = str_replace($res[1], strtoupper($res[1]), $replace);
- }
+ } else {
+ $replace = str_replace('_', ' ', $res[3]);
+ // Convert lowercase Quoted Printable to uppercase for
+ // quoted_printable_decode to understand it.
+ while (ereg("(=(([0-9][abcdef])|([abcdef][0-9])|([abcdef][abcdef])))",
+ $replace, $res)) {
+ $replace = str_replace($res[1], strtoupper($res[1]), $replace);
+ }
$replace = quoted_printable_decode($replace);
- }
- /* Only encode into entities by default. Some places
+ }
+ /* Only encode into entities by default. Some places
don't need the encoding, like the compose form. */
- if ($utfencode){
- $replace = charset_decode ($res[1], $replace);
- }
+ if ($utfencode){
+ $replace = charset_decode ($res[1], $replace);
+ }
- // Remove the name of the character set.
- $string = eregi_replace ('=\\?([^?]+)\\?(q|b)\\?([^?]+)\\?=',
- $replace, $string);
+ // Remove the name of the character set.
+ $string = eregi_replace ('=\\?([^?]+)\\?(q|b)\\?([^?]+)\\?=',
+ $replace, $string);
+
+ // In case there should be more encoding in the string: recurse
+ $string = decodeHeader($string);
+}
- // In case there should be more encoding in the string: recurse
- return (decodeHeader($string));
- } else
- return ($string);
+return ($string);
}
/*
*/
function MagicHTML( $body, $id ) {
- global $message, $PHP_SELF, $HTTP_SERVER_VARS,
+ global $message, $HTTP_SERVER_VARS,
$attachment_common_show_images;
$attachment_common_show_images =