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 {html_image} function plugin
 11:  * Type:     function<br>
 12:  * Name:     html_image<br>
 13:  * Date:     Feb 24, 2003<br>
 14:  * Purpose:  format HTML tags for the image<br>
 15:  * Examples: {html_image file="/images/masthead.gif"}<br>
 16:  * Output:   <img src="/images/masthead.gif" width=400 height=23><br>
 17:  * Params:
 18:  * <pre>
 19:  * - file        - (required) - file (and path) of image
 20:  * - height      - (optional) - image height (default actual height)
 21:  * - width       - (optional) - image width (default actual width)
 22:  * - basedir     - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT
 23:  * - path_prefix - prefix for path output (optional, default empty)
 24:  * </pre>
 25:  *
 26:  * @link    http://www.smarty.net/manual/en/language.function.html.image.php {html_image}
 27:  *          (Smarty online manual)
 28:  * @author  Monte Ohrt <monte at ohrt dot com>
 29:  * @author  credits to Duda <duda@big.hu>
 30:  * @version 1.0
 31:  *
 32:  * @param array                    $params   parameters
 33:  * @param Smarty_Internal_Template $template template object
 34:  *
 35:  * @throws SmartyException
 36:  * @return string
 37:  * @uses    smarty_function_escape_special_chars()
 38:  */
 39: function smarty_function_html_image($params, $template)
 40: {
 41:     require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
 42: 
 43:     $alt = '';
 44:     $file = '';
 45:     $height = '';
 46:     $width = '';
 47:     $extra = '';
 48:     $prefix = '';
 49:     $suffix = '';
 50:     $path_prefix = '';
 51:     $basedir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : '';
 52:     foreach ($params as $_key => $_val) {
 53:         switch ($_key) {
 54:             case 'file':
 55:             case 'height':
 56:             case 'width':
 57:             case 'dpi':
 58:             case 'path_prefix':
 59:             case 'basedir':
 60:                 $$_key = $_val;
 61:                 break;
 62: 
 63:             case 'alt':
 64:                 if (!is_array($_val)) {
 65:                     $$_key = smarty_function_escape_special_chars($_val);
 66:                 } else {
 67:                     throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
 68:                 }
 69:                 break;
 70: 
 71:             case 'link':
 72:             case 'href':
 73:                 $prefix = '<a href="' . $_val . '">';
 74:                 $suffix = '</a>';
 75:                 break;
 76: 
 77:             default:
 78:                 if (!is_array($_val)) {
 79:                     $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
 80:                 } else {
 81:                     throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
 82:                 }
 83:                 break;
 84:         }
 85:     }
 86: 
 87:     if (empty($file)) {
 88:         trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE);
 89: 
 90:         return;
 91:     }
 92: 
 93:     if ($file[0] == '/') {
 94:         $_image_path = $basedir . $file;
 95:     } else {
 96:         $_image_path = $file;
 97:     }
 98: 
 99:     // strip file protocol
100:     if (stripos($params['file'], 'file://') === 0) {
101:         $params['file'] = substr($params['file'], 7);
102:     }
103: 
104:     $protocol = strpos($params['file'], '://');
105:     if ($protocol !== false) {
106:         $protocol = strtolower(substr($params['file'], 0, $protocol));
107:     }
108: 
109:     if (isset($template->smarty->security_policy)) {
110:         if ($protocol) {
111:             // remote resource (or php stream, …)
112:             if (!$template->smarty->security_policy->isTrustedUri($params['file'])) {
113:                 return;
114:             }
115:         } else {
116:             // local file
117:             if (!$template->smarty->security_policy->isTrustedResourceDir($_image_path)) {
118:                 return;
119:             }
120:         }
121:     }
122: 
123:     if (!isset($params['width']) || !isset($params['height'])) {
124:         // FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
125:         if (!$_image_data = @getimagesize($_image_path)) {
126:             if (!file_exists($_image_path)) {
127:                 trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
128: 
129:                 return;
130:             } elseif (!is_readable($_image_path)) {
131:                 trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE);
132: 
133:                 return;
134:             } else {
135:                 trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE);
136: 
137:                 return;
138:             }
139:         }
140: 
141:         if (!isset($params['width'])) {
142:             $width = $_image_data[0];
143:         }
144:         if (!isset($params['height'])) {
145:             $height = $_image_data[1];
146:         }
147:     }
148: 
149:     if (isset($params['dpi'])) {
150:         if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mac')) {
151:             // FIXME: (rodneyrehm) wrong dpi assumption
152:             // don't know who thought this up… even if it was true in 1998, it's definitely wrong in 2011.
153:             $dpi_default = 72;
154:         } else {
155:             $dpi_default = 96;
156:         }
157:         $_resize = $dpi_default / $params['dpi'];
158:         $width = round($width * $_resize);
159:         $height = round($height * $_resize);
160:     }
161: 
162:     return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' . $height . '"' . $extra . ' />' . $suffix;
163: }
164: 
CMS CONTENIDO 4.9.7 API documentation generated by ApiGen