PHP 8.5 support

This commit is contained in:
Bernd Bestel 2026-03-01 18:32:51 +01:00
parent 9fe398c4bf
commit 1463a8d21b
No known key found for this signature in database
GPG Key ID: 71BD34C0D4891300
10 changed files with 606 additions and 403 deletions

View File

@ -50,7 +50,7 @@ See the website for more installation guides and troubleshooting help. → [h
### Platform support
- PHP 8.2 or 8.3 (with SQLite 3.34.0+)
- PHP 8.5 (with SQLite 3.34.0+)
- Required PHP extensions: `fileinfo`, `pdo_sqlite`, `gd`, `ctype`, `intl`, `zlib`, `mbstring`
- Recent Firefox, Chrome or Edge

View File

@ -1,8 +1,6 @@
> ⚠️ xxxBREAKING CHANGESxxx
> ❗ xxxImportant upgrade informationXXX
> 💡 xxxMinor upgrade informationXXX
> 💡 PHP 8.5 is from now on supported.
>
> ⚠️ PHP 8.2 and 8.3 are no longer supported.
### New Feature: xxxx

View File

@ -1,6 +1,6 @@
{
"require": {
"php": ">=8.2",
"php": "8.5.*",
"slim/slim": "^4.0",
"slim/psr7": "^1.0",
"slim/http": "^1.0",

873
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ const REQUIRED_PHP_EXTENSIONS = ['fileinfo', 'pdo_sqlite', 'gd', 'ctype', 'intl'
'filter', 'iconv', 'tokenizer', 'json'
];
const REQUIRED_PHP_VERSION = '8.2.0';
const REQUIRED_PHP_VERSION = '8.5.0';
const REQUIRED_SQLITE_VERSION = '3.34.0';
class PrerequisiteChecker

View File

@ -265,9 +265,9 @@ function require_frontend_packages(array $packages)
function EmptyFolder($folderPath)
{
foreach(glob("{$folderPath}/*") as $item)
foreach (glob("{$folderPath}/*") as $item)
{
if(is_dir($item))
if (is_dir($item))
{
EmptyFolder($item);
rmdir($item);
@ -278,3 +278,17 @@ function EmptyFolder($folderPath)
}
}
}
global $ERROR_REPORTING_STATE;
function ErrorReportingDisableDeprecationWarnings()
{
global $ERROR_REPORTING_STATE;
$ERROR_REPORTING_STATE = error_reporting();
error_reporting($ERROR_REPORTING_STATE & ~E_DEPRECATED);
}
function ErrorReportingReset()
{
global $ERROR_REPORTING_STATE;
error_reporting($ERROR_REPORTING_STATE);
}

View File

@ -21,7 +21,7 @@
"datatables.net-colreorder": "^1.5.2",
"datatables.net-colreorder-bs4": "^1.5.2",
"datatables.net-plugins": "^1.10.20",
"datatables.net-rowgroup": "^1.1.2",
"datatables.net-rowgroup": "<1.6.0",
"datatables.net-rowgroup-bs4": "^1.1.2",
"datatables.net-select": "^1.3.1",
"datatables.net-select-bs4": "^1.3.1",

View File

@ -23,7 +23,7 @@ class DatabaseService
return false;
}
public function ExecuteDbStatement(string $sql, array $params = null)
public function ExecuteDbStatement(string $sql, ?array $params = null)
{
$pdo = $this->GetDbConnectionRaw();
@ -87,17 +87,17 @@ class DatabaseService
{
if (self::$DbConnectionRaw == null)
{
$pdo = new \PDO('sqlite:' . $this->GetDbFilePath());
$pdo = new \PDO\Sqlite('sqlite:' . $this->GetDbFilePath());
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(\PDO::ATTR_ORACLE_NULLS, \PDO::NULL_EMPTY_STRING);
$pdo->sqliteCreateFunction('regexp', function ($pattern, $value)
$pdo->createFunction('regexp', function ($pattern, $value)
{
mb_regex_encoding('UTF-8');
return (false !== mb_ereg($pattern, $value)) ? 1 : 0;
});
$pdo->sqliteCreateFunction('grocy_user_setting', function ($value)
$pdo->createFunction('grocy_user_setting', function ($value)
{
$usersService = new UsersService();
return $usersService->GetUserSetting(GROCY_USER_ID, $value);
@ -106,7 +106,7 @@ class DatabaseService
// Unfortunately not included by default
// https://www.sqlite.org/lang_mathfunc.html#ceil
$pdo->sqliteCreateFunction('ceil', function ($value)
$pdo->createFunction('ceil', function ($value)
{
return ceil($value);
});

View File

@ -73,6 +73,9 @@ class LocalizationService
public function __n($number, $singularForm, $pluralForm, $isQu = false)
{
// TODO: Upgrade to gettext/gettext >= v5.7
ErrorReportingDisableDeprecationWarnings();
$this->CheckAndAddMissingTranslationToPot($singularForm);
if (empty($pluralForm))
@ -88,10 +91,18 @@ class LocalizationService
{
return sprintf($this->Translator->ngettext($singularForm, $pluralForm, abs(floatval($number))), $number);
}
// TODO: Upgrade to gettext/gettext >= v5.7
ErrorReportingReset();
}
public function __t($text, ...$placeholderValues)
{
// TODO: Upgrade to gettext/gettext >= v5.7
ErrorReportingDisableDeprecationWarnings();
$this->CheckAndAddMissingTranslationToPot($text);
if (func_num_args() === 1)
@ -109,6 +120,10 @@ class LocalizationService
return sprintf($this->Translator->gettext($text), array_shift($placeholderValues));
}
}
// TODO: Upgrade to gettext/gettext >= v5.7
ErrorReportingReset();
}
public static function getInstance(string $culture)

View File

@ -7,9 +7,9 @@
resolved "https://github.com/berrnd/bootstrap-combobox.git#fcf0110146f4daab94888234c57d198b4ca5f129"
"@fontsource/roboto@^5.1.1":
version "5.2.5"
resolved "https://registry.yarnpkg.com/@fontsource/roboto/-/roboto-5.2.5.tgz#b2d869075277e2cba31694951a2d355a8965d763"
integrity sha512-70r2UZ0raqLn5W+sPeKhqlf8wGvUXFWlofaDlcbt/S3d06+17gXKr3VNqDODB0I1ASme3dGT5OJj9NABt7OTZQ==
version "5.2.10"
resolved "https://registry.yarnpkg.com/@fontsource/roboto/-/roboto-5.2.10.tgz#b985d34de475913b41d0fb57e2dcd0b16ab9ecb5"
integrity sha512-8HlA5FtSfz//oFSr2eL7GFXAiE7eIkcGOtx7tjsLKq+as702x9+GU7K95iDeWFapHC4M2hv9RrpXKRTGGBI8Zg==
"@fortawesome/fontawesome-free@^6.1.1":
version "6.7.2"
@ -22,16 +22,16 @@
integrity sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==
"@types/jquery@^3.5.16":
version "3.5.32"
resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.32.tgz#3eb0da20611b92c7c49ebed6163b52a4fdc57def"
integrity sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==
version "3.5.34"
resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.34.tgz#c1993eaac0db03cf9db974976dd8f07bbf7c5708"
integrity sha512-3m3939S3erqmTLJANS/uy0B6V7BorKx7RorcGZVjZ62dF5PAGbKEDZK1CuLtKombJkFA2T1jl8LAIIs7IV6gBQ==
dependencies:
"@types/sizzle" "*"
"@types/sizzle@*":
version "2.3.9"
resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.9.tgz#d4597dbd4618264c414d7429363e3f50acb66ea2"
integrity sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==
version "2.3.10"
resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.10.tgz#277a542aff6776d8a9b15f2ac682a663e3e94bbd"
integrity sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==
"@zxing/library@^0.21.3":
version "0.21.3"
@ -68,9 +68,9 @@ bootstrap@^4.5.2, bootstrap@^4.6.1:
integrity sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==
bwip-js@^4.5.1:
version "4.6.0"
resolved "https://registry.yarnpkg.com/bwip-js/-/bwip-js-4.6.0.tgz#9d6ed7480bd0d44b219f468ac05e1d05cb8fe7a2"
integrity sha512-Djr1aQ3d1N8rpLz5XgbpNW/yrP4owC+rk5/pZTSzkqXY0WvqzJ0yJTxA8JJA6WDxOAP1hP70AcnTxiDvthy+/g==
version "4.8.0"
resolved "https://registry.yarnpkg.com/bwip-js/-/bwip-js-4.8.0.tgz#115b43035f9adc217f1eff436f5390d8a7ec8751"
integrity sha512-gUDkDHSTv8/DJhomSIbO0fX/Dx0MO/sgllLxJyJfu4WixCQe9nfGJzmHm64ZCbxo+gUYQEsQcRmqcwcwPRwUkg==
chart.js@^2.8.0:
version "2.9.4"
@ -141,11 +141,11 @@ datatables.net-bs4@^1.10.22, datatables.net-bs4@^1.13.0:
jquery "1.8 - 4"
datatables.net-bs4@^2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/datatables.net-bs4/-/datatables.net-bs4-2.3.2.tgz#6c840881fce496e971c9e44f98e114438a9dc00f"
integrity sha512-I2a2AeRO+iiMLUI/yCYo8UevscpYxray7AJGUnMep4HmqrQ+NQgseYr38N/kNdY7vxU5XKqq1c+uSGAPkk9Q9A==
version "2.3.7"
resolved "https://registry.yarnpkg.com/datatables.net-bs4/-/datatables.net-bs4-2.3.7.tgz#c361ff8f439bf63e1ec4862085ec667fb96bfd7f"
integrity sha512-ZyofK/3Unj0lQdAIsI9gT5oGCwTnx8y2UF6muYkbdO/Rw9h+x2kQwFkuCX5J0j6N2B+YCwzHk2OPu9yU8nk1Kw==
dependencies:
datatables.net "2.3.2"
datatables.net "2.3.7"
jquery ">=1.7"
datatables.net-colreorder-bs4@^1.5.2:
@ -174,18 +174,26 @@ datatables.net-plugins@^1.10.20:
datatables.net "^1.13.2"
datatables.net-rowgroup-bs4@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/datatables.net-rowgroup-bs4/-/datatables.net-rowgroup-bs4-1.5.1.tgz#e3387dbc56a484d9875eacee2656a1efc8a25110"
integrity sha512-1TMpTrQR8nXXZp5JBwemNAVEMWznE5/k2jJ1dVsXGyngtiZ2aVy0ls5vqQHaOPJuG0O0aIP7l+rU0+T4umHdow==
version "1.6.0"
resolved "https://registry.yarnpkg.com/datatables.net-rowgroup-bs4/-/datatables.net-rowgroup-bs4-1.6.0.tgz#452cd6ebb576c76d0341cf4fece21cdbd194a617"
integrity sha512-FhcQss6HmTLCxPz7pykPD5qyurieqZEekY800i1O7jwkn7uxb0RKijrtBTZZzGFKdgO7aBce7hhhIkhZjIsJnQ==
dependencies:
datatables.net-bs4 "^2"
datatables.net-rowgroup "1.5.1"
datatables.net-rowgroup "1.6.0"
jquery ">=1.7"
datatables.net-rowgroup@1.5.1, datatables.net-rowgroup@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/datatables.net-rowgroup/-/datatables.net-rowgroup-1.5.1.tgz#26c8ba39ea749356d0f592d72da8d5dab2772f50"
integrity sha512-yDn+UCG9vrztt4obqt0YogyjH/i1D5Fyxnt4r5++T/ZaYhjKLU8zG9hkQXMx81M7RgeOtkv0eEpo/c+72w8T0w==
datatables.net-rowgroup@1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/datatables.net-rowgroup/-/datatables.net-rowgroup-1.6.0.tgz#a487cf598c15314f1a23452d9ef18ff22a16b356"
integrity sha512-3G6zDo39kh1JWSVVu9pUd0ukyNfxWAOuciV+NbOnhI+CbUxBuRCkMFn8p2nUgODdVuFGyK+2ClY6QByiCalwiQ==
dependencies:
datatables.net "^2"
jquery ">=1.7"
datatables.net-rowgroup@<1.6.0:
version "1.5.2"
resolved "https://registry.yarnpkg.com/datatables.net-rowgroup/-/datatables.net-rowgroup-1.5.2.tgz#bd248f2a6e5cabcc228f11cbb0fc746225c33056"
integrity sha512-hmjpCRCUqFm45x7mLzZbKCILNSyWsegA7wiJ2fY6rHzUmMNEUiThnXstOfgfxqHOUVATn/mGDBpvUl+1UDNaFg==
dependencies:
datatables.net "^2"
jquery ">=1.7"
@ -214,10 +222,10 @@ datatables.net@1.13.11, datatables.net@^1.10.22, datatables.net@^1.13.0, datatab
dependencies:
jquery "1.8 - 4"
datatables.net@2.3.2, datatables.net@^2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.2.tgz#6821f6288e6ad3cb6879c33e0e7e11d4091d330b"
integrity sha512-31TzwIQM0+pr2ZOEOEH6dsHd/WSAl5GDDGPezOHPI3mM2NK4lcDyOoG8xXeWmSbVfbi852LNK5C84fpp4Q+qxg==
datatables.net@2.3.7, datatables.net@^2:
version "2.3.7"
resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.3.7.tgz#3cd34f6f5d1f40a46b5a20a4ba32604bdbcd6738"
integrity sha512-AvsjG/Nkp6OxeyBKYZauemuzQCPogE1kOtKwG4sYjvdqGCSLiGaJagQwXv4YxG+ts5vaJr6qKGG9ec3g6vTo3w==
dependencies:
jquery ">=1.7"
@ -244,7 +252,12 @@ jquery-serializejson@^2.9.0:
resolved "https://registry.yarnpkg.com/jquery-serializejson/-/jquery-serializejson-2.9.0.tgz#03e3764e3a4b42c1c5aae9f93d7f19320c5f35a6"
integrity sha512-xR7rjl0tRKIVioV5lOkOSv7K8BHMvGzYzC7Ech1iAYuZiYf0ksEpLC8OqjA5VApXf/qn/49O9hTmW70+/EA0vA==
"jquery@1.8 - 4", jquery@>=1.10, jquery@>=1.12.0, jquery@>=1.7, jquery@^3.6.0:
"jquery@1.8 - 4", jquery@>=1.10, jquery@>=1.12.0, jquery@>=1.7:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-4.0.0.tgz#95c33ac29005ff72ec444c5ba1cf457e61404fbb"
integrity sha512-TXCHVR3Lb6TZdtw1l3RTLf8RBWVGexdxL6AC8/e0xZKEpBflBsjh9/8LXw+dkNFuOyW9B7iB3O1sP7hS0Kiacg==
jquery@^3.6.0:
version "3.7.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de"
integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==
@ -282,9 +295,9 @@ summernote@^0.9.1:
integrity sha512-5Hfuey6+N0XIbk8ZpkGEVDmrkRVRHZWKBhw/072i9/TJLaWUKboB+KOyyd6AzDP2CQs1O6or4zRTU8HY30kt4w==
swagger-ui-dist@^5.2.0:
version "5.24.0"
resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.24.0.tgz#5c68287dac5c249a704fa27926677e6a2d1ce2a2"
integrity sha512-okwN8vf14TOgBTUyGgCXEAoHnrwwp/042dC00B3kPu2OAe9zD75BtSbLlgAK1Y5e3csJhs+AdnIxJYZN9uvptg==
version "5.32.0"
resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.32.0.tgz#e52db2bfc2402305cbb263626f03e5b2bed0d871"
integrity sha512-nKZB0OuDvacB0s/lC2gbge+RigYvGRGpLLMWMFxaTUwfM+CfndVk9Th2IaTinqXiz6Mn26GK2zriCpv6/+5m3Q==
dependencies:
"@scarf/scarf" "=1.4.0"