assign('pageMetas', $pmetas); extract(Telaen::pullFromArray($_GET, ['nameto', 'mailto'], 'str')); if (isset($nameto)) { $nameto = urldecode($nameto); } if (isset($mailto)) { $mailto = urldecode($mailto); } extract(Telaen::pullFromArray($_POST, ['to', 'cc', 'bcc', 'subject', 'requireReceipt', 'priority', 'body', 'is_html', 'textmode', 'sig', 'todo', 'rtype', 'uidl', ], 'str')); if ($todo == 'send') { require './inc/send.php'; exit; } // priority $priority_level = (!isset($priority) || empty($priority)) ? 3 : $priority; $smarty->assign('smPriority', $priority_level); // adv editor if (!isset($textmode)) { $textmode = null; } $show_advanced = ((!$textmode) && ($TLN->prefs['editor_mode'] != 'text')) ? 1 : 0; $js_advanced = ($show_advanced) ? 'true' : 'false'; $signature = $TLN->prefs['signature']; if ($show_advanced) { $signature = nl2br($signature); } $add_sig = $TLN->prefs['add_signature']; $addSignature = ($add_sig) ? 1 : 0; $smarty->assign('smAddSignature', $addSignature); // return receipt $rr = ($TLN->prefs['require_receipt']) ? true : false; $smarty->assign('requireReceipt', $rr); // hidden inputs ---- Note: these should be moved into template... $forms = " "; $smarty->assign('smForms', $forms); eval('$jssource = "' . $commonJS . '";'); if ($show_advanced) { $jssource .= " "; } require './inc/js/newmsg_js.php'; $smarty->assign('smJS', $jssource); $body = ''; // we are crafting from scratch. Ignore any params $msg = $TLN->tdb->getMessage($uidl, $folder); if (isset($rtype)) { // Hmmm passed a bogus uidl and/or folder val? bail. if (empty($msg)) { $TLN->redirectAndExit('messages.php?err=2&folder='.urlencode($folder)."&pag={$pag}&refr=true"); } switch ($rtype) { case 'forward': $TLN->mailSetFlag($msg, 'forwarded', '+'); break; case 'reply': case 'replyall': $TLN->mailSetFlag($msg, 'answered', '+'); break; default: $TLN->redirectAndExit('messages.php?err=2&folder='.urlencode($folder)."&pag={$pag}&refr=true"); break; } $filename = $TLN->getPath($msg)[0]; if (!file_exists($filename)) { $TLN->redirectAndExit('messages.php?err=2&folder='.urlencode($folder)."&pag={$pag}&refr=true"); } $tmpbody = stream_get_contents($TLN->mailRetrPbody($msg)); $subject = $msg['subject']; $ARReplyTo = $TLN->getNames($msg['headers']['reply-to']); $ARFrom = $TLN->getNames($msg['headers']['from']); $useremail = $auth['email']; // From if ($ARReplyTo[0]['mail'] != "") { $name = $ARReplyTo[0]['name']; $thismail = $ARReplyTo[0]['mail']; } else { $name = $ARFrom[0]['name']; $thismail = $ARFrom[0]['mail']; } $fromreply = "\"$name\" <$thismail>"; // These are used for re-add my address in the quoted message, since we remove it from To & CC lists // I don't want my adr in To or CC fields when I reply-all, but I want to see it in the quoted message. // If someone finds a better way to do this is welcome.... $myToAdr = ""; $myCCAdr = ""; // To $ARTo = $TLN->getNames($msg['headers']['to']); for ($i = 0;$iprefs['reply-to']) { if (isset($toreply)) { $toreply .= ", \"$name\" <$thismail>"; } else { $toreply = "\"$name\" <$thismail>"; } } else { $myToAdr = "\"$name\" <$thismail>"; } } // CC $ARCC = $msg['headers']['cc']; for ($i = 0;$iprefs['reply-to']) { if (isset($ccreply)) { $ccreply .= ", \"$name\" <$thismail>"; } else { $ccreply = "\"$name\" <$thismail>"; } } else { $myCCAdr = "\"$name\" <$thismail>"; } } $allreply = $TLN->clearNames($fromreply.', '.$toreply); $ccreply = $TLN->clearNames($ccreply); $fromreply = $TLN->clearNames($fromreply); $msgsubject = $msg['subject']; $fromreply_quote = $fromreply; $toreply_quote = $toreply; $ccreply_quote = $ccreply; $msgsubject_quote = $msgsubject; // re-add my address in the quoted message, why? look at line #412 if (!empty($myToAdr)) { if (empty($toreply_quote)) { $toreply_quote = $myToAdr; } else { $toreply_quote = $myToAdr.','.$toreply_quote; } } if (!empty($myCCAdr)) { if (empty($ccreply_quote)) { $ccreply_quote = $myCCAdr; } else { $ccreply_quote = $myCCAdr.','.$ccreply_quote; } } if ($show_advanced) { $fromreply_quote = htmlspecialchars($fromreply_quote); $toreply_quote = htmlspecialchars($toreply_quote); $ccreply_quote = htmlspecialchars($ccreply_quote); $msgsubject_quote = htmlspecialchars($msgsubject_quote); $linebreak = '
'; } else { $tmpbody = strip_tags($tmpbody); $quote_string = '> '; $tmpbody = $quote_string.preg_replace('|\n|', "\n$quote_string", $tmpbody); } $body = " {$lang['reply_delimiter']}$linebreak {$lang['reply_from_hea']} ".preg_replace('|(")|', "", $fromreply_quote)."$linebreak {$lang['reply_to_hea']} ".preg_replace('|(")|', "", $toreply_quote); if (!empty($ccreply)) { $body .= "$linebreak {$lang['reply_cc_hea']} ".preg_replace('|(")|', "", $ccreply_quote); } $body .= "$linebreak {$lang['reply_subject_hea']} ".$msgsubject_quote."$linebreak {$lang['reply_date_hea']} ".@strftime($lang['date_format'], $msg['date'])."$linebreak $linebreak $tmpbody"; if ($show_advanced) { $body = "
$body

"; } switch ($rtype) { case 'reply': if (!preg_match("/^{$lang['reply_prefix']}/i", trim($subject))) { $subject = "{$lang['reply_prefix']} $subject"; } $to = $fromreply; break; case 'replyall': if (!preg_match("/^{$lang['reply_prefix']}/i", trim($subject))) { $subject = "{$lang['reply_prefix']} $subject"; } $to = $allreply; $cc = $ccreply; break; case 'forward': if (!preg_match("/^{$lang['forward_prefix']}/i", trim($subject))) { $subject = "{$lang['forward_prefix']} $subject"; } break; } } if ($show_advanced) { $body = "

----
$signature

$body"; } else { $body = "\r\n\r\n----\r\n$signature\r\n\r\n$body"; } $haveSig = empty($signature) ? 0 : 1; $smarty->assign('smHaveSignature', $haveSig); $strto = (isset($nameto) && preg_match('|([-a-z0-9_$+.]+@[-a-z0-9_.]+[-a-z0-9_])|i', $mailto)) ? " " : ""; $strcc = ""; $strbcc = ""; $strsubject = ""; /* We use the special _upload/_upload attachments for to-include attachments; clear it */ $TLN->tdb->delAttachments(['uidl' => '_upload', 'folder' => '_upload']); Telaen::cleanupDir($TLN->userfolder.'_upload/'); /* Now get list of all attachments from this reply-to message */ $attachs = $TLN->tdb->getAttachments($msg); $num = count($attachs); $attachlist = []; for ($i = 0; $i < $num; $i++) { $attachlist[$i]['name'] = urlencode($attachs[$i]['name']); $attachlist[$i]['size'] = Telaen::bytes2bkmg($attachs[$i]['size']); $attachlist[$i]['type'] = $attachs[$i]['type'].'/'.$attachs[$i]['subtype']; $attachlist[$i]['link'] = '"javascript:void(0)" onclick="delatt(\''.urlencode($attachs[$i]['name']).'\')"'; /* Now prep all attachments as to-include attachments */ $from = $TLN->getPath($attachs[$i], '_attachments')[0]; $attachs[$i]['uidl'] = '_upload'; $attachs[$i]['folder'] = '_upload'; $attachs[$i]['flat'] = true; $attachs[$i]['localname'] = 'u__'.$attachs[$i]['localname']; $to = $TLN->getPath($attachs[$i])[0]; symlink($from, $to); $TLN->tdb->addAttachment($attachs[$i]); } if (!$show_advanced) { $body = stripslashes($body); } if (!isset($txtarea)) { $txtarea = ''; } /* * Force the below to 0. We do not want to * enable the old HTML editor even when using * HTML Email. */ // $umAdvEdit = ($show_advanced) ? 1 : 0 ; $advEdit = 0; $smarty->assign('smBody', $body); $smarty->assign('smTo', $strto); $smarty->assign('smCc', $strcc); $smarty->assign('smBcc', $strbcc); $smarty->assign('smSubject', $strsubject); $smarty->assign('smTextEditor', $txtarea); $smarty->assign('smAdvancedEditor', $advEdit); $smarty->assign('smAttachList', $attachlist); $smarty->display("$themez/newmsg.tpl");