mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-05 02:44:27 +02:00
- new feature multiple indices on file: resource
This commit is contained in:
@@ -4,6 +4,20 @@ This file contains a brief description of new features which have been added to
|
|||||||
|
|
||||||
Smarty 3.1.28
|
Smarty 3.1.28
|
||||||
|
|
||||||
|
Modifier regex_replace
|
||||||
|
======================
|
||||||
|
An optional limit parameter was added
|
||||||
|
|
||||||
|
fetch() and display()
|
||||||
|
=====================
|
||||||
|
The fetch() and display() methods of the template object accept now optionally the same paramter
|
||||||
|
as the corresponding Smarty methods the get tne content of another template.
|
||||||
|
|
||||||
|
File: resource
|
||||||
|
==============
|
||||||
|
Multiple template_dir entries can now be selected by a comma separated list of indices.
|
||||||
|
The template_dir array is searched in the order of the indices. (could be used to change the default search order)
|
||||||
|
|
||||||
Filter support
|
Filter support
|
||||||
==============
|
==============
|
||||||
Optional filter names
|
Optional filter names
|
||||||
|
@@ -2,6 +2,8 @@
|
|||||||
07.07.2015
|
07.07.2015
|
||||||
- improvement allow fetch() or display() called on a template object to get output from other template
|
- improvement allow fetch() or display() called on a template object to get output from other template
|
||||||
like $template->fetch('foo.tpl') https://github.com/smarty-php/smarty/issues/70
|
like $template->fetch('foo.tpl') https://github.com/smarty-php/smarty/issues/70
|
||||||
|
- improvement Added $limit parameter to regex_replace modifier #71
|
||||||
|
- new feature multiple indices on file: resource
|
||||||
|
|
||||||
06.07.2015
|
06.07.2015
|
||||||
- optimize {block} compilation
|
- optimize {block} compilation
|
||||||
|
@@ -111,7 +111,7 @@ class Smarty extends Smarty_Internal_TemplateBase
|
|||||||
/**
|
/**
|
||||||
* smarty version
|
* smarty version
|
||||||
*/
|
*/
|
||||||
const SMARTY_VERSION = '3.1.28-dev/25';
|
const SMARTY_VERSION = '3.1.28-dev/26';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* define variable scopes
|
* define variable scopes
|
||||||
@@ -1396,8 +1396,10 @@ class Smarty extends Smarty_Internal_TemplateBase
|
|||||||
if ($realpath !== null && $path[0] !== '/' && $path[1] !== ':') {
|
if ($realpath !== null && $path[0] !== '/' && $path[1] !== ':') {
|
||||||
$path = getcwd() . DS . $path;
|
$path = getcwd() . DS . $path;
|
||||||
}
|
}
|
||||||
while (preg_match(isset($pattern) ? $pattern : $pattern = '#([\\\/][.]+[\\\/])|[' . (DS == '/' ? '\\\\' : '/') . ']|[\\\/]{2,}#', $path)) {
|
while (preg_match(isset($pattern) ? $pattern : $pattern = '#([\\\/][.]+[\\\/])|[' . (DS == '/' ? '\\\\' : '/') .
|
||||||
$path = preg_replace(isset($pattern2) ? $pattern2 : $pattern2 = '#([\\\/]+([.][\\\/]+)+)|([\\\/]+([^\\\/]+[\\\/]+){2}([.][.][\\\/]+){2})|([\\\/]+[^\\\/]+[\\\/]+[.][.][\\\/]+)|[\\\/]{2,}|[' . (DS == '/' ? '\\\\' : '/') . ']+#', DS, $path);
|
']|[\\\/]{2,}#', $path)) {
|
||||||
|
$path = preg_replace(isset($pattern2) ? $pattern2 : $pattern2 = '#([\\\/]+([.][\\\/]+)+)|([\\\/]+([^\\\/]+[\\\/]+){2}([.][.][\\\/]+){2})|([\\\/]+[^\\\/]+[\\\/]+[.][.][\\\/]+)|[\\\/]{2,}|[' .
|
||||||
|
(DS == '/' ? '\\\\' : '/') . ']+#', DS, $path);
|
||||||
}
|
}
|
||||||
if ($realpath === false && ($path[0] == '/' || $path[1] == ':')) {
|
if ($realpath === false && ($path[0] == '/' || $path[1] == ':')) {
|
||||||
$path = str_ireplace(getcwd(), '.', $path);
|
$path = str_ireplace(getcwd(), '.', $path);
|
||||||
|
@@ -53,31 +53,33 @@ class Smarty_Internal_Resource_File extends Smarty_Resource
|
|||||||
$_directories = $source->smarty->getTemplateDir(null, $source->isConfig);
|
$_directories = $source->smarty->getTemplateDir(null, $source->isConfig);
|
||||||
// template_dir index?
|
// template_dir index?
|
||||||
if ($file[0] == '[' && preg_match('#^\[([^\]]+)\](.+)$#', $file, $fileMatch)) {
|
if ($file[0] == '[' && preg_match('#^\[([^\]]+)\](.+)$#', $file, $fileMatch)) {
|
||||||
$index = $fileMatch[1];
|
$file = $fileMatch[2];
|
||||||
$_directory = null;
|
$_indices = explode(',', $fileMatch[1]);
|
||||||
|
$_index_dirs = array();
|
||||||
|
foreach ($_indices as $index) {
|
||||||
|
$index = trim($index);
|
||||||
// try string indexes
|
// try string indexes
|
||||||
if (isset($_directories[$index])) {
|
if (isset($_directories[$index])) {
|
||||||
$_directory = $_directories[$index];
|
$_index_dirs[] = $_directories[$index];
|
||||||
} elseif (is_numeric($index)) {
|
} elseif (is_numeric($index)) {
|
||||||
// try numeric index
|
// try numeric index
|
||||||
$index = (int) $index;
|
$index = (int) $index;
|
||||||
if (isset($_directories[$index])) {
|
if (isset($_directories[$index])) {
|
||||||
$_directory = $_directories[$index];
|
$_index_dirs[] = $_directories[$index];
|
||||||
} else {
|
} else {
|
||||||
// try at location index
|
// try at location index
|
||||||
$keys = array_keys($_directories);
|
$keys = array_keys($_directories);
|
||||||
$_directory = $_directories[$keys[$index]];
|
if (isset($_directories[$keys[$index]])) {
|
||||||
|
$_index_dirs[] = $_directories[$keys[$index]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($_directory) {
|
|
||||||
$path = $_directory . $fileMatch[2];
|
|
||||||
$path = $source->smarty->_realpath($path);
|
|
||||||
if (is_file($path)) {
|
|
||||||
return $path;
|
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
if (empty($_index_dirs)) {
|
||||||
// index not found
|
// index not found
|
||||||
return false;
|
return false;
|
||||||
|
} else {
|
||||||
|
$_directories = $_index_dirs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,14 +87,16 @@ class Smarty_Internal_Resource_File extends Smarty_Resource
|
|||||||
foreach ($_directories as $_directory) {
|
foreach ($_directories as $_directory) {
|
||||||
$path = $_directory . $file;
|
$path = $_directory . $file;
|
||||||
if (is_file($path)) {
|
if (is_file($path)) {
|
||||||
return $source->smarty->_realpath($path, true);
|
return $source->smarty->_realpath($path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!isset($_index_dirs)) {
|
||||||
// Could be relative to cwd
|
// Could be relative to cwd
|
||||||
$path = $source->smarty->_realpath($file);
|
$path = $source->smarty->_realpath($file, true);
|
||||||
if (is_file($path)) {
|
if (is_file($path)) {
|
||||||
return $path;
|
return $path;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Use include path ?
|
// Use include path ?
|
||||||
if ($source->smarty->use_include_path) {
|
if ($source->smarty->use_include_path) {
|
||||||
return Smarty_Internal_Get_Include_Path::getIncludePath($_directories, $file, $source->smarty);
|
return Smarty_Internal_Get_Include_Path::getIncludePath($_directories, $file, $source->smarty);
|
||||||
|
Reference in New Issue
Block a user