* it was doing. */
if (empty($convert)) {
foreach (array_diff(array_keys($ret['params']), array_keys($convert)) as $name) {
- $ret['params'][$name] = self::decode($ret['params'][$name]);
+ $ret['params'][$name] = self::decode($ret['params'][$name], $charset);
}
}
* @param array $ob The address object to be turned into a string.
* @param array $opts Additional options:
* <pre>
+ * 'charset' - (string) The local charset.
+ * DEFAULT: NONE
* 'filter' - (mixed) A user@example.com style bare address to ignore.
* Either single string or an array of strings. If the address
* matches $filter, an empty string will be returned.
*/
static public function addrObject2String($ob, $opts = array())
{
+ $opts = array_merge(array(
+ 'charset' => null
+ ), $opts);
+
/* If the personal name is set, decode it. */
$ob['personal'] = isset($ob['personal'])
- ? Horde_Mime::decode($ob['personal'])
+ ? Horde_Mime::decode($ob['personal'], $opts['charset'])
: '';
/* If both the mailbox and the host are empty, return an empty string.
* @param array $addresses The array of address objects.
* @param array $opts Additional options:
* <pre>
+ * 'charset' - (string) The local charset.
+ * DEFAULT: NONE
* 'filter' - (mixed) A user@example.com style bare address to ignore.
* Either single string or an array of strings.
* DEFAULT: No filter
* @param array $obs An array of header objects.
* @param array $opts Additional options:
* <pre>
+ * 'charset' - (string) The local charset.
+ * DEFAULT: NONE
* 'filter' - (mixed) A user@example.com style bare address to ignore.
* Either single string or an array of strings.
* DEFAULT: No filter
*/
static public function getAddressesFromObject($obs, $opts = array())
{
+ $opts = array_merge(array(
+ 'charset' => null
+ ), $opts);
+
$ret = array();
if (!is_array($obs) || empty($obs)) {
foreach ($obs as $ob) {
if (isset($ob['groupname'])) {
$ret[] = array(
- 'addresses' => self::getAddressesFromObject($ob['addresses']),
+ 'addresses' => self::getAddressesFromObject($ob['addresses'], $opts),
'groupname' => $ob['groupname']
);
continue;
/* Ensure we're working with initialized values. */
if (!empty($ob['personal'])) {
- $ob['personal'] = trim(stripslashes(Horde_Mime::decode($ob['personal'])), '"');
+ $ob['personal'] = trim(stripslashes(Horde_Mime::decode($ob['personal'], $opts['charset'])), '"');
}
$inner = self::writeAddress($ob['mailbox'], $ob['host']);
$value = '';
}
} else {
- $value = Horde_Mime::decode($value);
+ $value = Horde_Mime::decode($value, null);
}
}
$header['to'] = $imp_headers->getValue('to');
}
if (empty($header['to'])) {
- ($header['to'] = Horde_Mime_Address::addrArray2String($imp_headers->getOb('from'))) ||
- ($header['to'] = Horde_Mime_Address::addrArray2String($imp_headers->getOb('reply-to')));
+ ($header['to'] = Horde_Mime_Address::addrArray2String($imp_headers->getOb('from'), array('charset' => $registry->getCharset()))) ||
+ ($header['to'] = Horde_Mime_Address::addrArray2String($imp_headers->getOb('reply-to'), array('charset' => $registry->getCharset())));
}
break;
/* If this is the first page load for this compose item, add auto BCC
* addresses. */
if (!$vars->compose_formToken && ($vars->actionID != 'draft')) {
- $header['bcc'] = Horde_Mime_Address::addrArray2String($identity->getBccAddresses());
+ $header['bcc'] = Horde_Mime_Address::addrArray2String($identity->getBccAddresses(), array('charset' => $registry->getCharset()));
}
foreach (array('to', 'cc', 'bcc', 'subject') as $val) {
// // the same domain.
// $flags = array();
//
-// $from_ob = Horde_Mime_Address::getAddressesFromObject($data['envelope']['from']);
+// $from_ob = Horde_Mime_Address::getAddressesFromObject($data['envelope']['from'], array('charset' => $GLOBALS['registry']->getCharset()));
// if (!empty($from_ob) &&
// (strcasecmp($from_ob[0]['host'], 'example.com') === 0)) {
// /* The '$indomain' flag in this example must have already been
$identity_id = $identity->getMatchingIdentity($fromaddr);
}
+ $charset = $GLOBALS['registry']->getCharset();
$header = array(
- 'to' => Horde_Mime_Address::addrArray2String($headers->getOb('to')),
- 'cc' => Horde_Mime_Address::addrArray2String($headers->getOb('cc')),
- 'bcc' => Horde_Mime_Address::addrArray2String($headers->getOb('bcc')),
+ 'to' => Horde_Mime_Address::addrArray2String($headers->getOb('to'), array('charset' => $charset)),
+ 'cc' => Horde_Mime_Address::addrArray2String($headers->getOb('cc'), array('charset' => $charset)),
+ 'bcc' => Horde_Mime_Address::addrArray2String($headers->getOb('bcc'), array('charset' => $charset)),
'subject' => $headers->getValue('subject')
);
'subject' => ''
);
+ $charset = $GLOBALS['registry']->getCharset();
$h = $contents->getHeaderOb();
$match_identity = $this->_getMatchingIdentity($h);
$reply_type = 'reply';
$force = false;
if (in_array($type, array('reply', 'reply_auto', '*'))) {
if (($header['to'] = $to) ||
- ($header['to'] = Horde_Mime_Address::addrArray2String($h->getOb('reply-to')))) {
+ ($header['to'] = Horde_Mime_Address::addrArray2String($h->getOb('reply-to'), array('charset' => $charset)))) {
$force = true;
} else {
- $header['to'] = Horde_Mime_Address::addrArray2String($h->getOb('from'));
+ $header['to'] = Horde_Mime_Address::addrArray2String($h->getOb('from'), array('charset' => $charset));
}
if ($type == '*') {
$ob = $h->getOb($val);
if (!empty($ob)) {
- $addr_obs = Horde_Mime_Address::getAddressesFromObject($ob, array('filter' => $all_addrs));
+ $addr_obs = Horde_Mime_Address::getAddressesFromObject($ob, array('charset' => $charset, 'filter' => $all_addrs));
if (!empty($addr_obs)) {
if (isset($addr_obs[0]['groupname'])) {
$cc_addrs = array_merge($cc_addrs, $addr_obs);
if (!$addr_obs[0]['personal'] &&
($to_ob = $h->getOb('from')) &&
$to_ob[0]['personal'] &&
- ($to_addr = Horde_Mime_Address::addrArray2String($to_ob)) &&
+ ($to_addr = Horde_Mime_Address::addrArray2String($to_ob, array('charset' => $charset))) &&
Horde_Mime_Address::bareAddress($to_addr) == $addr_obs[0]['address']) {
$header['to'] = $to_addr;
} else {
$header[empty($header['to']) ? 'to' : 'cc'] = rtrim(implode('', $hdr_cc), ' ,');
/* Build the Bcc: header. */
- $header['bcc'] = Horde_Mime_Address::addrArray2String($h->getOb('bcc') + $identity->getBccAddresses(), array('filter' => $all_addrs));
+ $header['bcc'] = Horde_Mime_Address::addrArray2String($h->getOb('bcc') + $identity->getBccAddresses(), array('charset' => $charset, 'filter' => $all_addrs));
if ($type == '*') {
$all_headers['reply_all'] = $header;
}
);
}
- $from = Horde_Mime_Address::addrArray2String($h->getOb('from'));
+ $from = Horde_Mime_Address::addrArray2String($h->getOb('from'), array('charset' => $charset));
if ($prefs->getValue('reply_headers') && !empty($h)) {
$msg_pre = '----- ' .
}
if (in_array($type, array('forward_body', 'forward_both'))) {
- $from = Horde_Mime_Address::addrArray2String($h->getOb('from'));
+ $from = Horde_Mime_Address::addrArray2String($h->getOb('from'), array('charset' => $GLOBALS['registry']->getCharset()));
$msg_pre = "\n----- " .
($from ? sprintf(_("Forwarded message from %s"), $from) : _("Forwarded message")) .
*/
protected function _getMsgHeaders($h)
{
+ $charset = $GLOBALS['registry']->getCharset();
$tmp = array();
if (($ob = $h->getValue('date'))) {
$tmp[_("Date")] = $ob;
}
- if (($ob = Horde_Mime_Address::addrArray2String($h->getOb('from')))) {
+ if (($ob = Horde_Mime_Address::addrArray2String($h->getOb('from'), array('charset' => $charset)))) {
$tmp[_("From")] = $ob;
}
- if (($ob = Horde_Mime_Address::addrArray2String($h->getOb('reply-to')))) {
+ if (($ob = Horde_Mime_Address::addrArray2String($h->getOb('reply-to'), array('charset' => $charset)))) {
$tmp[_("Reply-To")] = $ob;
}
$tmp[_("Subject")] = $ob;
}
- if (($ob = Horde_Mime_Address::addrArray2String($h->getOb('to')))) {
+ if (($ob = Horde_Mime_Address::addrArray2String($h->getOb('to'), array('charset' => $charset)))) {
$tmp[_("To")] = $ob;
}
- if (($ob = Horde_Mime_Address::addrArray2String($h->getOb('cc')))) {
+ if (($ob = Horde_Mime_Address::addrArray2String($h->getOb('cc'), array('charset' => $charset)))) {
$tmp[_("Cc")] = $ob;
}
* 'personal' - (mixed) Personal message info. Either an array of to
* addresses as returned by
* Horde_Mime_Address::getAddressesFromObject(), or the
- * identity that matched the address list..
+ * identity that matched the address list.
* 'priority' - (Horde_Mime_Headers) Determines priority information from
* a headers object.
* </pre>
// Sent mail display name
'smf_display' => IMP::displayFolder($identity->getValue('sent_mail_folder', $ident)),
// Bcc addresses to add
- 'bcc' => Horde_Mime_Address::addrArray2String($identity->getBccAddresses($ident))
+ 'bcc' => Horde_Mime_Address::addrArray2String($identity->getBccAddresses($ident), array('charset' => $GLOBALS['registry']->getCharset()))
);
}
$this->_cache['drafts_sm_folder'] = IMP::isSpecialFolder($this->_mailbox);
}
- $from = Horde_Mime_Address::getAddressesFromObject($ob['from']);
+ $from = Horde_Mime_Address::getAddressesFromObject($ob['from'], array('charset' => $GLOBALS['registry']->getCharset()));
$from = reset($from);
if (empty($from)) {
$ret['from'] = _("Undisclosed Recipients");
$ret['error'] = true;
} else {
- $to = Horde_Mime_Address::getAddressesFromObject($ob['to']);
+ $to = Horde_Mime_Address::getAddressesFromObject($ob['to'], array('charset' => $GLOBALS['registry']->getCharset()));
$first_to = reset($to);
if (empty($first_to)) {
$ret['from'] = _("Undisclosed Recipients");
} catch (Horde_Exception $e) {}
}
- foreach (Horde_Mime_Address::getAddressesFromObject($addrlist) as $ob) {
+ foreach (Horde_Mime_Address::getAddressesFromObject($addrlist, array('charset' => $registry->getCharset())) as $ob) {
if (isset($ob['groupname'])) {
$group_array = array();
foreach ($ob['addresses'] as $ad) {
$flag_parse = $GLOBALS['injector']->getInstance('IMP_Imap_Flags')->parse(array(
'atc' => isset($ob['structure']) ? $ob['structure'] : null,
'flags' => $ob['flags'],
- 'personal' => Horde_Mime_Address::getAddressesFromObject($ob['envelope']['to']),
+ 'personal' => Horde_Mime_Address::getAddressesFromObject($ob['envelope']['to'], array('charset' => $charset)),
'priority' => $ob['headers']
));
$addr_array = array();
- foreach (Horde_Mime_Address::getAddressesFromObject($addrlist) as $ob) {
+ foreach (Horde_Mime_Address::getAddressesFromObject($addrlist, array('charset' => $GLOBALS['registry']->getCharset())) as $ob) {
if (!empty($ob['inner'])) {
try {
$tmp = array('raw' => Horde::callHook('dimp_addressformatting', array($ob), 'imp'));
/* Get flag information. */
$flag_parse = $injector->getInstance('IMP_Imap_Flags')->parse(array(
'flags' => $ob['flags'],
- 'personal' => Horde_Mime_Address::getAddressesFromObject($ob['envelope']['to']),
+ 'personal' => Horde_Mime_Address::getAddressesFromObject($ob['envelope']['to'], array('charset' => $registry->getCharset())),
'priority' => $ob['headers']
));
'atc' => isset($ob['structure']) ? $ob['structure'] : null,
'div' => true,
'flags' => $ob['flags'],
- 'personal' => Horde_Mime_Address::getAddressesFromObject($ob['envelope']['to']),
+ 'personal' => Horde_Mime_Address::getAddressesFromObject($ob['envelope']['to'], array('charset' => $registry->getCharset())),
'priority' => $ob['headers']
));
$menu[] = array(_("Reply to List"), IMP::composeLink(array(), array('a' => 'rl') + $compose_params));
}
- if (Horde_Mime_Address::addrArray2String(array_merge($envelope['to'], $envelope['cc']), array('filter' => array_keys($user_identity->getAllFromAddresses(true))))) {
+ if (Horde_Mime_Address::addrArray2String(array_merge($envelope['to'], $envelope['cc']), array('charset' => $registry->getCharset(), 'filter' => array_keys($user_identity->getAllFromAddresses(true))))) {
$menu[] = array(_("Reply All"), IMP::composeLink(array(), array('a' => 'ra') + $compose_params));
}
/* Build Reply-To address link. */
if (!empty($envelope['reply-to']) &&
- (Horde_Mime_Address::bareAddress(Horde_Mime_Address::addrObject2String(reset($envelope['from']))) !=
- Horde_Mime_Address::bareAddress(Horde_Mime_Address::addrObject2String(reset($envelope['reply-to'])))) &&
+ (Horde_Mime_Address::bareAddress(Horde_Mime_Address::addrObject2String(reset($envelope['from']), array('charset' => $registry->getCharset()))) !=
+ Horde_Mime_Address::bareAddress(Horde_Mime_Address::addrObject2String(reset($envelope['reply-to']), array('charset' => $registry->getCharset())))) &&
($reply_to = $imp_ui->buildAddressLinks($envelope['reply-to'], $self_link))) {
$display_headers['reply-to'] = $reply_to;
}
$a_template->set('reply_list', Horde::widget(IMP::composeLink(array(), array('actionID' => 'reply_list') + $compose_params), _("To List"), 'widget', '', '', _("To _List"), true));
}
- if (Horde_Mime_Address::addrArray2String(array_merge($envelope['to'], $envelope['cc']), array('filter' => array_keys($user_identity->getAllFromAddresses(true))))) {
+ if (Horde_Mime_Address::addrArray2String(array_merge($envelope['to'], $envelope['cc']), array('charset' => $registry->getCharset(), 'filter' => array_keys($user_identity->getAllFromAddresses(true))))) {
$a_template->set('show_reply_all', Horde::widget(IMP::composeLink(array(), array('actionID' => 'reply_all') + $compose_params), _("To All"), 'widget', '', '', _("To _All"), true));
}
'description' => isset($ob['preview']) ? $ob['preview'] : '',
'url' => Horde::applicationURL(IMP::generateIMPUrl('message.php', $mailbox, $ob['uid'], $mailbox), true, -1),
'fromAddr' => $from_addr['fullfrom'],
- 'toAddr' => Horde_Mime_Address::addrArray2String(isset($ob['envelope']['to']) ? $ob['envelope']['to'] : array())
+ 'toAddr' => Horde_Mime_Address::addrArray2String(isset($ob['envelope']['to']) ? $ob['envelope']['to'] : array(), array('charset' => $GLOBALS['registry']->getCharset()))
));
}
}
if (IMP::isSpecialFolder($mbox)) {
$curr_msg['addr_to'] = true;
$curr_msg['addr'] = _("To:") . ' ' . $imp_ui->buildAddressLinks($envelope['to'], Horde::selfUrl(true));
- $addr = _("To:") . ' ' . htmlspecialchars(Horde_Mime_Address::addrObject2String(reset($envelope['to'])), ENT_COMPAT, $charset);
+ $addr = _("To:") . ' ' . htmlspecialchars(Horde_Mime_Address::addrObject2String(reset($envelope['to']), array('charset' => $charset)), ENT_COMPAT, $charset);
} else {
$curr_msg['addr_to'] = false;
$curr_msg['addr'] = $imp_ui->buildAddressLinks($envelope['from'], Horde::selfUrl(true));
- $addr = htmlspecialchars(Horde_Mime_Address::addrObject2String(reset($envelope['from'])), ENT_COMPAT, $charset);
+ $addr = htmlspecialchars(Horde_Mime_Address::addrObject2String(reset($envelope['from']), array('charset' => $charset)), ENT_COMPAT, $charset);
}
$subject_header = htmlspecialchars($envelope['subject'], ENT_COMPAT, $charset);
* address match. */
$msgs = $this->_api->fetchEnvelope($indices);
foreach ($msgs as $k => $v) {
- $from_addr = Horde_Mime_Address::bareAddress(Horde_Mime_Address::addrArray2String($v['envelope']['from']));
+ $from_addr = Horde_Mime_Address::bareAddress(Horde_Mime_Address::addrArray2String($v['envelope']['from'], array('charset' => $this->_params['charset'])));
$found = false;
foreach ($addr as $val) {
if (strtolower($from_addr) == strtolower($val)) {
$GLOBALS['notification']->push(
sprintf(_("Filter activity: The message \"%s\" from \"%s\" has been moved to the folder \"%s\"."),
!empty($msg['envelope']['subject']) ? Horde_Mime::decode($msg['envelope']['subject'], $this->_params['charset']) : _("[No Subject]"),
- !empty($msg['envelope']['from']) ? Horde_Mime::decode(Horde_Mime_Address::addrArray2String($msg['envelope']['from']), $this->_params['charset']) : _("[No Sender]"),
+ !empty($msg['envelope']['from']) ? Horde_Mime::decode(Horde_Mime_Address::addrArray2String($msg['envelope']['from'], $this->_params['charset']), $this->_params['charset']) : _("[No Sender]"),
Horde_String::convertCharset($rule['action-value'], 'UTF7-IMAP', $this->_params['charset'])),
'horde.message');
}