From 4a2237bebec53ebf0fcc043c6997a28055241128 Mon Sep 17 00:00:00 2001 From: Adrien Poupa Date: Thu, 15 Dec 2022 13:36:37 -0500 Subject: [PATCH] Fix PHP8.1 deprecation error on null string Prevents E_DEPRECATED: mb_strlen(): Passing null to parameter #1 ($string) of type string is deprecated --- libs/plugins/modifier.truncate.php | 2 +- libs/plugins/modifiercompiler.count_characters.php | 4 ++-- libs/plugins/modifiercompiler.count_words.php | 2 +- libs/plugins/modifiercompiler.lower.php | 4 ++-- libs/plugins/modifiercompiler.upper.php | 4 ++-- libs/plugins/outputfilter.trimwhitespace.php | 2 +- libs/plugins/shared.escape_special_chars.php | 2 +- libs/plugins/variablefilter.htmlspecialchars.php | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/libs/plugins/modifier.truncate.php b/libs/plugins/modifier.truncate.php index 80dcdb531..d253e4a61 100644 --- a/libs/plugins/modifier.truncate.php +++ b/libs/plugins/modifier.truncate.php @@ -26,7 +26,7 @@ */ function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false) { - if ($length === 0) { + if ($length === 0 || $string === null) { return ''; } if (Smarty::$_MBSTRING) { diff --git a/libs/plugins/modifiercompiler.count_characters.php b/libs/plugins/modifiercompiler.count_characters.php index b5d97e276..7798cabc1 100644 --- a/libs/plugins/modifiercompiler.count_characters.php +++ b/libs/plugins/modifiercompiler.count_characters.php @@ -25,8 +25,8 @@ function smarty_modifiercompiler_count_characters($params) return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[ 0 ] . ', $tmp)'; } if (Smarty::$_MBSTRING) { - return 'mb_strlen(' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; + return 'mb_strlen((string) ' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; } // no MBString fallback - return 'strlen(' . $params[ 0 ] . ')'; + return 'strlen((string) ' . $params[ 0 ] . ')'; } diff --git a/libs/plugins/modifiercompiler.count_words.php b/libs/plugins/modifiercompiler.count_words.php index cf2e50222..48a3daa17 100644 --- a/libs/plugins/modifiercompiler.count_words.php +++ b/libs/plugins/modifiercompiler.count_words.php @@ -27,5 +27,5 @@ function smarty_modifiercompiler_count_words($params) $params[ 0 ] . ', $tmp)'; } // no MBString fallback - return 'str_word_count(' . $params[ 0 ] . ')'; + return 'str_word_count((string) ' . $params[ 0 ] . ')'; } diff --git a/libs/plugins/modifiercompiler.lower.php b/libs/plugins/modifiercompiler.lower.php index ac9cc39d7..4144e5619 100644 --- a/libs/plugins/modifiercompiler.lower.php +++ b/libs/plugins/modifiercompiler.lower.php @@ -22,8 +22,8 @@ function smarty_modifiercompiler_lower($params) { if (Smarty::$_MBSTRING) { - return 'mb_strtolower(' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; + return 'mb_strtolower((string) ' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; } // no MBString fallback - return 'strtolower(' . $params[ 0 ] . ')'; + return 'strtolower((string) ' . $params[ 0 ] . ')'; } diff --git a/libs/plugins/modifiercompiler.upper.php b/libs/plugins/modifiercompiler.upper.php index 31a90a055..96030518e 100644 --- a/libs/plugins/modifiercompiler.upper.php +++ b/libs/plugins/modifiercompiler.upper.php @@ -21,8 +21,8 @@ function smarty_modifiercompiler_upper($params) { if (Smarty::$_MBSTRING) { - return 'mb_strtoupper(' . $params[ 0 ] . ' ?? \'\', \'' . addslashes(Smarty::$_CHARSET) . '\')'; + return 'mb_strtoupper((string) ' . $params[ 0 ] . ' ?? \'\', \'' . addslashes(Smarty::$_CHARSET) . '\')'; } // no MBString fallback - return 'strtoupper(' . $params[ 0 ] . ' ?? \'\')'; + return 'strtoupper((string) ' . $params[ 0 ] . ' ?? \'\')'; } diff --git a/libs/plugins/outputfilter.trimwhitespace.php b/libs/plugins/outputfilter.trimwhitespace.php index 2f747ad5a..180cdd081 100644 --- a/libs/plugins/outputfilter.trimwhitespace.php +++ b/libs/plugins/outputfilter.trimwhitespace.php @@ -62,7 +62,7 @@ function smarty_outputfilter_trimwhitespace($source) } } $expressions = array(// replace multiple spaces between tags by a single space - // can't remove them entirely, becaue that might break poorly implemented CSS display:inline-block elements + // can't remove them entirely, because that might break poorly implemented CSS display:inline-block elements '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2', // remove spaces between attributes (but not in attribute values!) '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5', diff --git a/libs/plugins/shared.escape_special_chars.php b/libs/plugins/shared.escape_special_chars.php index a204b092c..355b02b57 100644 --- a/libs/plugins/shared.escape_special_chars.php +++ b/libs/plugins/shared.escape_special_chars.php @@ -20,7 +20,7 @@ function smarty_function_escape_special_chars($string) { if (!is_array($string)) { - $string = htmlspecialchars($string, ENT_COMPAT, Smarty::$_CHARSET, false); + $string = htmlspecialchars((string) $string, ENT_COMPAT, Smarty::$_CHARSET, false); } return $string; } diff --git a/libs/plugins/variablefilter.htmlspecialchars.php b/libs/plugins/variablefilter.htmlspecialchars.php index 3c85295db..2eb12d20a 100644 --- a/libs/plugins/variablefilter.htmlspecialchars.php +++ b/libs/plugins/variablefilter.htmlspecialchars.php @@ -15,5 +15,5 @@ */ function smarty_variablefilter_htmlspecialchars($source, Smarty_Internal_Template $template) { - return htmlspecialchars($source, ENT_QUOTES, Smarty::$_CHARSET); + return htmlspecialchars((string) $source, ENT_QUOTES, Smarty::$_CHARSET); }