mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-03 22:01:36 +01:00 
			
		
		
		
	- fix PSR-2 coding standards and PHPDoc blocks https://github.com/smarty-php/smarty/pull/452
https://github.com/smarty-php/smarty/pull/475 https://github.com/smarty-php/smarty/pull/473 - bugfix PHP5.2 compatibility https://github.com/smarty-php/smarty/pull/472
This commit is contained in:
		@@ -5,7 +5,6 @@
 | 
			
		||||
 * @package    Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {html_image} function plugin
 | 
			
		||||
 * Type:     function
 | 
			
		||||
@@ -33,15 +32,14 @@
 | 
			
		||||
 *
 | 
			
		||||
 * @throws SmartyException
 | 
			
		||||
 * @return string
 | 
			
		||||
 * @uses   smarty_function_escape_special_chars()
 | 
			
		||||
 * @uses    smarty_function_escape_special_chars()
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_html_image($params, Smarty_Internal_Template $template)
 | 
			
		||||
{
 | 
			
		||||
    $template->_checkPlugins(
 | 
			
		||||
        array(array('function' => 'smarty_function_escape_special_chars',
 | 
			
		||||
        'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'))
 | 
			
		||||
                    'file'     => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'))
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    $alt = '';
 | 
			
		||||
    $file = '';
 | 
			
		||||
    $height = '';
 | 
			
		||||
@@ -53,61 +51,54 @@ function smarty_function_html_image($params, Smarty_Internal_Template $template)
 | 
			
		||||
    $basedir = isset($_SERVER[ 'DOCUMENT_ROOT' ]) ? $_SERVER[ 'DOCUMENT_ROOT' ] : '';
 | 
			
		||||
    foreach ($params as $_key => $_val) {
 | 
			
		||||
        switch ($_key) {
 | 
			
		||||
        case 'file':
 | 
			
		||||
        case 'height':
 | 
			
		||||
        case 'width':
 | 
			
		||||
        case 'dpi':
 | 
			
		||||
        case 'path_prefix':
 | 
			
		||||
        case 'basedir':
 | 
			
		||||
            $$_key = $_val;
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case 'alt':
 | 
			
		||||
            if (!is_array($_val)) {
 | 
			
		||||
                $$_key = smarty_function_escape_special_chars($_val);
 | 
			
		||||
            } else {
 | 
			
		||||
                throw new SmartyException("html_image: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case 'link':
 | 
			
		||||
        case 'href':
 | 
			
		||||
            $prefix = '<a href="' . $_val . '">';
 | 
			
		||||
            $suffix = '</a>';
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        default:
 | 
			
		||||
            if (!is_array($_val)) {
 | 
			
		||||
                $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
 | 
			
		||||
            } else {
 | 
			
		||||
                throw new SmartyException("html_image: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
            case 'file':
 | 
			
		||||
            case 'height':
 | 
			
		||||
            case 'width':
 | 
			
		||||
            case 'dpi':
 | 
			
		||||
            case 'path_prefix':
 | 
			
		||||
            case 'basedir':
 | 
			
		||||
                $$_key = $_val;
 | 
			
		||||
                break;
 | 
			
		||||
            case 'alt':
 | 
			
		||||
                if (!is_array($_val)) {
 | 
			
		||||
                    $$_key = smarty_function_escape_special_chars($_val);
 | 
			
		||||
                } else {
 | 
			
		||||
                    throw new SmartyException("html_image: extra attribute '{$_key}' cannot be an array",
 | 
			
		||||
                                              E_USER_NOTICE);
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
            case 'link':
 | 
			
		||||
            case 'href':
 | 
			
		||||
                $prefix = '<a href="' . $_val . '">';
 | 
			
		||||
                $suffix = '</a>';
 | 
			
		||||
                break;
 | 
			
		||||
            default:
 | 
			
		||||
                if (!is_array($_val)) {
 | 
			
		||||
                    $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
 | 
			
		||||
                } else {
 | 
			
		||||
                    throw new SmartyException("html_image: extra attribute '{$_key}' cannot be an array",
 | 
			
		||||
                                              E_USER_NOTICE);
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (empty($file)) {
 | 
			
		||||
        trigger_error('html_image: missing \'file\' parameter', E_USER_NOTICE);
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($file[ 0 ] === '/') {
 | 
			
		||||
        $_image_path = $basedir . $file;
 | 
			
		||||
    } else {
 | 
			
		||||
        $_image_path = $file;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // strip file protocol
 | 
			
		||||
    if (stripos($params[ 'file' ], 'file://') === 0) {
 | 
			
		||||
        $params[ 'file' ] = substr($params[ 'file' ], 7);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $protocol = strpos($params[ 'file' ], '://');
 | 
			
		||||
    if ($protocol !== false) {
 | 
			
		||||
        $protocol = strtolower(substr($params[ 'file' ], 0, $protocol));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (isset($template->smarty->security_policy)) {
 | 
			
		||||
        if ($protocol) {
 | 
			
		||||
            // remote resource (or php stream, …)
 | 
			
		||||
@@ -121,25 +112,20 @@ function smarty_function_html_image($params, Smarty_Internal_Template $template)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!isset($params[ 'width' ]) || !isset($params[ 'height' ])) {
 | 
			
		||||
        // FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
 | 
			
		||||
        if (!$_image_data = @getimagesize($_image_path)) {
 | 
			
		||||
            if (!file_exists($_image_path)) {
 | 
			
		||||
                trigger_error("html_image: unable to find '{$_image_path}'", E_USER_NOTICE);
 | 
			
		||||
 | 
			
		||||
                return;
 | 
			
		||||
            } elseif (!is_readable($_image_path)) {
 | 
			
		||||
                trigger_error("html_image: unable to read '{$_image_path}'", E_USER_NOTICE);
 | 
			
		||||
 | 
			
		||||
                return;
 | 
			
		||||
            } else {
 | 
			
		||||
                trigger_error("html_image: '{$_image_path}' is not a valid image file", E_USER_NOTICE);
 | 
			
		||||
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!isset($params[ 'width' ])) {
 | 
			
		||||
            $width = $_image_data[ 0 ];
 | 
			
		||||
        }
 | 
			
		||||
@@ -147,7 +133,6 @@ function smarty_function_html_image($params, Smarty_Internal_Template $template)
 | 
			
		||||
            $height = $_image_data[ 1 ];
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (isset($params[ 'dpi' ])) {
 | 
			
		||||
        if (strstr($_SERVER[ 'HTTP_USER_AGENT' ], 'Mac')) {
 | 
			
		||||
            // FIXME: (rodneyrehm) wrong dpi assumption
 | 
			
		||||
@@ -160,7 +145,6 @@ function smarty_function_html_image($params, Smarty_Internal_Template $template)
 | 
			
		||||
        $width = round($width * $_resize);
 | 
			
		||||
        $height = round($height * $_resize);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' .
 | 
			
		||||
           $height . '"' . $extra . ' />' . $suffix;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user