XOOPS 2.5.6  Final
 All Classes Namespaces Files Functions Variables Pages
function.html_image.php
Go to the documentation of this file.
1 <?php
37 function smarty_function_html_image($params, &$smarty)
38 {
39  require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
40 
41  $alt = '';
42  $file = '';
43  $height = '';
44  $width = '';
45  $extra = '';
46  $prefix = '';
47  $suffix = '';
48  $path_prefix = '';
49  $server_vars = ($smarty->request_use_auto_globals) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS'];
50  $basedir = isset($server_vars['DOCUMENT_ROOT']) ? $server_vars['DOCUMENT_ROOT'] : '';
51  foreach($params as $_key => $_val) {
52  switch($_key) {
53  case 'file':
54  case 'height':
55  case 'width':
56  case 'dpi':
57  case 'path_prefix':
58  case 'basedir':
59  $$_key = $_val;
60  break;
61 
62  case 'alt':
63  if(!is_array($_val)) {
65  } else {
66  $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
67  }
68  break;
69 
70  case 'link':
71  case 'href':
72  $prefix = '<a href="' . $_val . '">';
73  $suffix = '</a>';
74  break;
75 
76  default:
77  if(!is_array($_val)) {
78  $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
79  } else {
80  $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
81  }
82  break;
83  }
84  }
85 
86  if (empty($file)) {
87  $smarty->trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE);
88  return;
89  }
90 
91  if (substr($file,0,1) == '/') {
92  $_image_path = $basedir . $file;
93  } else {
94  $_image_path = $file;
95  }
96 
97  if(!isset($params['width']) || !isset($params['height'])) {
98  if(!$_image_data = @getimagesize($_image_path)) {
99  if(!file_exists($_image_path)) {
100  $smarty->trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
101  return;
102  } else if(!is_readable($_image_path)) {
103  $smarty->trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE);
104  return;
105  } else {
106  $smarty->trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE);
107  return;
108  }
109  }
110  if ($smarty->security &&
111  ($_params = array('resource_type' => 'file', 'resource_name' => $_image_path)) &&
112  (require_once(SMARTY_CORE_DIR . 'core.is_secure.php')) &&
113  (!smarty_core_is_secure($_params, $smarty)) ) {
114  $smarty->trigger_error("html_image: (secure) '$_image_path' not in secure directory", E_USER_NOTICE);
115  }
116 
117  if(!isset($params['width'])) {
118  $width = $_image_data[0];
119  }
120  if(!isset($params['height'])) {
121  $height = $_image_data[1];
122  }
123 
124  }
125 
126  if(isset($params['dpi'])) {
127  if(strstr($server_vars['HTTP_USER_AGENT'], 'Mac')) {
128  $dpi_default = 72;
129  } else {
130  $dpi_default = 96;
131  }
132  $_resize = $dpi_default/$params['dpi'];
133  $width = round($width * $_resize);
134  $height = round($height * $_resize);
135  }
136 
137  return $prefix . '<img src="'.$path_prefix.$file.'" alt="'.$alt.'" width="'.$width.'" height="'.$height.'"'.$extra.' />' . $suffix;
138 }
139 
140 /* vim: set expandtab: */
141 
142 ?>