moved _fetch_resource_info and _parse_resource_name back into Smarty.class.php

renamed smarty_include and smarty_eval wrappers to _include and _eval
This commit is contained in:
messju
2003-07-23 16:14:47 +00:00
parent c97878d7fe
commit f66b646479
11 changed files with 167 additions and 193 deletions

View File

@@ -1099,8 +1099,7 @@ class Smarty
function template_exists($tpl_file)
{
$_params = array('resource_name' => $tpl_file);
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.fetch_resource_info.php');
return smarty_core_fetch_resource_info($_params, $this);
return $this->_fetch_resource_info($_params);
}
/**
@@ -1460,9 +1459,8 @@ class Smarty
return true;
} else {
// get file source and timestamp
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.fetch_resource_info.php');
$_params = array('resource_name' => $resource_name);
if (!smarty_core_fetch_resource_info($_params, $this)) {
if (!$this->_fetch_resource_info($_params, $this)) {
return false;
}
if ($_params['resource_timestamp'] <= filemtime($compile_path)) {
@@ -1490,8 +1488,7 @@ class Smarty
{
$_params = array('resource_name' => $resource_name);
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.fetch_resource_info.php');
if (!smarty_core_fetch_resource_info($_params, $this)) {
if (!$this->_fetch_resource_info($_params)) {
return false;
}
@@ -1595,6 +1592,153 @@ class Smarty
$this->_compile_id) . '.php';
}
/**
* fetch the template info. Gets timestamp, and source
* if get_source is true
*
* sets $source_content to the source of the template, and
* $resource_timestamp to its time stamp
* @param string $resource_name
* @param string $source_content
* @param integer $resource_timestamp
* @param boolean $get_source
* @param boolean $quiet
* @return boolean
*/
function _fetch_resource_info(&$params)
{
if(!isset($params['get_source'])) { $params['get_source'] = true; }
if(!isset($params['quiet'])) { $params['quiet'] = false; }
$_return = false;
$_params = array('resource_name' => $params['resource_name']) ;
if ($this->_parse_resource_name($_params)) {
$_resource_type = $_params['resource_type'];
$_resource_name = $_params['resource_name'];
switch ($_resource_type) {
case 'file':
if ($params['get_source']) {
$params['source_content'] = $this->_read_file($_resource_name);
}
$params['resource_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['source_content'], &$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['resource_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['source_content'], &$params['resource_timestamp'], &$this));
}
}
}
if (!$_return) {
if (!$params['quiet']) {
$this->trigger_error('unable to read resource: "' . $params['resource_name'] . '"');
}
} else if ($_return && $this->security) {
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_secure.php');
if (!smarty_core_is_secure($_params, $this)) {
if (!$params['quiet'])
$this->trigger_error('(secure mode) accessing "' . $params['resource_name'] . '" is not allowed');
$params['source_content'] = null;
$params['resource_timestamp'] = null;
return false;
}
}
return $_return;
}
/**
* parse out the type and name from the resource
*
* @param string $resource_base_path
* @param string $resource_name
* @param string $resource_type
* @param string $resource_name
* @return boolean
*/
function _parse_resource_name(&$params)
{
// split tpl_path by the first colon
$_resource_name_parts = explode(':', $params['resource_name'], 2);
if (count($_resource_name_parts) == 1) {
// no resource type given
$params['resource_type'] = $this->default_resource_type;
$params['resource_name'] = $_resource_name_parts[0];
} else {
if(strlen($_resource_name_parts[0]) == 1) {
// 1 char is not resource type, but part of filepath
$params['resource_type'] = $this->default_resource_type;
$params['resource_name'] = $params['resource_name'];
} else {
$params['resource_type'] = $_resource_name_parts[0];
$params['resource_name'] = $_resource_name_parts[1];
}
}
if ($params['resource_type'] == 'file') {
if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $params['resource_name'])) {
// relative pathname to $params['resource_base_path']
// use the first directory where the file is found
$_resource_base_path = isset($params['resource_base_path']) ? $params['resource_base_path'] : array($this->template_dir, '.');
settype($_resource_base_path, 'array');
foreach ($_resource_base_path as $_curr_path) {
$_fullpath = $_curr_path . DIRECTORY_SEPARATOR . $params['resource_name'];
if (file_exists($_fullpath) && is_file($_fullpath)) {
$params['resource_name'] = $_fullpath;
return true;
}
// didn't find the file, try include_path
$_params = array('file_path' => $_fullpath);
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php');
if(smarty_core_get_include_path($_params, $smarty)) {
$params['resource_name'] = $_params['new_file_path'];
return true;
}
}
return false;
}
} else {
$_params = array('type' => $params['resource_type']);
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_resource_plugin.php');
smarty_core_load_resource_plugin($_params, $this);
}
return true;
}
/**
* Handle modifiers
*
@@ -1800,7 +1944,7 @@ class Smarty
* wrapper for include() retaining $this
* @return mixed
*/
function smarty_include($filename, $once=false)
function _include($filename, $once=false)
{
if ($once) {
return include_once($filename);
@@ -1814,7 +1958,7 @@ class Smarty
* wrapper for eval() retaining $this
* @return mixed
*/
function smarty_eval($code)
function _eval($code)
{
return eval($code);
}

View File

@@ -40,7 +40,7 @@ function smarty_core_display_debug_console($params, &$smarty)
if ($smarty->_compile_resource($smarty->debug_tpl, $_compile_path))
{
ob_start();
$smarty->smarty_include($_compile_path);
$smarty->_include($_compile_path);
$_results = ob_get_contents();
ob_end_clean();
} else {

View File

@@ -1,93 +0,0 @@
<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/
/**
* fetch the template info. Gets timestamp, and source
* if get_source is true
*
* sets $source_content to the source of the template, and
* $resource_timestamp to its time stamp
* @param string $resource_name
* @param string $source_content
* @param integer $resource_timestamp
* @param boolean $get_source
* @param boolean $quiet
* @return boolean
*/
function smarty_core_fetch_resource_info(&$params, &$smarty)
{
if(!isset($params['get_source'])) { $params['get_source'] = true; }
if(!isset($params['quiet'])) { $params['quiet'] = false; }
$_return = false;
$_params = array('resource_name' => $params['resource_name']) ;
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.parse_resource_name.php');
if (smarty_core_parse_resource_name($_params, $smarty)) {
$_resource_type = $_params['resource_type'];
$_resource_name = $_params['resource_name'];
switch ($_resource_type) {
case 'file':
if ($params['get_source']) {
$params['source_content'] = $smarty->_read_file($_resource_name);
}
$params['resource_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($smarty->_plugins['resource'][$_resource_type]) &&
call_user_func_array($smarty->_plugins['resource'][$_resource_type][0][0],
array($_resource_name, &$params['source_content'], &$smarty));
} else {
$_source_return = true;
}
$_timestamp_return = isset($smarty->_plugins['resource'][$_resource_type]) &&
call_user_func_array($smarty->_plugins['resource'][$_resource_type][0][1],
array($_resource_name, &$params['resource_timestamp'], &$smarty));
$_return = $_source_return && $_timestamp_return;
break;
}
}
if (!$_return) {
// see if we can get a template with the default template handler
if (!empty($smarty->default_template_handler_func)) {
if (!$smarty->_plugin_implementation_exists($smarty->default_template_handler_func)) {
$smarty->trigger_error("default template handler function \"$smarty->default_template_handler_func\" doesn't exist.");
} else {
$_return = call_user_func_array(
$smarty->default_template_handler_func,
array($_resource_type, $_resource_name, &$params['source_content'], &$params['resource_timestamp'], &$smarty));
}
}
}
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_secure.php');
if (!$_return) {
if (!$params['quiet']) {
$smarty->trigger_error('unable to read resource: "' . $params['resource_name'] . '"');
}
} else if ($_return && $smarty->security && !smarty_core_is_secure($_params, $smarty)) {
if (!$params['quiet'])
$smarty->trigger_error('(secure mode) accessing "' . $params['resource_name'] . '" is not allowed');
$params['source_content'] = null;
$params['resource_timestamp'] = null;
return false;
}
return $_return;
}
/* vim: set expandtab: */
?>

View File

@@ -19,8 +19,7 @@ function smarty_core_get_php_resource(&$params, &$smarty)
{
$params['resource_base_path'] = $smarty->trusted_dir;
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.parse_resource_name.php');
smarty_core_parse_resource_name($params, $smarty);
$smarty->_parse_resource_name($params, $smarty);
/*
* Find out if the resource exists.

View File

@@ -1,74 +0,0 @@
<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/
/**
* parse out the type and name from the resource
*
* @param string $resource_base_path
* @param string $resource_name
* @param string $resource_type
* @param string $resource_name
* @return boolean
*/
// $resource_base_path, $resource_name, &$resource_type, &$resource_name
function smarty_core_parse_resource_name(&$params, &$smarty)
{
// split tpl_path by the first colon
$_resource_name_parts = explode(':', $params['resource_name'], 2);
if (count($_resource_name_parts) == 1) {
// no resource type given
$params['resource_type'] = $smarty->default_resource_type;
$params['resource_name'] = $_resource_name_parts[0];
} else {
if(strlen($_resource_name_parts[0]) == 1) {
// 1 char is not resource type, but part of filepath
$params['resource_type'] = $smarty->default_resource_type;
$params['resource_name'] = $params['resource_name'];
} else {
$params['resource_type'] = $_resource_name_parts[0];
$params['resource_name'] = $_resource_name_parts[1];
}
}
if ($params['resource_type'] == 'file') {
if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $params['resource_name'])) {
// relative pathname to $params['resource_base_path']
// use the first directory where the file is found
$_resource_base_path = isset($params['resource_base_path']) ? $params['resource_base_path'] : array($smarty->template_dir, '.');
settype($_resource_base_path, 'array');
foreach ($_resource_base_path as $_curr_path) {
$_fullpath = $_curr_path . DIRECTORY_SEPARATOR . $params['resource_name'];
if (file_exists($_fullpath) && is_file($_fullpath)) {
$params['resource_name'] = $_fullpath;
return true;
}
// didn't find the file, try include_path
$_params = array('file_path' => $_fullpath);
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php');
if(smarty_core_get_include_path($_params, $smarty)) {
$params['resource_name'] = $_params['new_file_path'];
return true;
}
}
return false;
}
} else {
$_params = array('type' => $params['resource_type']);
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_resource_plugin.php');
smarty_core_load_resource_plugin($_params, $smarty);
}
return true;
}
/* vim: set expandtab: */
?>

View File

@@ -38,9 +38,9 @@ function smarty_core_process_cached_inserts($params, &$smarty)
if ($resource_type == 'file') {
$smarty->smarty_include($php_resource, true);
$smarty->_include($php_resource, true);
} else {
$smarty->smarty_eval($php_resource);
$smarty->_eval($php_resource);
}
}

View File

@@ -68,10 +68,9 @@ function smarty_core_read_cache_file(&$params, &$smarty)
}
if ($smarty->compile_check) {
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.fetch_resource_info.php');
foreach (array_keys($smarty->_cache_info['template']) as $_template_dep) {
$_params = array('resource_name' => $_template_dep);
smarty_core_fetch_resource_info($_params, $smarty);
$smarty->_fetch_resource_info($_params);
if ($smarty->_cache_info['timestamp'] < $_params['resource_timestamp']) {
// template file has changed, regenerate cache
return false;
@@ -79,10 +78,9 @@ function smarty_core_read_cache_file(&$params, &$smarty)
}
if (isset($smarty->_cache_info['config'])) {
require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.fetch_resource_info.php');
foreach (array_keys($smarty->_cache_info['config']) as $_config_dep) {
$_params = array('resource_name' => $_config_dep);
smarty_core_fetch_resource_info($_params, $smarty);
$smarty->_fetch_resource_info($_params);
if ($smarty->_cache_info['timestamp'] < $_params['resource_timestamp']) {
// config file has changed, regenerate cache
return false;
@@ -93,7 +91,7 @@ function smarty_core_read_cache_file(&$params, &$smarty)
foreach ($smarty->_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) {
if (empty($smarty->_cache_serials[$_include_file_path])) {
$smarty->smarty_include($_include_file_path, true);
$smarty->_include($_include_file_path, true);
}
if ($smarty->_cache_serials[$_include_file_path] != $_cache_serial) {

View File

@@ -40,9 +40,9 @@ function smarty_core_run_insert_handler($params, &$smarty)
}
if ($_params['resource_type'] == 'file') {
$smarty->smarty_include_once($_params['php_resource']);
$smarty->_include($_params['php_resource'], true);
} else {
$smarty->smarty_eval($_params['php_resource']);
$smarty->_eval($_params['php_resource']);
}
unset($params['args']['script']);
}

View File

@@ -38,7 +38,7 @@ function smarty_core_smarty_include($params, &$smarty)
if ($smarty->_is_compiled($params['smarty_include_tpl_file'], $_smarty_compile_path)
|| $smarty->_compile_resource($params['smarty_include_tpl_file'], $_smarty_compile_path))
{
$smarty->smarty_include($_smarty_compile_path);
$smarty->_include($_smarty_compile_path);
}
// pop the local vars off the front of the stack

View File

@@ -31,17 +31,17 @@ function smarty_core_smarty_include_php($params, &$smarty)
if (!empty($params['smarty_assign'])) {
ob_start();
if ($_smarty_resource_type == 'file') {
$smarty->smarty_include($_smarty_php_resource, $params['smarty_once']);
$smarty->_include($_smarty_php_resource, $params['smarty_once']);
} else {
$smarty->smarty_eval($_smarty_php_resource);
$smarty->_eval($_smarty_php_resource);
}
$smarty->assign($params['smarty_assign'], ob_get_contents());
ob_end_clean();
} else {
if ($_smarty_resource_type == 'file') {
$smarty->smarty_include($_smarty_php_resource, $params['smarty_once']);
$smarty->_include($_smarty_php_resource, $params['smarty_once']);
} else {
$smarty->smarty_eval($_smarty_php_resource);
$smarty->_eval($_smarty_php_resource);
}
}
}

View File

@@ -32,7 +32,7 @@ function smarty_function_eval($params, &$smarty)
$smarty->_compile_source('evaluated template', $params['var'], $_var_compiled);
ob_start();
$smarty->smarty_eval('?>' . $_var_compiled);
$smarty->_eval('?>' . $_var_compiled);
$_contents = ob_get_contents();
ob_end_clean();