From b4bbc17f1c577516c9d6434f8cfb57de526eec48 Mon Sep 17 00:00:00 2001 From: Simon Wisselink Date: Tue, 23 Jan 2024 11:45:13 +0100 Subject: [PATCH 1/3] Add PHP8.3 support for Smarty 4.3. (#927) See #925 --- .github/workflows/ci.yml | 5 ++++- CHANGELOG.md | 3 +++ docker-compose.yml | 5 +++++ libs/sysplugins/smarty_internal_errorhandler.php | 2 +- run-tests-for-all-php-versions.sh | 4 +++- utilities/testrunners/php83/Dockerfile | 10 ++++++++++ 6 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 utilities/testrunners/php83/Dockerfile diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 00072c8c..04624c0f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,6 +32,7 @@ jobs: - "8.0" - "8.1" - "8.2" + - "8.3" compiler: - default @@ -46,7 +47,9 @@ jobs: - os: ubuntu-latest php-version: "8.2" compiler: jit - + - os: ubuntu-latest + php-version: "8.3" + compiler: jit steps: - name: Checkout uses: actions/checkout@v3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 04be00ec..d08653d8 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] +### Added +- PHP8.3 support [#925](https://github.com/smarty-php/smarty/issues/925) + ## [4.3.4] - 2023-09-14 ## [4.3.3] - 2023-09-14 diff --git a/docker-compose.yml b/docker-compose.yml index 4f940b2c..ff759f5f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -42,3 +42,8 @@ services: service: base build: dockerfile: ./utilities/testrunners/php82/Dockerfile + php83: + extends: + service: base + build: + dockerfile: ./utilities/testrunners/php83/Dockerfile \ No newline at end of file diff --git a/libs/sysplugins/smarty_internal_errorhandler.php b/libs/sysplugins/smarty_internal_errorhandler.php index 6f526c38..4ddcfcd1 100644 --- a/libs/sysplugins/smarty_internal_errorhandler.php +++ b/libs/sysplugins/smarty_internal_errorhandler.php @@ -94,7 +94,7 @@ class Smarty_Internal_ErrorHandler } if ($this->allowUndefinedArrayKeys && preg_match( - '/^(Undefined index|Undefined array key|Trying to access array offset on value of type)/', + '/^(Undefined index|Undefined array key|Trying to access array offset on)/', $errstr )) { return; // suppresses this error diff --git a/run-tests-for-all-php-versions.sh b/run-tests-for-all-php-versions.sh index b64f01e4..79bebb8a 100755 --- a/run-tests-for-all-php-versions.sh +++ b/run-tests-for-all-php-versions.sh @@ -10,4 +10,6 @@ docker-compose run php72 ./run-tests.sh $@ && \ docker-compose run php73 ./run-tests.sh $@ && \ docker-compose run php74 ./run-tests.sh $@ && \ docker-compose run php80 ./run-tests.sh $@ && \ -docker-compose run php81 ./run-tests.sh $@ +docker-compose run php81 ./run-tests.sh $@ && \ +docker-compose run php82 ./run-tests.sh $@ && \ +docker-compose run php83 ./run-tests.sh $@ diff --git a/utilities/testrunners/php83/Dockerfile b/utilities/testrunners/php83/Dockerfile new file mode 100644 index 00000000..83cd8255 --- /dev/null +++ b/utilities/testrunners/php83/Dockerfile @@ -0,0 +1,10 @@ +FROM php:8.3-cli + +## Basic utilities +RUN apt-get update -yqq && apt-get install -y curl apt-utils git zip unzip + +## Composer +COPY ./utilities/testrunners/shared/install-composer.sh /root/install-composer.sh +WORKDIR /root +RUN sh ./install-composer.sh +RUN mv ./composer.phar /usr/local/bin/composer From e0cbbdf6ea21768d0194e59d2f8c2e20d5f0868c Mon Sep 17 00:00:00 2001 From: Simon Wisselink Date: Tue, 23 Jan 2024 11:47:54 +0100 Subject: [PATCH 2/3] Update php version number in docs --- README.md | 2 +- docs/getting-started.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0ef3cfab..9b8706d4 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Smarty is a template engine for PHP, facilitating the separation of presentation Read the [documentation](https://smarty-php.github.io/smarty/) to find out how to use it. ## Requirements -Smarty can be run with PHP 7.1 to PHP 8.2. +Smarty can be run with PHP 7.1 to PHP 8.3. ## Installation Smarty versions 3.1.11 or later can be installed with [Composer](https://getcomposer.org/). diff --git a/docs/getting-started.md b/docs/getting-started.md index 2ffbbd11..f549e50e 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,7 +1,7 @@ # Getting started ## Requirements -Smarty can be run with PHP 7.1 to PHP 8.2. +Smarty can be run with PHP 7.1 to PHP 8.3. ## Installation Smarty can be installed with [Composer](https://getcomposer.org/). From 326b2da8da3cb843de1211d507ba4dea3aa49688 Mon Sep 17 00:00:00 2001 From: Simon Wisselink Date: Mon, 5 Feb 2024 14:37:52 +0100 Subject: [PATCH 3/3] Fix incorrect compilation of expressions when escape_html=true (#932) Fixes #930 --- CHANGELOG.md | 3 +++ .../smarty_internal_compile_private_print_expression.php | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d08653d8..c54f7872 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - PHP8.3 support [#925](https://github.com/smarty-php/smarty/issues/925) +### Fixed +- Incorrect compilation of expressions when escape_html=true [#930](https://github.com/smarty-php/smarty/pull/930) + ## [4.3.4] - 2023-09-14 ## [4.3.3] - 2023-09-14 diff --git a/libs/sysplugins/smarty_internal_compile_private_print_expression.php b/libs/sysplugins/smarty_internal_compile_private_print_expression.php index 96bd3724..78f1c076 100644 --- a/libs/sysplugins/smarty_internal_compile_private_print_expression.php +++ b/libs/sysplugins/smarty_internal_compile_private_print_expression.php @@ -93,7 +93,7 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C } // autoescape html if ($compiler->template->smarty->escape_html) { - $output = "htmlspecialchars((string) {$output}, ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')"; + $output = "htmlspecialchars((string) ({$output}), ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')"; } // loop over registered filters if (!empty($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ])) {