Back to Email class

Method cloak

public static string
cloak
(mixed $mail, mixed $mailto = true, mixed $text = '', mixed $email = true, mixed $attribsBefore = '', mixed $attribsAfter = '')
Simple JavaScript email cloaker
Parameters
  • string $mail The -mail address to cloak.
  • bool $mailto True if text and mailing address differ
  • string $text Text for the link
  • bool $email True if text is an email address
  • string $attribsBefore Any attributes before the email address
  • string $attribsAfter Any attributes before the email address
Returns
  • string The cloaked email.
Since
  • 1.5
Class: Email
Project: Joomla

Method cloak - Source code

/**
 * Simple JavaScript email cloaker
 *
 * By default replaces an email with a mailto link with email cloaked
 *
 * @param   string   $mail           The -mail address to cloak.
 * @param   boolean  $mailto         True if text and mailing address differ
 * @param   string   $text           Text for the link
 * @param   boolean  $email          True if text is an email address
 * @param   string   $attribsBefore  Any attributes before the email address
 * @param   string   $attribsAfter   Any attributes before the email address
 *
 * @return  string  The cloaked email.
 *
 * @since   1.5
 */
public static function cloak($mail, $mailto = true, $text = '', $email = true, $attribsBefore = '', $attribsAfter = '')
{
    // Handle IDN addresses: punycode for href but utf-8 for text displayed.
    if ($mailto && (empty($text) || $email)) {
        // Use dedicated $text whereas $mail is used as href and must be punycoded.
        $text = PunycodeHelper::emailToUTF8($text ?: $mail);
    } elseif (!$mailto) {
        // In that case we don't use link - so convert $mail back to utf-8.
        $mail = PunycodeHelper::emailToUTF8($mail);
    }
    // Split email by @ symbol
    $mail = explode('@', $mail);
    $name = @$mail[0];
    $domain = @$mail[1];
    // Include the email cloaking script
    Factory::getDocument()->getWebAssetManager()->useScript('webcomponent.hidden-mail');
    return '<joomla-hidden-mail ' . $attribsBefore . ' is-link="' . $mailto . '" is-email="' . $email . '" first="' . base64_encode($name) . '" last="' . base64_encode($domain) . '" text="' . base64_encode($text) . '" base="' . Uri::root(true) . '" ' . $attribsAfter . '>' . Text::_('JLIB_HTML_CLOAKING') . '</joomla-hidden-mail>';
}