From 44e00cf7c0682173387f0c7c6f8f22629b56fe24 Mon Sep 17 00:00:00 2001 From: Simon Wisselink Date: Wed, 19 Jul 2023 12:05:45 +0200 Subject: [PATCH] muteUndefinedOrNullWarnings() now also mutes PHP8 warnings for undefined properties --- CHANGELOG.md | 3 +++ libs/sysplugins/smarty_internal_errorhandler.php | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 899cfd7e..f3791f9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed +- `$smarty->muteUndefinedOrNullWarnings()` now also mutes PHP8 warnings for undefined properties + ## [4.3.1] - 2023-03-28 ### Security diff --git a/libs/sysplugins/smarty_internal_errorhandler.php b/libs/sysplugins/smarty_internal_errorhandler.php index f57cc21f..6f526c38 100644 --- a/libs/sysplugins/smarty_internal_errorhandler.php +++ b/libs/sysplugins/smarty_internal_errorhandler.php @@ -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