- 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;
+ global $include_self_reply_all, $idents;
+ $excl_ar = array();
+ /**
+ * 1) Remove the addresses we'll be sending the message 'to'
+ */
+ if (isset($header->reply_to)) {
+ $excl_ar = $header->getAddr_a('reply_to');
+ }
+ /**
+ * 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) {
+ foreach($idents as $id) {
+ $excl_ar[strtolower(trim($id['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) {
+ // if personal name contains address separator then surround
+ // the personal name with double quotes.
+ if (strpos($personal,',') !== false) {
+ $personal = '"'.$personal.'"';
+ }
+ $url_replytoallcc .= ", $personal <$email>";
+ } else {
+ $url_replytoallcc .= ', '. $email;
+ }
+ }
+ $url_replytoallcc = substr($url_replytoallcc,2);
+
+ return $url_replytoallcc;
+}
+
+/**
+ * creates top line in reply citations
+ *
+ * Line style depends on user preferences.
+ * $orig_date argument is available only from 1.4.3 and 1.5.1 version.
+ * @param object $orig_from From: header object.
+ * @param integer $orig_date email's timestamp
+ * @return string reply citation
+ */
+function getReplyCitation($orig_from, $orig_date) {
+ global $reply_citation_style, $reply_citation_start, $reply_citation_end;
+
+ if (!is_object($orig_from)) {
+ $sOrig_from = '';
+ } else {
+ $sOrig_from = decodeHeader($orig_from->getAddress(false),false,false,true);
+ }
+
+ /* 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 ($sOrig_from == '') {
+ return '';
+ }
+
+ /* Otherwise, try to select the desired citation style. */
+ switch ($reply_citation_style) {
+ case 'author_said':
+ /**
+ * To translators: %s is for author's name
+ */
+ $full_reply_citation = sprintf(_("%s wrote:"),$sOrig_from);
+ break;
+ case 'quote_who':
+ $start = '<quote who="';
+ $end = '">';
+ $full_reply_citation = $start . $sOrig_from . $end;
+ break;
+ case 'date_time_author':
+ /**
+ * To translators:
+ * first %s is for date string, second %s is for author's name. Date uses
+ * formating from "D, F j, Y g:i a" and "D, F j, Y H:i" translations.
+ * Example string:
+ * "On Sat, December 24, 2004 23:59, Santa wrote:"
+ * If you have to put author's name in front of date string, check comments about
+ * argument swapping at http://www.php.net/sprintf
+ */
+ $full_reply_citation = sprintf(_("On %s, %s wrote:"), getLongDateString($orig_date), $sOrig_from);
+ break;
+ case 'user-defined':
+ $start = $reply_citation_start .
+ ($reply_citation_start == '' ? '' : ' ');
+ $end = $reply_citation_end;
+ $full_reply_citation = $start . $sOrig_from . $end;
+ break;
+ default:
+ return '';
+ }
+
+ /* Add line feed and return the citation string. */
+ return ($full_reply_citation . "\n");