芝麻web文件管理V1.00
编辑当前文件:/home/pulsehostuk9/www/portal.pulsehost.co.uk/vendor/smarty/smarty/libs/plugins/function.mailto.php
* @author credits to Jason Sweat (added cc, bcc and subject functionality) * * @param array $params parameters * * @return string */ function smarty_function_mailto($params) { static $_allowed_encoding = array( 'javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true ); $extra = ''; if (empty($params[ 'address' ])) { trigger_error("mailto: missing 'address' parameter", E_USER_WARNING); return; } else { $address = $params[ 'address' ]; } $text = $address; // netscape and mozilla do not decode %40 (@) in BCC field (bug?) // so, don't encode it. $mail_parms = array(); foreach ($params as $var => $value) { switch ($var) { case 'cc': case 'bcc': case 'followupto': if (!empty($value)) { $mail_parms[] = $var . '=' . str_replace(array('%40', '%2C'), array('@', ','), rawurlencode($value)); } break; case 'subject': case 'newsgroups': $mail_parms[] = $var . '=' . rawurlencode($value); break; case 'extra': case 'text': $$var = $value; // no break default: } } if ($mail_parms) { $address .= '?' . join('&', $mail_parms); } $encode = (empty($params[ 'encode' ])) ? 'none' : $params[ 'encode' ]; if (!isset($_allowed_encoding[ $encode ])) { trigger_error( "mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex", E_USER_WARNING ); return; } $flags = ENT_QUOTES; if (defined('ENT_SUBSTITUTE') && defined('ENT_HTML401')) { $flags |= ENT_SUBSTITUTE | ENT_HTML401; } $string = '
' . htmlspecialchars($text, $flags, Smarty::$_CHARSET) . '
'; if ($encode === 'javascript') { $js_encode = ''; for ($x = 0, $_length = strlen($string); $x < $_length; $x++) { $js_encode .= '%' . bin2hex($string[ $x ]); } return ''; } elseif ($encode === 'javascript_charcode') { for ($x = 0, $_length = strlen($string); $x < $_length; $x++) { $ord[] = ord($string[ $x ]); } return ''; } elseif ($encode === 'hex') { preg_match('!^(.*)(\?.*)$!', $address, $match); if (!empty($match[ 2 ])) { trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING); return; } $address_encode = ''; for ($x = 0, $_length = strlen($address); $x < $_length; $x++) { if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[ $x ])) { $address_encode .= '%' . bin2hex($address[ $x ]); } else { $address_encode .= $address[ $x ]; } } $text_encode = ''; for ($x = 0, $_length = strlen($text); $x < $_length; $x++) { $text_encode .= '' . bin2hex($text[ $x ]) . ';'; } $mailto = "mailto:"; return '
' . $text_encode . '
'; } else { // no encoding return $string; } }