mirror of
https://github.com/smarty-php/smarty.git
synced 2026-08-04 04:24:18 +02:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d95aec28d8 | |||
| 1d9cda2be3 | |||
| edfd4c91da | |||
| 4434e128c6 | |||
| 19df91b692 |
@@ -6,6 +6,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Fixed
|
||||
- `|strip_tags` does not work if the input is 0 [#890](https://github.com/smarty-php/smarty/issues/890)
|
||||
|
||||
## [4.3.2] - 2023-07-19
|
||||
|
||||
### Fixed
|
||||
- `$smarty->muteUndefinedOrNullWarnings()` now also mutes PHP8 warnings for undefined properties
|
||||
|
||||
## [4.3.1] - 2023-03-28
|
||||
|
||||
### Security
|
||||
|
||||
@@ -107,7 +107,7 @@ class Smarty extends Smarty_Internal_TemplateBase
|
||||
/**
|
||||
* smarty version
|
||||
*/
|
||||
const SMARTY_VERSION = '4.3.1';
|
||||
const SMARTY_VERSION = '4.3.2';
|
||||
/**
|
||||
* define variable scopes
|
||||
*/
|
||||
|
||||
+1
-3
@@ -167,9 +167,7 @@
|
||||
</html>
|
||||
{/capture}
|
||||
<script type="text/javascript">
|
||||
{$id = '__Smarty__'}
|
||||
{if $display_mode}{$id = "$offset$template_name"|md5}{/if}
|
||||
_smarty_console = window.open("", "console{$id}", "width=1024,height=600,left={$offset},top={$offset},resizable,scrollbars=yes");
|
||||
_smarty_console = window.open("", "console{$targetWindow}", "width=1024,height=600,left={$offset},top={$offset},resizable,scrollbars=yes");
|
||||
_smarty_console.document.write("{$debug_output|escape:'javascript' nofilter}");
|
||||
_smarty_console.document.close();
|
||||
</script>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
function smarty_modifiercompiler_strip_tags($params)
|
||||
{
|
||||
if (!isset($params[ 1 ]) || $params[ 1 ] === true || trim($params[ 1 ], '"') === 'true') {
|
||||
return "preg_replace('!<[^>]*?>!', ' ', {$params[0]} ?: '')";
|
||||
return "preg_replace('!<[^>]*?>!', ' ', (string) {$params[0]})";
|
||||
} else {
|
||||
return 'strip_tags((string) ' . $params[ 0 ] . ')';
|
||||
}
|
||||
|
||||
@@ -238,9 +238,12 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
|
||||
$_config_vars = $ptr->config_vars;
|
||||
ksort($_config_vars);
|
||||
$debugging = $smarty->debugging;
|
||||
$templateName = $obj->source->type . ':' . $obj->source->name;
|
||||
$displayMode = $debugging === 2 || !$full;
|
||||
$offset = $this->offset * 50;
|
||||
$_template = new Smarty_Internal_Template($debObj->debug_tpl, $debObj);
|
||||
if ($obj->_isTplObj()) {
|
||||
$_template->assign('template_name', $obj->source->type . ':' . $obj->source->name);
|
||||
$_template->assign('template_name', $templateName);
|
||||
}
|
||||
if ($obj->_objType === 1 || $full) {
|
||||
$_template->assign('template_data', $this->template_data[ $this->index ]);
|
||||
@@ -250,8 +253,8 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
|
||||
$_template->assign('assigned_vars', $_assigned_vars);
|
||||
$_template->assign('config_vars', $_config_vars);
|
||||
$_template->assign('execution_time', microtime(true) - $smarty->start_time);
|
||||
$_template->assign('display_mode', $debugging === 2 || !$full);
|
||||
$_template->assign('offset', $this->offset * 50);
|
||||
$_template->assign('targetWindow', $displayMode ? md5("$offset$templateName") : '__Smarty__');
|
||||
$_template->assign('offset', $offset);
|
||||
echo $_template->fetch();
|
||||
if (isset($full)) {
|
||||
$this->index--;
|
||||
|
||||
@@ -17,6 +17,12 @@ class Smarty_Internal_ErrorHandler
|
||||
*/
|
||||
public $allowUndefinedVars = true;
|
||||
|
||||
/**
|
||||
* Allows {$foo->propName} where propName is undefined.
|
||||
* @var bool
|
||||
*/
|
||||
public $allowUndefinedProperties = true;
|
||||
|
||||
/**
|
||||
* Allows {$foo.bar} where bar is unset and {$foo.bar1.bar2} where either bar1 or bar2 is unset.
|
||||
* @var bool
|
||||
@@ -80,6 +86,13 @@ class Smarty_Internal_ErrorHandler
|
||||
return; // suppresses this error
|
||||
}
|
||||
|
||||
if ($this->allowUndefinedProperties && preg_match(
|
||||
'/^(Undefined property)/',
|
||||
$errstr
|
||||
)) {
|
||||
return; // suppresses this error
|
||||
}
|
||||
|
||||
if ($this->allowUndefinedArrayKeys && preg_match(
|
||||
'/^(Undefined index|Undefined array key|Trying to access array offset on value of type)/',
|
||||
$errstr
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
/**
|
||||
* Smarty PHPunit tests of modifier
|
||||
*/
|
||||
|
||||
namespace UnitTests\TemplateSource\TagTests\PluginModifier;
|
||||
use PHPUnit_Smarty;
|
||||
|
||||
/**
|
||||
* class for modifier tests
|
||||
*
|
||||
* @runTestsInSeparateProcess
|
||||
* @preserveGlobalState disabled
|
||||
* @backupStaticAttributes enabled
|
||||
*/
|
||||
class PluginModifierStripTagsTest extends PHPUnit_Smarty {
|
||||
|
||||
public function setUp(): void {
|
||||
$this->setUpSmarty(__DIR__);
|
||||
}
|
||||
|
||||
public function testDefault() {
|
||||
$tpl = $this->smarty->createTemplate('string:{$x|strip_tags}');
|
||||
$tpl->assign('x', '<b>hi</b>');
|
||||
$this->assertEquals(" hi ", $this->smarty->fetch($tpl));
|
||||
}
|
||||
|
||||
public function testParam1() {
|
||||
$tpl = $this->smarty->createTemplate('string:{$x|strip_tags:false}');
|
||||
$tpl->assign('x', '<b>hi</b>');
|
||||
$this->assertEquals("hi", $this->smarty->fetch($tpl));
|
||||
}
|
||||
|
||||
public function testInputIsFalsy0() {
|
||||
$tpl = $this->smarty->createTemplate('string:{$x|strip_tags}');
|
||||
$tpl->assign('x', 0);
|
||||
$this->assertEquals("0", $this->smarty->fetch($tpl));
|
||||
}
|
||||
|
||||
public function testInputIsFalsy1() {
|
||||
$tpl = $this->smarty->createTemplate('string:{$x|strip_tags}');
|
||||
$tpl->assign('x', '');
|
||||
$this->assertEquals("", $this->smarty->fetch($tpl));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user