diff --git a/docs/changelog.270.txt b/docs/changelog.270.txt index 6589cef3b..4474d7de9 100644 --- a/docs/changelog.270.txt +++ b/docs/changelog.270.txt @@ -33,6 +33,7 @@ Bug fixes: - Protector replaces its ban list, bandwidth file and .htaccess ban atomically where the directory allows a temporary file, so a request never reads an emptied or half-written file and a failed write keeps the old content; where the directory refuses new files but the file itself is writable, it writes the file in place under a lock so the ban still applies (not atomic: a failed write there can leave the file partial). It no longer stops with a fatal error when .htaccess is not writable (xoops_lib/modules/protector/class/protector.php) (#244) - failures that were silenced with @ are now handled or reported: avatar, cache and debug-config clean-up, the debug log's permissions, session start-up, and file clean-up in the upgrade scripts (include/common.php, include/debugconfig.php, class/logger/filelogger.php, edituser.php, modules/profile/edituser.php, Frameworks/art/functions.cache.php, upgrade/) (#245) - the optional confirmation step for deleting notifications works: it no longer stops with a TypeError on the selection or posts back to itself, it carries only numeric notification ids to the delete step, and the delete step skips ids that no longer exist (notifications.php) (#233) +- templates can use |sprintf without a Smarty 4 deprecation notice: XoopsTpl registers sprintf as a modifier, as it already does for strstr, trim and file_exists (class/template.php) - the TinyMCE 5 and 7 image managers no longer double-encode their target field on delete confirmations, and URL-encode it in their links (class/xoopseditor/tinymce5|7/js/tinymce/plugins/xoopsimagemanager/xoopsimagemanager.php) (#233) Core: diff --git a/htdocs/class/template.php b/htdocs/class/template.php index fa92b6bb1..f7e1869dd 100644 --- a/htdocs/class/template.php +++ b/htdocs/class/template.php @@ -59,6 +59,8 @@ public function __construct() $this->registerPlugin('modifier', 'trim', 'trim'); // Assuming $smarty is your Smarty instance $this->registerPlugin('modifier', 'file_exists', 'file_exists'); + // Smarty 4 deprecates unregistered PHP functions used as modifiers. + $this->registerPlugin('modifier', 'sprintf', 'sprintf'); if ($xoopsConfig['debug_mode']) { $this->debugging_ctrl = 'URL';