diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f67a2970a195a..5416e7a5cc94e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -116,7 +116,7 @@ jobs: needs: [code-style-php] strategy: matrix: - php_version: ['8.1', '8.2', '8.3', '8.4'] + php_version: ['8.3', '8.4'] steps: - uses: actions/checkout@v4 - uses: actions/cache/restore@v4 @@ -133,7 +133,7 @@ jobs: needs: [code-style-php] strategy: matrix: - php_version: ['8.1', '8.2', '8.3', '8.4'] + php_version: ['8.3', '8.4'] config: ['phpunit.xml.dist', 'phpunit-pgsql.xml.dist'] steps: - uses: actions/checkout@v4 @@ -270,11 +270,11 @@ jobs: test_group: cmysqlmax db_engine: mysqli db_host: mysql - - php_version: '8.1' + - php_version: '8.3' test_group: cmysql db_engine: mysqli db_host: mysql - - php_version: '8.1' + - php_version: '8.3' test_group: cpostgres db_engine: pgsql db_host: postgres diff --git a/README.md b/README.md index b1e819227b3f2..69c10113c1f93 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Build Status | Actions | PHP | Node | npm | |-------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|----------------------------------------------------------------------------------| -| [![Build Status](https://github.com/joomla/joomla-cms/actions/workflows/ci.yml/badge.svg?branch=6.0-dev)](https://github.com/joomla/joomla-cms) | [![PHP](https://img.shields.io/badge/PHP-V8.1.0-green)](https://www.php.net/) | [![node-lts](https://img.shields.io/badge/Node-V20.0-green)](https://nodejs.org/en/) | [![npm](https://img.shields.io/badge/npm-v10.1.0-green)](https://nodejs.org/en/) | +| [![Build Status](https://github.com/joomla/joomla-cms/actions/workflows/ci.yml/badge.svg?branch=6.0-dev)](https://github.com/joomla/joomla-cms) | [![PHP](https://img.shields.io/badge/PHP-V8.3.0-green)](https://www.php.net/) | [![node-lts](https://img.shields.io/badge/Node-V20.0-green)](https://nodejs.org/en/) | [![npm](https://img.shields.io/badge/npm-v10.1.0-green)](https://nodejs.org/en/) | Overview --------------------- diff --git a/administrator/index.php b/administrator/index.php index 480d1fce34f93..50e10b63f495a 100644 --- a/administrator/index.php +++ b/administrator/index.php @@ -10,7 +10,7 @@ // NOTE: This file should remain compatible with PHP 5.2 to allow us to run our PHP minimum check and show a friendly error message // Define the application's minimum supported PHP version as a constant so it can be referenced within the application. -\define('JOOMLA_MINIMUM_PHP', '8.1.0'); +\define('JOOMLA_MINIMUM_PHP', '8.3.0'); if (version_compare(PHP_VERSION, JOOMLA_MINIMUM_PHP, '<')) { die( diff --git a/api/index.php b/api/index.php index 39b7bd8adceda..1c5503555e75d 100644 --- a/api/index.php +++ b/api/index.php @@ -10,7 +10,7 @@ // NOTE: This file should remain compatible with PHP 5.2 to allow us to run our PHP minimum check and show a friendly error message // Define the application's minimum supported PHP version as a constant so it can be referenced within the application. -\define('JOOMLA_MINIMUM_PHP', '8.1.0'); +\define('JOOMLA_MINIMUM_PHP', '8.3.0'); if (version_compare(PHP_VERSION, JOOMLA_MINIMUM_PHP, '<')) { header('HTTP/1.1 500 Internal Server Error'); diff --git a/build/helpTOC.php b/build/helpTOC.php index ad8915276a86a..8d37b4006a222 100644 --- a/build/helpTOC.php +++ b/build/helpTOC.php @@ -27,7 +27,7 @@ /** * Define the application's minimum supported PHP version as a constant so it can be referenced within the application. */ -const JOOMLA_MINIMUM_PHP = '8.1.0'; +const JOOMLA_MINIMUM_PHP = '8.3.0'; if (!\defined('_JDEFINES')) { \define('JPATH_BASE', \dirname(__DIR__)); diff --git a/cli/joomla.php b/cli/joomla.php index dc3f1f9b9c762..8e5010be97786 100755 --- a/cli/joomla.php +++ b/cli/joomla.php @@ -12,7 +12,7 @@ const _JEXEC = 1; // Define the application's minimum supported PHP version as a constant so it can be referenced within the application. -const JOOMLA_MINIMUM_PHP = '8.1.0'; +const JOOMLA_MINIMUM_PHP = '8.3.0'; if (version_compare(PHP_VERSION, JOOMLA_MINIMUM_PHP, '<')) { echo 'Sorry, your PHP version is not supported.' . PHP_EOL; diff --git a/composer.json b/composer.json index 04562a4eee39c..cc30e2a1bdfd8 100644 --- a/composer.json +++ b/composer.json @@ -115,13 +115,10 @@ }, "replace": { "paragonie/random_compat": "9.99.99", - "symfony/polyfill-php70": "*", - "symfony/polyfill-php71": "*", - "symfony/polyfill-php72": "*", - "symfony/polyfill-php73": "*", - "symfony/polyfill-php74": "*", "symfony/polyfill-php80": "*", - "symfony/polyfill-php81": "*" + "symfony/polyfill-php81": "*", + "symfony/polyfill-php82": "*", + "symfony/polyfill-php83": "*" }, "extra": { "composer-exit-on-patch-failure": true diff --git a/composer.lock b/composer.lock index 34f5d90536dd1..f126406599706 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "eff1429bb271751d4da3442667c9ba84", + "content-hash": "61c56b873523c4a247f2881fc49a3520", "packages": [ { "name": "algo26-matthias/idna-convert", @@ -4776,82 +4776,6 @@ ], "time": "2024-12-23T08:48:59+00:00" }, - { - "name": "symfony/polyfill-php83", - "version": "v1.32.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.32.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, { "name": "symfony/polyfill-uuid", "version": "v1.32.0", diff --git a/index.php b/index.php index b070eda182c8c..72917d65fc1f8 100644 --- a/index.php +++ b/index.php @@ -10,7 +10,7 @@ // NOTE: This file should remain compatible with PHP 5.2 to allow us to run our PHP minimum check and show a friendly error message // Define the application's minimum supported PHP version as a constant so it can be referenced within the application. -define('JOOMLA_MINIMUM_PHP', '8.1.0'); +define('JOOMLA_MINIMUM_PHP', '8.3.0'); if (version_compare(PHP_VERSION, JOOMLA_MINIMUM_PHP, '<')) { die( diff --git a/installation/index.php b/installation/index.php index 099e5daf1d835..fb05cf85bbe24 100644 --- a/installation/index.php +++ b/installation/index.php @@ -10,7 +10,7 @@ // NOTE: This file should remain compatible with PHP 5.2 to allow us to run our PHP minimum check and show a friendly error message // Define the application's minimum supported PHP version as a constant so it can be referenced within the application. -\define('JOOMLA_MINIMUM_PHP', '8.1.0'); +\define('JOOMLA_MINIMUM_PHP', '8.3.0'); if (version_compare(PHP_VERSION, JOOMLA_MINIMUM_PHP, '<')) { die( diff --git a/installation/joomla.php b/installation/joomla.php index 6a3e8db46c2a6..c404155797c46 100644 --- a/installation/joomla.php +++ b/installation/joomla.php @@ -14,7 +14,7 @@ /** * Define the application's minimum supported PHP version as a constant so it can be referenced within the application. */ -\define('JOOMLA_MINIMUM_PHP', '8.1.0'); +\define('JOOMLA_MINIMUM_PHP', '8.3.0'); if (version_compare(PHP_VERSION, JOOMLA_MINIMUM_PHP, '<')) { echo 'Sorry, your PHP version is not supported.' . PHP_EOL; diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 4cf9df3d36033..cb9058e71b84e 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -15366,8 +15366,8 @@ parameters: path: plugins/actionlog/joomla/src/Extension/Joomla.php - - message: '#^Property Joomla\\CMS\\Application\\BaseApplication\:\:\$input is not writable\.$#' - identifier: assign.propertyReadOnly + message: '#^Access to an undefined property Joomla\\CMS\\Application\\BaseApplication\:\:\$input\.$#' + identifier: property.notFound count: 1 path: plugins/behaviour/compat6/classes/Application/BaseApplication.php @@ -15890,12 +15890,60 @@ parameters: count: 1 path: plugins/system/webauthn/src/MetadataRepository.php + - + message: '#^Access to an undefined property Joomla\\Plugin\\Task\\Checkfiles\\Extension\\Checkfiles\:\:\$app\.$#' + identifier: property.notFound + count: 2 + path: plugins/task/checkfiles/src/Extension/Checkfiles.php + + - + message: '#^Access to an undefined property Joomla\\Plugin\\Task\\DeleteActionLogs\\Extension\\DeleteActionLogs\:\:\$app\.$#' + identifier: property.notFound + count: 2 + path: plugins/task/deleteactionlogs/src/Extension/DeleteActionLogs.php + + - + message: '#^Access to an undefined property Joomla\\Plugin\\Task\\PrivacyConsent\\Extension\\PrivacyConsent\:\:\$app\.$#' + identifier: property.notFound + count: 2 + path: plugins/task/privacyconsent/src/Extension/PrivacyConsent.php + + - + message: '#^Access to an undefined property Joomla\\Plugin\\Task\\Requests\\Extension\\Requests\:\:\$app\.$#' + identifier: property.notFound + count: 2 + path: plugins/task/requests/src/Extension/Requests.php + + - + message: '#^Access to an undefined property Joomla\\Plugin\\Task\\RotateLogs\\Extension\\RotateLogs\:\:\$app\.$#' + identifier: property.notFound + count: 2 + path: plugins/task/rotatelogs/src/Extension/RotateLogs.php + + - + message: '#^Access to an undefined property Joomla\\Plugin\\Task\\SessionGC\\Extension\\SessionGC\:\:\$app\.$#' + identifier: property.notFound + count: 2 + path: plugins/task/sessiongc/src/Extension/SessionGC.php + - message: '#^Instantiated class JConfig not found\.$#' identifier: class.notFound count: 1 path: plugins/task/sitestatus/services/provider.php + - + message: '#^Access to an undefined property Joomla\\Plugin\\Task\\SiteStatus\\Extension\\SiteStatus\:\:\$app\.$#' + identifier: property.notFound + count: 2 + path: plugins/task/sitestatus/src/Extension/SiteStatus.php + + - + message: '#^Access to an undefined property Joomla\\Plugin\\Task\\UpdateNotification\\Extension\\UpdateNotification\:\:\$app\.$#' + identifier: property.notFound + count: 2 + path: plugins/task/updatenotification/src/Extension/UpdateNotification.php + - message: ''' #^Access to deprecated static property \$language of class Joomla\\CMS\\Factory\: diff --git a/phpstan.neon b/phpstan.neon index d46cae6d53e7d..3183055a7b0fe 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -6,7 +6,7 @@ includes: parameters: level: 0 - phpVersion: 80100 + phpVersion: 80300 reportUnmatchedIgnoredErrors: false scanDirectories: - libraries/php-encryption diff --git a/plugins/quickicon/phpversioncheck/src/Extension/PhpVersionCheck.php b/plugins/quickicon/phpversioncheck/src/Extension/PhpVersionCheck.php index d3fddac3dd1e4..cd48769d563a6 100644 --- a/plugins/quickicon/phpversioncheck/src/Extension/PhpVersionCheck.php +++ b/plugins/quickicon/phpversioncheck/src/Extension/PhpVersionCheck.php @@ -119,30 +119,6 @@ public function onGetIcons(QuickIconsEvent $event): void private function getPhpSupport() { $phpSupportData = [ - '7.2' => [ - 'security' => '2019-11-30', - 'eos' => '2020-11-30', - ], - '7.3' => [ - 'security' => '2020-12-06', - 'eos' => '2021-12-06', - ], - '7.4' => [ - 'security' => '2021-11-28', - 'eos' => '2022-11-28', - ], - '8.0' => [ - 'security' => '2022-11-26', - 'eos' => '2023-11-26', - ], - '8.1' => [ - 'security' => '2023-11-25', - 'eos' => '2025-12-31', - ], - '8.2' => [ - 'security' => '2024-12-31', - 'eos' => '2026-12-31', - ], '8.3' => [ 'security' => '2025-12-31', 'eos' => '2027-12-31',