1: <?php
2: 3: 4: 5: 6:
7:
8:
9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
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)) {
64: $$_key = smarty_function_escape_special_chars($_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:
141:
142: ?>
143: