+/** GET VARS */
+sqgetGlobalVar('attachedmessages', $attachedmessages, SQ_GET);
+
+/* Location (For HTTP 1.1 Header("Location: ...") redirects) */
+$location = get_location();
+
+/* --------------------- Specific Functions ------------------------------ */
+
+function replyAllString($header) {
+ global $include_self_reply_all, $username, $data_dir;
+ $excl_ar = array();
+ /**
+ * 1) Remove the addresses we'll be sending the message 'to'
+ */
+ $url_replytoall_avoid_addrs = '';
+ if (isset($header->replyto)) {
+ $excl_ar = $header->getAddr_a('replyto');
+ }
+ /**
+ * 2) Remove our identities from the CC list (they still can be in the
+ * TO list) only if $include_self_reply_all is turned off
+ */
+ if (!$include_self_reply_all) {
+ $email_address = strtolower(trim(getPref($data_dir, $username, 'email_address')));
+ $excl_ar[$email_address] = '';
+ $idents = getPref($data_dir, $username, 'identities');
+ if ($idents != '' && $idents > 1) {
+ $first_id = false;
+ for ($i = 1; $i < $idents; $i ++) {
+ $cur_email_address = getPref($data_dir, $username,
+ 'email_address' . $i);
+ $cur_email_address = strtolower(trim($cur_email_address));
+ $excl_ar[$cur_email_address] = '';
+ }
+ }
+ }
+
+ /**
+ * 3) get the addresses.
+ */
+ $url_replytoall_ar = $header->getAddr_a(array('to','cc'), $excl_ar);
+
+ /**
+ * 4) generate the string.
+ */
+ $url_replytoallcc = '';
+ foreach( $url_replytoall_ar as $email => $personal) {
+ if ($personal) {
+ $url_replytoallcc .= ", $personal <$email>";
+ } else {
+ $url_replytoallcc .= ', '. $email;
+ }
+ }
+ $url_replytoallcc = substr($url_replytoallcc,2);
+
+ return $url_replytoallcc;
+}
+
+function getReplyCitation($orig_from) {
+ global $reply_citation_style, $reply_citation_start, $reply_citation_end;
+ $orig_from = decodeHeader($orig_from->getAddress(false),false,false);
+// $from = decodeHeader($orig_header->getAddr_s('from',"\n$indent"),false,false);
+ /* First, return an empty string when no citation style selected. */
+ if (($reply_citation_style == '') || ($reply_citation_style == 'none')) {
+ return '';
+ }
+
+ /* Make sure our final value isn't an empty string. */
+ if ($orig_from == '') {
+ return '';
+ }
+
+ /* Otherwise, try to select the desired citation style. */
+ switch ($reply_citation_style) {
+ case 'author_said':
+ $start = '';
+ $end = ' ' . _("said") . ':';
+ break;
+ case 'quote_who':
+ $start = '<' . _("quote") . ' ' . _("who") . '="';
+ $end = '">';
+ break;
+ case 'user-defined':
+ $start = $reply_citation_start .
+ ($reply_citation_start == '' ? '' : ' ');
+ $end = $reply_citation_end;
+ break;
+ default:
+ return '';
+ }
+
+ /* Build and return the citation string. */
+ return ($start . $orig_from . $end . "\n");
+}
+
+function getforwardHeader($orig_header) {
+ global $editor_size;
+
+ $display = array( _("Subject") => strlen(_("Subject")),
+ _("From") => strlen(_("From")),
+ _("Date") => strlen(_("Date")),
+ _("To") => strlen(_("To")),
+ _("Cc") => strlen(_("Cc")) );
+ $maxsize = max($display);
+ $indent = str_pad('',$maxsize+2);
+ foreach($display as $key => $val) {
+ $display[$key] = $key .': '. str_pad('', $maxsize - $val);
+ }
+ $from = decodeHeader($orig_header->getAddr_s('from',"\n$indent"),false,false);
+ $from = str_replace(' ',' ',$from);
+ $to = decodeHeader($orig_header->getAddr_s('to',"\n$indent"),false,false);
+ $to = str_replace(' ',' ',$to);
+ $subject = decodeHeader($orig_header->subject,false,false);
+ $subject = str_replace(' ',' ',$subject);
+ $bodyTop = str_pad(' '._("Original Message").' ',$editor_size -2,'-',STR_PAD_BOTH) .
+ "\n". $display[_("Subject")] . $subject . "\n" .
+ $display[_("From")] . $from . "\n" .
+ $display[_("Date")] . getLongDateString( $orig_header->date ). "\n" .
+ $display[_("To")] . $to . "\n";
+ if ($orig_header->cc != array() && $orig_header->cc !='') {
+ $cc = decodeHeader($orig_header->getAddr_s('cc',"\n$indent"),false,false);
+ $cc = str_replace(' ',' ',$cc);
+ $bodyTop .= $display[_("Cc")] .$cc . "\n";
+ }
+ $bodyTop .= str_pad('', $editor_size -2 , '-') .
+ "\n\n";
+ return $bodyTop;