protected function _buildAddressLinks(Horde_Mail_Rfc822_List $addrlist, $addURL = null, $link = true)
{
global $prefs, $registry;
$add_link = null;
$addr_array = array();
/* Set up the add address icon link if contact manager is
* available. */
if (!is_null($addURL) && $link && $prefs->getValue('add_source')) {
try {
$add_link = $registry->hasMethod('contacts/import') ? $addURL->copy()->add('actionID', 'add_address') : null;
} catch (Horde_Exception $e) {
}
}
$addrlist->setIteratorFilter();
foreach ($addrlist->base_addresses as $ob) {
if ($ob instanceof Horde_Mail_Rfc822_Group) {
$group_array = array();
foreach ($ob->addresses as $ad) {
$ret = htmlspecialchars(strval($ad));
if ($link) {
$clink = new IMP_Compose_Link(array('to' => strval($ad)));
$ret = Horde::link($clink->link(), sprintf(_("New Message to %s"), strval($ad))) . $ret . '</a>';
}
/* Append the add address icon to every address if contact
* manager is available. */
if ($add_link) {
$curr_link = $add_link->copy()->add(array('address' => $ad->bare_address, 'name' => $ad->personal));
$ret .= Horde::link($curr_link, sprintf(_("Add %s to my Address Book"), $ad->bare_address)) . '<span class="iconImg addrbookaddImg"></span></a>';
}
$group_array[] = $ret;
}
$addr_array[] = htmlspecialchars($ob->groupname) . ':' . (count($group_array) ? ' ' . implode(', ', $group_array) : '');
} else {
$ret = htmlspecialchars(strval($ob));
if ($link) {
$clink = new IMP_Compose_Link(array('to' => strval($ob)));
$ret = Horde::link($clink->link(), sprintf(_("New Message to %s"), strval($ob))) . $ret . '</a>';
}
/* Append the add address icon to every address if contact
* manager is available. */
if ($add_link) {
$curr_link = $add_link->copy()->add(array('address' => $ob->bare_address, 'name' => $ob->personal));
$ret .= Horde::link($curr_link, sprintf(_("Add %s to my Address Book"), $ob->bare_address)) . '<span class="iconImg addrbookaddImg"></span></a>';
}
$addr_array[] = $ret;
}
}
/* If left with an empty address list ($ret), inform the user that the
* recipient list is purposely "undisclosed". */
if (empty($addr_array)) {
$ret = _("Undisclosed Recipients");
} else {
/* Build the address line. */
$addr_count = count($addr_array);
$ret = '<span class="nowrap">' . implode(',</span> <span class="nowrap">', $addr_array) . '</span>';
if ($link && $addr_count > 15) {
$ret = '<span>' . '<span onclick="[ this, this.next(), this.next(1) ].invoke(\'toggle\')" class="widget largeaddrlist">' . sprintf(_("Show Addresses (%d)"), $addr_count) . '</span>' . '<span onclick="[ this, this.previous(), this.next() ].invoke(\'toggle\')" class="widget largeaddrlist" style="display:none">' . _("Hide Addresses") . '</span>' . '<span style="display:none">' . $ret . '</span></span>';
}
}
return $ret;
}