[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/libraries/Smarty/libs/plugins/ -> function.html_image.php (source)

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


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1