mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-03 22:01:36 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			94 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * Smarty plugin
 | 
						|
 * @package Smarty
 | 
						|
 * @subpackage plugins
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * fetch the template info. Gets timestamp, and source
 | 
						|
 * if get_source is true
 | 
						|
 *
 | 
						|
 * sets $file_source to the source of the template, and
 | 
						|
 * $file_timestamp to its time stamp
 | 
						|
 * @param string $file_path
 | 
						|
 * @param string $file_source
 | 
						|
 * @param integer $file_timestamp
 | 
						|
 * @param boolean $get_source
 | 
						|
 * @param boolean $quiet
 | 
						|
 * @return boolean
 | 
						|
 */
 | 
						|
 | 
						|
function smarty_core_fetch_file_info(&$params, &$this)
 | 
						|
{
 | 
						|
			
 | 
						|
	if(!isset($params['get_source'])) { $params['get_source'] = true; }
 | 
						|
	if(!isset($params['quiet'])) { $params['quiet'] = false; }
 | 
						|
	
 | 
						|
    $_return = false;
 | 
						|
	$_params = array('file_path' => $params['file_path']) ;
 | 
						|
	require_once(SMARTY_DIR . 'core/core.parse_file_path.php');
 | 
						|
    if (smarty_core_parse_file_path($_params, $this)) {
 | 
						|
		$_resource_type = $_params['resource_type'];
 | 
						|
		$_resource_name = $_params['resource_name'];
 | 
						|
        switch ($_resource_type) {
 | 
						|
            case 'file':
 | 
						|
                if ($params['get_source']) {
 | 
						|
                    $params['file_source'] = $this->_read_file($_resource_name);
 | 
						|
                }
 | 
						|
                $params['file_timestamp'] = filemtime($_resource_name);
 | 
						|
                $_return = true;
 | 
						|
                break;
 | 
						|
 | 
						|
            default:                    
 | 
						|
                // call resource functions to fetch the template source and timestamp
 | 
						|
                if ($params['get_source']) {
 | 
						|
                    $_source_return = isset($this->_plugins['resource'][$_resource_type]) &&
 | 
						|
                        call_user_func_array($this->_plugins['resource'][$_resource_type][0][0],
 | 
						|
                                             array($_resource_name, &$params['file_source'], &$this));
 | 
						|
                } else {
 | 
						|
                    $_source_return = true;
 | 
						|
                }
 | 
						|
 | 
						|
                $_timestamp_return = isset($this->_plugins['resource'][$_resource_type]) &&
 | 
						|
                    call_user_func_array($this->_plugins['resource'][$_resource_type][0][1],
 | 
						|
                                         array($_resource_name, &$params['file_timestamp'], &$this));
 | 
						|
 | 
						|
                $_return = $_source_return && $_timestamp_return;
 | 
						|
                break;
 | 
						|
        }
 | 
						|
    }
 | 
						|
	
 | 
						|
    if (!$_return) {
 | 
						|
        // see if we can get a template with the default template handler
 | 
						|
        if (!empty($this->default_template_handler_func)) {
 | 
						|
            if (!$this->_plugin_implementation_exists($this->default_template_handler_func)) {
 | 
						|
                $this->trigger_error("default template handler function \"$this->default_template_handler_func\" doesn't exist.");
 | 
						|
            } else {
 | 
						|
                $_return = call_user_func_array(
 | 
						|
                    $this->default_template_handler_func,
 | 
						|
                    array($_resource_type, $_resource_name, &$params['file_source'], &$params['file_timestamp'], &$this));
 | 
						|
			}
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
	require_once(SMARTY_DIR . 'core/core.is_secure.php');
 | 
						|
    if (!$_return) {
 | 
						|
        if (!$params['quiet']) {
 | 
						|
            $this->trigger_error('unable to read file resource: "' . $params['file_path'] . '"');
 | 
						|
        }
 | 
						|
    } else if ($_return && $this->security && !smarty_core_is_secure($_params, $this)) {
 | 
						|
        if (!$params['quiet'])
 | 
						|
            $this->trigger_error('(secure mode) accessing "' . $params['file_path'] . '" is not allowed');
 | 
						|
        $params['file_source'] = null;
 | 
						|
        $params['file_timestamp'] = null;
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
    return $_return;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/* vim: set expandtab: */
 | 
						|
 | 
						|
?>
 |