mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-03 18:04:26 +02:00
Removed support for PHP include path, and removed the ::loadPlugin method.
This commit is contained in:
@@ -41,7 +41,6 @@ them directly, or use the corresponding setter/getter methods.
|
|||||||
- [$smarty_debug_id](./api-variables/variable-smarty-debug-id.md)
|
- [$smarty_debug_id](./api-variables/variable-smarty-debug-id.md)
|
||||||
- [$template_dir](./api-variables/variable-template-dir.md)
|
- [$template_dir](./api-variables/variable-template-dir.md)
|
||||||
- [$trusted_dir](./api-variables/variable-trusted-dir.md)
|
- [$trusted_dir](./api-variables/variable-trusted-dir.md)
|
||||||
- [$use_include_path](./api-variables/variable-use-include-path.md)
|
|
||||||
- [$use_sub_dirs](./api-variables/variable-use-sub-dirs.md)
|
- [$use_sub_dirs](./api-variables/variable-use-sub-dirs.md)
|
||||||
|
|
||||||
> **Note**
|
> **Note**
|
||||||
|
@@ -15,22 +15,12 @@ found.
|
|||||||
> document root.
|
> document root.
|
||||||
|
|
||||||
> **Note**
|
> **Note**
|
||||||
>
|
|
||||||
> If the directories known to `$template_dir` are relative to
|
|
||||||
> directories known to the
|
|
||||||
> [include\_path](&url.php-manual;ini.core.php#ini.include-path) you
|
|
||||||
> need to activate the [`$use_include_path`](#variable.use.include.path)
|
|
||||||
> option.
|
|
||||||
|
|
||||||
> **Note**
|
|
||||||
>
|
|
||||||
> As of Smarty 3.1 the attribute \$template\_dir is no longer accessible
|
> As of Smarty 3.1 the attribute \$template\_dir is no longer accessible
|
||||||
> directly. Use [`getTemplateDir()`](#api.get.template.dir),
|
> directly. Use [`getTemplateDir()`](#api.get.template.dir),
|
||||||
> [`setTemplateDir()`](#api.set.template.dir) and
|
> [`setTemplateDir()`](#api.set.template.dir) and
|
||||||
> [`addTemplateDir()`](#api.add.template.dir) instead.
|
> [`addTemplateDir()`](#api.add.template.dir) instead.
|
||||||
|
|
||||||
See also [`Template Resources`](#resources),
|
See also [`Template Resources`](#resources),
|
||||||
[`$use_include_path`](#variable.use.include.path),
|
|
||||||
[`getTemplateDir()`](#api.get.template.dir),
|
[`getTemplateDir()`](#api.get.template.dir),
|
||||||
[`setTemplateDir()`](#api.set.template.dir) and
|
[`setTemplateDir()`](#api.set.template.dir) and
|
||||||
[`addTemplateDir()`](#api.add.template.dir).
|
[`addTemplateDir()`](#api.add.template.dir).
|
||||||
|
@@ -1,49 +0,0 @@
|
|||||||
\$use\_include\_path {#variable.use.include.path}
|
|
||||||
====================
|
|
||||||
|
|
||||||
This tells smarty to respect the
|
|
||||||
[include\_path](&url.php-manual;ini.core.php#ini.include-path) within
|
|
||||||
the [`File Template Resource`](#resources.file) handler and the plugin
|
|
||||||
loader to resolve the directories known to
|
|
||||||
[`$template_dir`](#variable.template.dir). The flag also makes the
|
|
||||||
plugin loader check the include\_path for
|
|
||||||
[`$plugins_dir`](#variable.plugins.dir).
|
|
||||||
|
|
||||||
> **Note**
|
|
||||||
>
|
|
||||||
> You should not design your applications to rely on the include\_path,
|
|
||||||
> as this may - depending on your implementation - slow down your system
|
|
||||||
> (and Smarty) considerably.
|
|
||||||
|
|
||||||
If use\_include\_path is enabled, file discovery for
|
|
||||||
[`$template_dir`](#variable.template.dir) and
|
|
||||||
[`$plugins_dir`](#variable.plugins.dir) work as follows.
|
|
||||||
|
|
||||||
- For each element `$directory` in array (\$template\_dir or
|
|
||||||
\$plugins\_dir) do
|
|
||||||
|
|
||||||
- Test if requested file is in `$directory` relative to the [current
|
|
||||||
working directory](&url.php-manual;function.getcwd.php). If file
|
|
||||||
found, return it.
|
|
||||||
|
|
||||||
- For each `$path` in include\_path do
|
|
||||||
|
|
||||||
- Test if requested file is in `$directory` relative to the `$path`
|
|
||||||
(possibly relative to the [current working
|
|
||||||
directory](&url.php-manual;function.getcwd.php)). If file found,
|
|
||||||
return it.
|
|
||||||
|
|
||||||
- Try default\_handler or fail.
|
|
||||||
|
|
||||||
This means that whenever a directory/file relative to the current
|
|
||||||
working directory is encountered, it is preferred over anything
|
|
||||||
potentially accessible through the include\_path.
|
|
||||||
|
|
||||||
> **Note**
|
|
||||||
>
|
|
||||||
> Smarty does not filter elements of the include\_path. That means a
|
|
||||||
> \".:\" within your include path will trigger the current working
|
|
||||||
> directory lookup twice.
|
|
||||||
|
|
||||||
See also [`Template Resources`](#resources) and
|
|
||||||
[`$template_dir`](#variable.template.dir)
|
|
@@ -11,12 +11,6 @@ If the file resource cannot find the requested template, the
|
|||||||
[`$default_template_handler_func`](#variable.default.template.handler.func)
|
[`$default_template_handler_func`](#variable.default.template.handler.func)
|
||||||
is invoked.
|
is invoked.
|
||||||
|
|
||||||
> **Note**
|
|
||||||
>
|
|
||||||
> As of Smarty 3.1 the file resource no longer walks through the
|
|
||||||
> [include\_path](&url.php-manual;ini.core.php#ini.include-path) unless
|
|
||||||
> [`$use_include_path` is activated](#variable.use.include.path)
|
|
||||||
|
|
||||||
Templates from \$template\_dir {#templates.from.template.dir}
|
Templates from \$template\_dir {#templates.from.template.dir}
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
@@ -170,10 +170,6 @@ class FilePlugin extends BasePlugin {
|
|||||||
return $path;
|
return $path;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Use include path ?
|
|
||||||
if ($source->smarty->use_include_path) {
|
|
||||||
return $source->smarty->getIncludePath($_directories, $file);
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -230,13 +230,6 @@ class Security {
|
|||||||
*/
|
*/
|
||||||
protected $_trusted_dir = null;
|
protected $_trusted_dir = null;
|
||||||
|
|
||||||
/**
|
|
||||||
* Cache for include path status
|
|
||||||
*
|
|
||||||
* @var bool
|
|
||||||
*/
|
|
||||||
protected $_include_path_status = false;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cache for $_include_array lookup
|
* Cache for $_include_array lookup
|
||||||
*
|
*
|
||||||
@@ -481,15 +474,6 @@ class Security {
|
|||||||
* @throws \Smarty\Exception if directory is not trusted
|
* @throws \Smarty\Exception if directory is not trusted
|
||||||
*/
|
*/
|
||||||
public function isTrustedResourceDir($filepath, $isConfig = null) {
|
public function isTrustedResourceDir($filepath, $isConfig = null) {
|
||||||
if ($this->_include_path_status !== $this->smarty->use_include_path) {
|
|
||||||
$_dir =
|
|
||||||
$this->smarty->use_include_path ? $this->smarty->getIncludePathDirs() : [];
|
|
||||||
if ($this->_include_dir !== $_dir) {
|
|
||||||
$this->_updateResourceDir($this->_include_dir, $_dir);
|
|
||||||
$this->_include_dir = $_dir;
|
|
||||||
}
|
|
||||||
$this->_include_path_status = $this->smarty->use_include_path;
|
|
||||||
}
|
|
||||||
$_dir = $this->smarty->getTemplateDir();
|
$_dir = $this->smarty->getTemplateDir();
|
||||||
if ($this->_template_dir !== $_dir) {
|
if ($this->_template_dir !== $_dir) {
|
||||||
$this->_updateResourceDir($this->_template_dir, $_dir);
|
$this->_updateResourceDir($this->_template_dir, $_dir);
|
||||||
|
163
src/Smarty.php
163
src/Smarty.php
@@ -136,13 +136,6 @@ class Smarty extends \Smarty\TemplateBase
|
|||||||
*/
|
*/
|
||||||
public $error_unassigned = false;
|
public $error_unassigned = false;
|
||||||
|
|
||||||
/**
|
|
||||||
* look up relative file path in include_path
|
|
||||||
*
|
|
||||||
* @var boolean
|
|
||||||
*/
|
|
||||||
public $use_include_path = false;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* flag if template_dir is normalized
|
* flag if template_dir is normalized
|
||||||
*
|
*
|
||||||
@@ -1819,162 +1812,6 @@ class Smarty extends \Smarty\TemplateBase
|
|||||||
return $content;
|
return $content;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* include path cache
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private $_include_path = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* include path directory cache
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private $_include_dirs = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* include path directory cache
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private $_user_dirs = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* stream cache
|
|
||||||
*
|
|
||||||
* @var string[][]
|
|
||||||
*/
|
|
||||||
private $isFile = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* stream cache
|
|
||||||
*
|
|
||||||
* @var string[]
|
|
||||||
*/
|
|
||||||
private $isPath = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* stream cache
|
|
||||||
*
|
|
||||||
* @var int[]
|
|
||||||
*/
|
|
||||||
private $number = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* status cache
|
|
||||||
*
|
|
||||||
* @var bool
|
|
||||||
*/
|
|
||||||
private $_has_stream_include = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Number for array index
|
|
||||||
*
|
|
||||||
* @var int
|
|
||||||
*/
|
|
||||||
private $counter = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if include path was updated
|
|
||||||
*
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
private function isNewIncludePath()
|
|
||||||
{
|
|
||||||
$_i_path = get_include_path();
|
|
||||||
if ($this->_include_path !== $_i_path) {
|
|
||||||
$this->_include_dirs = array();
|
|
||||||
$this->_include_path = $_i_path;
|
|
||||||
$_dirs = (array)explode(PATH_SEPARATOR, $_i_path);
|
|
||||||
foreach ($_dirs as $_path) {
|
|
||||||
if (is_dir($_path)) {
|
|
||||||
$this->_include_dirs[] = $this->_realpath($_path . DIRECTORY_SEPARATOR, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* return array with include path directories
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function getIncludePathDirs()
|
|
||||||
{
|
|
||||||
$this->isNewIncludePath();
|
|
||||||
return $this->_include_dirs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return full file path from PHP include_path
|
|
||||||
*
|
|
||||||
* @param string[] $dirs
|
|
||||||
* @param string $file
|
|
||||||
*
|
|
||||||
* @return bool|string full filepath or false
|
|
||||||
*/
|
|
||||||
public function getIncludePath($dirs, $file)
|
|
||||||
{
|
|
||||||
if (!($this->_has_stream_include ?? $this->_has_stream_include = function_exists('stream_resolve_include_path'))
|
|
||||||
) {
|
|
||||||
$this->isNewIncludePath();
|
|
||||||
}
|
|
||||||
// try PHP include_path
|
|
||||||
foreach ($dirs as $dir) {
|
|
||||||
$dir_n = $this->number[$dir] ?? $this->number[$dir] = $this->counter++;
|
|
||||||
if (isset($this->isFile[ $dir_n ][ $file ])) {
|
|
||||||
if ($this->isFile[ $dir_n ][ $file ]) {
|
|
||||||
return $this->isFile[ $dir_n ][ $file ];
|
|
||||||
} else {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (isset($this->_user_dirs[ $dir_n ])) {
|
|
||||||
if (false === $this->_user_dirs[ $dir_n ]) {
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
$dir = $this->_user_dirs[ $dir_n ];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if ($dir[ 0 ] === '/' || $dir[ 1 ] === ':') {
|
|
||||||
$dir = str_ireplace(getcwd(), '.', $dir);
|
|
||||||
if ($dir[ 0 ] === '/' || $dir[ 1 ] === ':') {
|
|
||||||
$this->_user_dirs[ $dir_n ] = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$dir = substr($dir, 2);
|
|
||||||
$this->_user_dirs[ $dir_n ] = $dir;
|
|
||||||
}
|
|
||||||
if ($this->_has_stream_include) {
|
|
||||||
$path = stream_resolve_include_path($dir . ($file ?? ''));
|
|
||||||
if ($path) {
|
|
||||||
return $this->isFile[ $dir_n ][ $file ] = $path;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
foreach ($this->_include_dirs as $key => $_i_path) {
|
|
||||||
$path = $this->isPath[$key][$dir_n] ?? $this->isPath[$key][$dir_n] = is_dir($_dir_path = $_i_path . $dir) ? $_dir_path : false;
|
|
||||||
if ($path === false) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (isset($file)) {
|
|
||||||
$_file = $this->isFile[ $dir_n ][ $file ] = (is_file($path . $file)) ? $path . $file : false;
|
|
||||||
if ($_file) {
|
|
||||||
return $_file;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// no file was given return directory path
|
|
||||||
return $path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes file in a safe way to disk
|
* Writes file in a safe way to disk
|
||||||
*
|
*
|
||||||
|
@@ -43,30 +43,6 @@ class TestInstall
|
|||||||
$template_dir = realpath($template_dir);
|
$template_dir = realpath($template_dir);
|
||||||
// resolve include_path or fail existence
|
// resolve include_path or fail existence
|
||||||
if (!$template_dir) {
|
if (!$template_dir) {
|
||||||
if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_template_dir)) {
|
|
||||||
// try PHP include_path
|
|
||||||
if ($_stream_resolve_include_path) {
|
|
||||||
$template_dir = stream_resolve_include_path($_template_dir);
|
|
||||||
} else {
|
|
||||||
$template_dir = $smarty->getIncludePath($_template_dir, null);
|
|
||||||
}
|
|
||||||
if ($template_dir !== false) {
|
|
||||||
if ($errors === null) {
|
|
||||||
echo "$template_dir is OK.\n";
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
$status = false;
|
|
||||||
$message =
|
|
||||||
"FAILED: $_template_dir does not exist (and couldn't be found in include_path either)";
|
|
||||||
if ($errors === null) {
|
|
||||||
echo $message . ".\n";
|
|
||||||
} else {
|
|
||||||
$errors[ 'template_dir' ] = $message;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$status = false;
|
$status = false;
|
||||||
$message = "FAILED: $_template_dir does not exist";
|
$message = "FAILED: $_template_dir does not exist";
|
||||||
if ($errors === null) {
|
if ($errors === null) {
|
||||||
@@ -76,7 +52,6 @@ class TestInstall
|
|||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!is_dir($template_dir)) {
|
if (!is_dir($template_dir)) {
|
||||||
$status = false;
|
$status = false;
|
||||||
$message = "FAILED: $template_dir is not a directory";
|
$message = "FAILED: $template_dir is not a directory";
|
||||||
@@ -196,29 +171,6 @@ class TestInstall
|
|||||||
$_config_dir = $config_dir;
|
$_config_dir = $config_dir;
|
||||||
// resolve include_path or fail existence
|
// resolve include_path or fail existence
|
||||||
if (!$config_dir) {
|
if (!$config_dir) {
|
||||||
if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_config_dir)) {
|
|
||||||
// try PHP include_path
|
|
||||||
if ($_stream_resolve_include_path) {
|
|
||||||
$config_dir = stream_resolve_include_path($_config_dir);
|
|
||||||
} else {
|
|
||||||
$config_dir = $smarty->getIncludePath($_config_dir, null);
|
|
||||||
}
|
|
||||||
if ($config_dir !== false) {
|
|
||||||
if ($errors === null) {
|
|
||||||
echo "$config_dir is OK.\n";
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
$status = false;
|
|
||||||
$message = "FAILED: $_config_dir does not exist (and couldn't be found in include_path either)";
|
|
||||||
if ($errors === null) {
|
|
||||||
echo $message . ".\n";
|
|
||||||
} else {
|
|
||||||
$errors[ 'config_dir' ] = $message;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$status = false;
|
$status = false;
|
||||||
$message = "FAILED: $_config_dir does not exist";
|
$message = "FAILED: $_config_dir does not exist";
|
||||||
if ($errors === null) {
|
if ($errors === null) {
|
||||||
@@ -228,7 +180,6 @@ class TestInstall
|
|||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!is_dir($config_dir)) {
|
if (!is_dir($config_dir)) {
|
||||||
$status = false;
|
$status = false;
|
||||||
$message = "FAILED: $config_dir is not a directory";
|
$message = "FAILED: $config_dir is not a directory";
|
||||||
|
@@ -1,5 +0,0 @@
|
|||||||
<?php
|
|
||||||
function smarty_function_plugin1($params, $template)
|
|
||||||
{
|
|
||||||
return 'plugin1';
|
|
||||||
}
|
|
@@ -1,5 +0,0 @@
|
|||||||
<?php
|
|
||||||
function smarty_function_plugin2($params, $template)
|
|
||||||
{
|
|
||||||
return 'plugin2';
|
|
||||||
}
|
|
@@ -1 +0,0 @@
|
|||||||
include_test2
|
|
@@ -1 +0,0 @@
|
|||||||
include_test4
|
|
@@ -1 +0,0 @@
|
|||||||
{include 'include_test4.tpl'}
|
|
@@ -1 +0,0 @@
|
|||||||
include path root
|
|
@@ -1,51 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Smarty PHPunit tests for File resources
|
|
||||||
*
|
|
||||||
* @package PHPunit
|
|
||||||
* @author Rodney Rehm
|
|
||||||
* @runTestsInSeparateProcess
|
|
||||||
* @preserveGlobalState disabled
|
|
||||||
* @backupStaticAttributes enabled
|
|
||||||
*/
|
|
||||||
class IncludePathTest extends PHPUnit_Smarty
|
|
||||||
{
|
|
||||||
public function setUp(): void
|
|
||||||
{
|
|
||||||
$this->setUpSmarty(__DIR__);
|
|
||||||
$this->smarty->use_include_path = true;
|
|
||||||
$this->smarty->setPluginsDir(array('./include','./include1'));
|
|
||||||
$this->smarty->enableSecurity();
|
|
||||||
$ds = DIRECTORY_SEPARATOR;
|
|
||||||
set_include_path($this->smarty->_realpath(__DIR__ . "{$ds}..{$ds}..{$ds}..{$ds}Include_Path{$ds}Plugins{$ds}", true) . PATH_SEPARATOR . get_include_path());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tears down the fixture
|
|
||||||
* This method is called after a test is executed.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
protected function tearDown(): void
|
|
||||||
{
|
|
||||||
ini_restore('include_path');
|
|
||||||
$this->smarty->disableSecurity();
|
|
||||||
parent::tearDown();
|
|
||||||
}
|
|
||||||
public function testInit()
|
|
||||||
{
|
|
||||||
$this->cleanDirs();
|
|
||||||
}
|
|
||||||
public function testInclude1()
|
|
||||||
{
|
|
||||||
$this->assertStringContainsString('plugin1', $this->smarty->fetch('test_include_path1.tpl'));
|
|
||||||
}
|
|
||||||
public function testInclude2()
|
|
||||||
{
|
|
||||||
$this->assertStringContainsString('plugin2', $this->smarty->fetch('test_include_path2.tpl'));
|
|
||||||
}
|
|
||||||
public function testInclude3()
|
|
||||||
{
|
|
||||||
$this->assertStringContainsString('plugin3', $this->smarty->fetch('test_include_path3.tpl'));
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,54 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Smarty PHPunit basic core function tests
|
|
||||||
*
|
|
||||||
* @package PHPunit
|
|
||||||
* @author Uwe Tews
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* class core function tests
|
|
||||||
*
|
|
||||||
* @runTestsInSeparateProcess
|
|
||||||
* @preserveGlobalState disabled
|
|
||||||
* @backupStaticAttributes enabled
|
|
||||||
*/
|
|
||||||
class LoadPluginTest extends PHPUnit_Smarty
|
|
||||||
{
|
|
||||||
public function setUp(): void
|
|
||||||
{
|
|
||||||
$this->setUpSmarty(__DIR__);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* loadPlugin test unkown plugin
|
|
||||||
*/
|
|
||||||
public function testLoadPluginErrorReturn()
|
|
||||||
{
|
|
||||||
$this->assertFalse($this->smarty->loadPlugin('\\Smarty\\Not\\Known'));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* loadPlugin test \Smarty\Debug exists
|
|
||||||
*/
|
|
||||||
public function testLoadPluginSmartyInternalDebug()
|
|
||||||
{
|
|
||||||
$this->assertTrue($this->smarty->loadPlugin(\Smarty\Debug::class) == true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* loadPlugin test \Smarty\Template exists
|
|
||||||
*/
|
|
||||||
public function testLoadPluginSmartyTemplateClass()
|
|
||||||
{
|
|
||||||
$this->assertTrue($this->smarty->loadPlugin(\Smarty\Template) == true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* loadPlugin test loaging from plugins_dir
|
|
||||||
*/
|
|
||||||
public function testLoadPluginSmartyPluginCounter()
|
|
||||||
{
|
|
||||||
$this->assertTrue($this->smarty->loadPlugin('smarty_function_counter') == true);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,5 +0,0 @@
|
|||||||
<?php
|
|
||||||
function smarty_function_plugin3($params, $template)
|
|
||||||
{
|
|
||||||
return 'plugin3';
|
|
||||||
}
|
|
@@ -1 +0,0 @@
|
|||||||
{plugin1}
|
|
@@ -1 +0,0 @@
|
|||||||
{plugin2}
|
|
@@ -1 +0,0 @@
|
|||||||
{plugin3}
|
|
@@ -1,7 +0,0 @@
|
|||||||
<?php
|
|
||||||
function smarty_function_chain1($params, $tpl)
|
|
||||||
{
|
|
||||||
$tpl->smarty->loadPlugin('smarty_function_chain2');
|
|
||||||
|
|
||||||
return smarty_function_chain2($params, $tpl);
|
|
||||||
}
|
|
@@ -1,7 +0,0 @@
|
|||||||
<?php
|
|
||||||
function smarty_function_chain2($params, $tpl)
|
|
||||||
{
|
|
||||||
$tpl->smarty->loadPlugin('smarty_function_chain3');
|
|
||||||
|
|
||||||
return smarty_function_chain3($params, $tpl);
|
|
||||||
}
|
|
@@ -1,5 +0,0 @@
|
|||||||
<?php
|
|
||||||
function smarty_function_chain3($params, $tpl)
|
|
||||||
{
|
|
||||||
return 'from chain3';
|
|
||||||
}
|
|
@@ -1,33 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Smarty PHPunit tests chained loading of dependend pluglind
|
|
||||||
*
|
|
||||||
* @package PHPunit
|
|
||||||
* @author Rodney Rehm
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* class for modifier tests
|
|
||||||
*
|
|
||||||
* @runTestsInSeparateProcess
|
|
||||||
* @preserveGlobalState disabled
|
|
||||||
* @backupStaticAttributes enabled
|
|
||||||
*/
|
|
||||||
class PluginChainedLoadTest extends PHPUnit_Smarty
|
|
||||||
{
|
|
||||||
public function setUp(): void
|
|
||||||
{
|
|
||||||
$this->setUpSmarty(__DIR__);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testInit()
|
|
||||||
{
|
|
||||||
$this->cleanDirs();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testPluginChainedLoad()
|
|
||||||
{
|
|
||||||
$this->smarty->addPluginsDir(__DIR__ . "/PHPunitplugins/");
|
|
||||||
$this->assertStringContainsString('from chain3', $this->smarty->fetch('test_plugin_chained_load.tpl'));
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,27 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Smarty PHPunit tests of shared plugin functions
|
|
||||||
*
|
|
||||||
* @package PHPunit
|
|
||||||
* @author Rodney Rehm
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* class for function tests
|
|
||||||
*/
|
|
||||||
class SharedFunctionsTest extends PHPUnit_Smarty
|
|
||||||
{
|
|
||||||
public function setUp(): void
|
|
||||||
{
|
|
||||||
$this->setUpSmarty(__DIR__);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* test smarty_function_escape_special_chars()
|
|
||||||
*/
|
|
||||||
public function testEscapeSpecialChars()
|
|
||||||
{
|
|
||||||
$this->assertEquals('hello<world ©', smarty_function_escape_special_chars('hello<world ©'));
|
|
||||||
$this->assertEquals('ö€', smarty_function_escape_special_chars('ö€'));
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,2 +0,0 @@
|
|||||||
# Ignore anything in here, but keep this directory
|
|
||||||
*
|
|
@@ -1,2 +0,0 @@
|
|||||||
# Ignore anything in here, but keep this directory
|
|
||||||
*
|
|
@@ -1,2 +0,0 @@
|
|||||||
# Ignore anything in here, but keep this directory
|
|
||||||
*
|
|
@@ -1,26 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
class _object_toString
|
|
||||||
{
|
|
||||||
protected $string = null;
|
|
||||||
|
|
||||||
public function __construct($string)
|
|
||||||
{
|
|
||||||
$this->string = (string) $string;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function __toString()
|
|
||||||
{
|
|
||||||
return $this->string;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class _object_noString
|
|
||||||
{
|
|
||||||
protected $string = null;
|
|
||||||
|
|
||||||
public function __construct($string)
|
|
||||||
{
|
|
||||||
$this->string = (string) $string;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1 +0,0 @@
|
|||||||
{chain1}
|
|
@@ -1,2 +0,0 @@
|
|||||||
# Ignore anything in here, but keep this directory
|
|
||||||
*
|
|
@@ -29,8 +29,6 @@ class CacheResourceCustomPDOGzipTest extends CacheResourceTestCommon
|
|||||||
$this->setUpSmarty(__DIR__);
|
$this->setUpSmarty(__DIR__);
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
$this->smarty->setCachingType('pdo');
|
$this->smarty->setCachingType('pdo');
|
||||||
$this->assertTrue(false !== $this->smarty->loadPlugin('Smarty_CacheResource_Pdo_Gziptest'),
|
|
||||||
'loadPlugin() could not load PDOGzip cache resource');
|
|
||||||
$this->smarty->registerCacheResource('pdo', new Smarty_CacheResource_Pdo_Gziptest($this->getPDO(),
|
$this->smarty->registerCacheResource('pdo', new Smarty_CacheResource_Pdo_Gziptest($this->getPDO(),
|
||||||
'output_cache'));
|
'output_cache'));
|
||||||
}
|
}
|
||||||
|
@@ -1,67 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Smarty PHPunit tests for File resources
|
|
||||||
*
|
|
||||||
* @package PHPunit
|
|
||||||
* @author Rodney Rehm
|
|
||||||
* @runTestsInSeparateProcess
|
|
||||||
* @preserveGlobalState disabled
|
|
||||||
* @backupStaticAttributes enabled
|
|
||||||
*/
|
|
||||||
class FileIncludePathTest extends PHPUnit_Smarty
|
|
||||||
{
|
|
||||||
public function setUp(): void
|
|
||||||
{
|
|
||||||
$this->setUpSmarty(__DIR__);
|
|
||||||
$this->smarty->use_include_path = true;
|
|
||||||
$this->smarty->setTemplateDir(array('./templates', './templates_2', './include'));
|
|
||||||
$this->smarty->enableSecurity();
|
|
||||||
$ds = DIRECTORY_SEPARATOR;
|
|
||||||
set_include_path($this->smarty->_realpath(__DIR__ . "{$ds}..{$ds}..{$ds}..{$ds}Include_Path{$ds}Tpl{$ds}", true) . PATH_SEPARATOR . get_include_path());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tears down the fixture
|
|
||||||
* This method is called after a test is executed.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
protected function tearDown(): void
|
|
||||||
{
|
|
||||||
ini_restore('include_path');
|
|
||||||
$this->smarty->disableSecurity();
|
|
||||||
parent::tearDown();
|
|
||||||
}
|
|
||||||
public function testInit()
|
|
||||||
{
|
|
||||||
$this->cleanDirs();
|
|
||||||
}
|
|
||||||
public function testInclude1()
|
|
||||||
{
|
|
||||||
$this->assertStringContainsString('include_test1', $this->smarty->fetch('test1.tpl'));
|
|
||||||
}
|
|
||||||
public function testInclude2()
|
|
||||||
{
|
|
||||||
$this->assertStringContainsString('include_test2', $this->smarty->fetch('test2.tpl'));
|
|
||||||
}
|
|
||||||
public function testInclude3()
|
|
||||||
{
|
|
||||||
$this->assertStringContainsString('include_test3', $this->smarty->fetch('test3.tpl'));
|
|
||||||
}
|
|
||||||
public function testInclude31()
|
|
||||||
{
|
|
||||||
$this->smarty->use_include_path = false;
|
|
||||||
$this->smarty->security_policy->secure_dir = getcwd();
|
|
||||||
$this->assertStringContainsString('include_test3', $this->smarty->fetch('test3.tpl'));
|
|
||||||
}
|
|
||||||
public function testInclude4()
|
|
||||||
{
|
|
||||||
$this->assertStringContainsString('include_test4', $this->smarty->fetch('test4.tpl'));
|
|
||||||
}
|
|
||||||
public function testInclude5()
|
|
||||||
{
|
|
||||||
$this->smarty->setTemplateDir(array('./'));
|
|
||||||
$this->assertStringContainsString('include path root', $this->smarty->fetch('test5.tpl'));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,2 +0,0 @@
|
|||||||
# Ignore anything in here, but keep this directory
|
|
||||||
*
|
|
@@ -1 +0,0 @@
|
|||||||
include_test3
|
|
@@ -1 +0,0 @@
|
|||||||
templates
|
|
@@ -1 +0,0 @@
|
|||||||
{include 'include_test1.tpl'}
|
|
@@ -1 +0,0 @@
|
|||||||
{include 'include_test2.tpl'}
|
|
@@ -1 +0,0 @@
|
|||||||
{include 'include_test3.tpl'}
|
|
@@ -1 +0,0 @@
|
|||||||
templates_2
|
|
@@ -1 +0,0 @@
|
|||||||
include_test1
|
|
@@ -1 +0,0 @@
|
|||||||
templates_3
|
|
@@ -1 +0,0 @@
|
|||||||
templates_4
|
|
@@ -1,2 +0,0 @@
|
|||||||
# Ignore anything in here, but keep this directory
|
|
||||||
*
|
|
@@ -49,7 +49,6 @@ class ResourcePluginTest extends PHPUnit_Smarty
|
|||||||
public function testResourcePluginRegisteredInstance()
|
public function testResourcePluginRegisteredInstance()
|
||||||
{
|
{
|
||||||
$this->smarty->addPluginsDir("./PHPunitplugins/");
|
$this->smarty->addPluginsDir("./PHPunitplugins/");
|
||||||
$this->smarty->loadPlugin('_Db2Plugin');
|
|
||||||
$this->smarty->registerResource('db2a', new _Db2Plugin('db2a'));
|
$this->smarty->registerResource('db2a', new _Db2Plugin('db2a'));
|
||||||
$this->assertEquals('hello world', $this->smarty->fetch('db2a:test'));
|
$this->assertEquals('hello world', $this->smarty->fetch('db2a:test'));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user