Overview

Packages

  • CONTENIDO
  • Core
    • Authentication
    • Backend
    • Cache
    • CEC
    • Chain
    • ContentType
    • Database
    • Debug
    • Exception
    • Frontend
      • Search
      • URI
      • Util
    • GenericDB
      • Model
    • GUI
      • HTML
    • I18N
    • LayoutHandler
    • Log
    • Security
    • Session
    • Util
    • Validation
    • Versioning
    • XML
  • Module
    • ContentRssCreator
    • ContentSitemapHtml
    • ContentSitemapXml
    • ContentUserForum
    • NavigationTop
    • ScriptCookieDirective
  • mpAutoloaderClassMap
  • None
  • Plugin
    • ContentAllocation
    • CronjobOverview
    • FormAssistant
    • FrontendLogic
    • FrontendUsers
    • Linkchecker
    • ModRewrite
    • Newsletter
    • Repository
      • FrontendNavigation
      • KeywordDensity
    • SearchSolr
    • SmartyWrapper
    • UrlShortener
    • UserForum
    • Workflow
  • PluginManager
  • Setup
    • Form
    • GUI
    • Helper
      • Environment
      • Filesystem
      • MySQL
      • PHP
    • UpgradeJob
  • Smarty
    • Cacher
    • Compiler
    • Config
    • Debug
    • PluginsBlock
    • PluginsFilter
    • PluginsFunction
    • PluginsInternal
    • PluginsModifier
    • PluginsModifierCompiler
    • PluginsShared
    • Security
    • Template
    • TemplateResources
  • Swift
    • ByteStream
    • CharacterStream
    • Encoder
    • Events
    • KeyCache
    • Mailer
    • Mime
    • Plugins
    • Transport

Classes

  • Swift_FailoverTransport
  • Swift_LoadBalancedTransport
  • Swift_MailTransport
  • Swift_Plugins_Loggers_ArrayLogger
  • Swift_Plugins_Loggers_EchoLogger
  • Swift_SendmailTransport
  • Swift_SmtpTransport
  • Swift_Transport_AbstractSmtpTransport
  • Swift_Transport_Esmtp_Auth_CramMd5Authenticator
  • Swift_Transport_Esmtp_Auth_LoginAuthenticator
  • Swift_Transport_Esmtp_Auth_PlainAuthenticator
  • Swift_Transport_Esmtp_AuthHandler
  • Swift_Transport_EsmtpTransport
  • Swift_Transport_FailoverTransport
  • Swift_Transport_LoadBalancedTransport
  • Swift_Transport_MailTransport
  • Swift_Transport_SendmailTransport
  • Swift_Transport_SimpleMailInvoker
  • Swift_Transport_StreamBuffer

Interfaces

  • Swift_Plugins_Logger
  • Swift_Plugins_Pop_Pop3Exception
  • Swift_Transport
  • Swift_Transport_Esmtp_Authenticator
  • Swift_Transport_EsmtpHandler
  • Swift_Transport_IoBuffer
  • Swift_Transport_MailInvoker
  • Swift_Transport_SmtpAgent
  • Swift_TransportException
  • Overview
  • Package
  • Function
  • Todo
  • Download
  1: <?php
  2: /**
  3:  * Smarty plugin
  4:  *
  5:  * @package    Smarty
  6:  * @subpackage PluginsFunction
  7:  */
  8: 
  9: /**
 10:  * Smarty {mailto} function plugin
 11:  * Type:     function<br>
 12:  * Name:     mailto<br>
 13:  * Date:     May 21, 2002
 14:  * Purpose:  automate mailto address link creation, and optionally encode them.<br>
 15:  * Params:
 16:  * <pre>
 17:  * - address    - (required) - e-mail address
 18:  * - text       - (optional) - text to display, default is address
 19:  * - encode     - (optional) - can be one of:
 20:  *                             * none : no encoding (default)
 21:  *                             * javascript : encode with javascript
 22:  *                             * javascript_charcode : encode with javascript charcode
 23:  *                             * hex : encode with hexidecimal (no javascript)
 24:  * - cc         - (optional) - address(es) to carbon copy
 25:  * - bcc        - (optional) - address(es) to blind carbon copy
 26:  * - subject    - (optional) - e-mail subject
 27:  * - newsgroups - (optional) - newsgroup(s) to post to
 28:  * - followupto - (optional) - address(es) to follow up to
 29:  * - extra      - (optional) - extra tags for the href link
 30:  * </pre>
 31:  * Examples:
 32:  * <pre>
 33:  * {mailto address="me@domain.com"}
 34:  * {mailto address="me@domain.com" encode="javascript"}
 35:  * {mailto address="me@domain.com" encode="hex"}
 36:  * {mailto address="me@domain.com" subject="Hello to you!"}
 37:  * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
 38:  * {mailto address="me@domain.com" extra='class="mailto"'}
 39:  * </pre>
 40:  *
 41:  * @link     http://www.smarty.net/manual/en/language.function.mailto.php {mailto}
 42:  *           (Smarty online manual)
 43:  * @version  1.2
 44:  * @author   Monte Ohrt <monte at ohrt dot com>
 45:  * @author   credits to Jason Sweat (added cc, bcc and subject functionality)
 46:  *
 47:  * @param array $params parameters
 48:  *
 49:  * @return string
 50:  */
 51: function smarty_function_mailto($params)
 52: {
 53:     static $_allowed_encoding = array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true);
 54:     $extra = '';
 55: 
 56:     if (empty($params['address'])) {
 57:         trigger_error("mailto: missing 'address' parameter", E_USER_WARNING);
 58: 
 59:         return;
 60:     } else {
 61:         $address = $params['address'];
 62:     }
 63: 
 64:     $text = $address;
 65:     // netscape and mozilla do not decode %40 (@) in BCC field (bug?)
 66:     // so, don't encode it.
 67:     $search = array('%40', '%2C');
 68:     $replace = array('@', ',');
 69:     $mail_parms = array();
 70:     foreach ($params as $var => $value) {
 71:         switch ($var) {
 72:             case 'cc':
 73:             case 'bcc':
 74:             case 'followupto':
 75:             if (!empty($value)) {
 76:                 $mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value));
 77:             }
 78:                 break;
 79: 
 80:             case 'subject':
 81:             case 'newsgroups':
 82:                 $mail_parms[] = $var . '=' . rawurlencode($value);
 83:                 break;
 84: 
 85:             case 'extra':
 86:             case 'text':
 87:                 $$var = $value;
 88: 
 89:             default:
 90:         }
 91:     }
 92: 
 93:     if ($mail_parms) {
 94:         $address .= '?' . join('&', $mail_parms);
 95:     }
 96: 
 97:     $encode = (empty($params['encode'])) ? 'none' : $params['encode'];
 98:     if (!isset($_allowed_encoding[$encode])) {
 99:         trigger_error("mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex", E_USER_WARNING);
100: 
101:         return;
102:     }
103:     // FIXME: (rodneyrehm) document.write() excues me what? 1998 has passed!
104:     if ($encode == 'javascript') {
105:         $string = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');';
106: 
107:         $js_encode = '';
108:         for ($x = 0, $_length = strlen($string); $x < $_length; $x ++) {
109:             $js_encode .= '%' . bin2hex($string[$x]);
110:         }
111: 
112:         return '<script type="text/javascript">eval(unescape(\'' . $js_encode . '\'))</script>';
113:     } elseif ($encode == 'javascript_charcode') {
114:         $string = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
115: 
116:         for ($x = 0, $y = strlen($string); $x < $y; $x ++) {
117:             $ord[] = ord($string[$x]);
118:         }
119: 
120:         $_ret = "<script type=\"text/javascript\" language=\"javascript\">\n"
121:             . "{document.write(String.fromCharCode("
122:             . implode(',', $ord)
123:             . "))"
124:             . "}\n"
125:             . "</script>\n";
126: 
127:         return $_ret;
128:     } elseif ($encode == 'hex') {
129:         preg_match('!^(.*)(\?.*)$!', $address, $match);
130:         if (!empty($match[2])) {
131:             trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING);
132: 
133:             return;
134:         }
135:         $address_encode = '';
136:         for ($x = 0, $_length = strlen($address); $x < $_length; $x ++) {
137:             if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[$x])) {
138:                 $address_encode .= '%' . bin2hex($address[$x]);
139:             } else {
140:                 $address_encode .= $address[$x];
141:             }
142:         }
143:         $text_encode = '';
144:         for ($x = 0, $_length = strlen($text); $x < $_length; $x ++) {
145:             $text_encode .= '&#x' . bin2hex($text[$x]) . ';';
146:         }
147: 
148:         $mailto = "&#109;&#97;&#105;&#108;&#116;&#111;&#58;";
149: 
150:         return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>';
151:     } else {
152:         // no encoding
153:         return '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
154:     }
155: }
156: 
CMS CONTENIDO 4.9.7 API documentation generated by ApiGen