allow PHP 8.3 (#4471)

Fix use of range() and auto-width columns for Excel exports
This commit is contained in:
Kevin Papst
2023-12-01 22:40:02 +01:00
committed by GitHub
parent 8fd2e7029e
commit e0769bc3dc
6 changed files with 54 additions and 54 deletions

View File

@@ -19,7 +19,7 @@ jobs:
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
strategy:
matrix:
php: ['8.1', '8.2']
php: ['8.1', '8.2', '8.3']
name: Integration (${{ matrix.php }})
steps:
@@ -92,7 +92,7 @@ jobs:
TEST_WITH_BUNDLES: 1
- name: Upload code coverage
if: matrix.php == '8.1'
if: matrix.php == '8.2'
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}

View File

@@ -38,11 +38,13 @@ Do **NOT** use Version 1, it won't get any more updates!
### Requirements
- PHP 8.1 minimum
- PHP 8.1.3 minimum
- MariaDB or MySQL
- A webserver and subdomain (subdirectory is not supported)
- PHP extensions: `gd`, `intl`, `json`, `mbstring`, `pdo`, `tokenizer`, `xml`, `xsl`, `zip`
Support for PHP 8.2 and 8.3.
## Installation
- [Recommended setup](https://www.kimai.org/documentation/installation.html#recommended-setup) — with Git and Composer

View File

@@ -14,7 +14,7 @@
}
],
"require": {
"php": "8.1.*||8.2.*",
"php": "8.1.*||8.2.*||8.3.*",
"ext-gd": "*",
"ext-intl": "*",
"ext-json": "*",

88
composer.lock generated
View File

@@ -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": "0a45772bb5617dc0e021b6b24120468e",
"content-hash": "3573d958deb04f566945c3dbd7414fa3",
"packages": [
{
"name": "azuyalabs/yasumi",
@@ -5488,16 +5488,16 @@
},
{
"name": "symfony/dependency-injection",
"version": "v6.3.8",
"version": "v6.3.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
"reference": "1f30f545c4151f611148fc19e28d54d39e0a00bc"
"reference": "51383a1d9d7e93d5c3c76ddc32672de1b3e82c77"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/1f30f545c4151f611148fc19e28d54d39e0a00bc",
"reference": "1f30f545c4151f611148fc19e28d54d39e0a00bc",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/51383a1d9d7e93d5c3c76ddc32672de1b3e82c77",
"reference": "51383a1d9d7e93d5c3c76ddc32672de1b3e82c77",
"shasum": ""
},
"require": {
@@ -5549,7 +5549,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/dependency-injection/tree/v6.3.8"
"source": "https://github.com/symfony/dependency-injection/tree/v6.3.10"
},
"funding": [
{
@@ -5565,7 +5565,7 @@
"type": "tidelift"
}
],
"time": "2023-10-31T08:07:48+00:00"
"time": "2023-12-01T14:25:58+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -6306,16 +6306,16 @@
},
{
"name": "symfony/form",
"version": "v6.3.8",
"version": "v6.3.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/form.git",
"reference": "b7a8098163cce87c0b6ce05d0f361dc12d5a2788"
"reference": "5afc7334b9d60dd0799612faf3d103b25bc60ae4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/form/zipball/b7a8098163cce87c0b6ce05d0f361dc12d5a2788",
"reference": "b7a8098163cce87c0b6ce05d0f361dc12d5a2788",
"url": "https://api.github.com/repos/symfony/form/zipball/5afc7334b9d60dd0799612faf3d103b25bc60ae4",
"reference": "5afc7334b9d60dd0799612faf3d103b25bc60ae4",
"shasum": ""
},
"require": {
@@ -6383,7 +6383,7 @@
"description": "Allows to easily create, process and reuse HTML forms",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/form/tree/v6.3.8"
"source": "https://github.com/symfony/form/tree/v6.3.10"
},
"funding": [
{
@@ -6399,7 +6399,7 @@
"type": "tidelift"
}
],
"time": "2023-11-06T10:58:05+00:00"
"time": "2023-11-30T11:08:22+00:00"
},
{
"name": "symfony/framework-bundle",
@@ -6794,16 +6794,16 @@
},
{
"name": "symfony/http-kernel",
"version": "v6.3.9",
"version": "v6.3.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "d63fe6b1e3ad2f037f6f000a6fc867fa8934f35c"
"reference": "8d8e7aa60593fd0a2e3c1cea08cc687314841b61"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/d63fe6b1e3ad2f037f6f000a6fc867fa8934f35c",
"reference": "d63fe6b1e3ad2f037f6f000a6fc867fa8934f35c",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/8d8e7aa60593fd0a2e3c1cea08cc687314841b61",
"reference": "8d8e7aa60593fd0a2e3c1cea08cc687314841b61",
"shasum": ""
},
"require": {
@@ -6887,7 +6887,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-kernel/tree/v6.3.9"
"source": "https://github.com/symfony/http-kernel/tree/v6.3.10"
},
"funding": [
{
@@ -6903,7 +6903,7 @@
"type": "tidelift"
}
],
"time": "2023-11-29T10:24:27+00:00"
"time": "2023-12-01T16:57:27+00:00"
},
{
"name": "symfony/intl",
@@ -8100,16 +8100,16 @@
},
{
"name": "symfony/routing",
"version": "v6.3.5",
"version": "v6.3.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "82616e59acd3e3d9c916bba798326cb7796d7d31"
"reference": "cb7404232d49dd11cc971b832fcbd49e7c22b049"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/82616e59acd3e3d9c916bba798326cb7796d7d31",
"reference": "82616e59acd3e3d9c916bba798326cb7796d7d31",
"url": "https://api.github.com/repos/symfony/routing/zipball/cb7404232d49dd11cc971b832fcbd49e7c22b049",
"reference": "cb7404232d49dd11cc971b832fcbd49e7c22b049",
"shasum": ""
},
"require": {
@@ -8163,7 +8163,7 @@
"url"
],
"support": {
"source": "https://github.com/symfony/routing/tree/v6.3.5"
"source": "https://github.com/symfony/routing/tree/v6.3.10"
},
"funding": [
{
@@ -8179,7 +8179,7 @@
"type": "tidelift"
}
],
"time": "2023-09-20T16:05:51+00:00"
"time": "2023-12-01T14:25:58+00:00"
},
{
"name": "symfony/runtime",
@@ -8614,16 +8614,16 @@
},
{
"name": "symfony/serializer",
"version": "v6.3.9",
"version": "v6.3.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/serializer.git",
"reference": "87faafcc88ace143b30fdc34b240d9a3603bc95e"
"reference": "6eee0fd95f5caa1e77cab29552620ebf8e5b1a5f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/serializer/zipball/87faafcc88ace143b30fdc34b240d9a3603bc95e",
"reference": "87faafcc88ace143b30fdc34b240d9a3603bc95e",
"url": "https://api.github.com/repos/symfony/serializer/zipball/6eee0fd95f5caa1e77cab29552620ebf8e5b1a5f",
"reference": "6eee0fd95f5caa1e77cab29552620ebf8e5b1a5f",
"shasum": ""
},
"require": {
@@ -8688,7 +8688,7 @@
"description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/serializer/tree/v6.3.9"
"source": "https://github.com/symfony/serializer/tree/v6.3.10"
},
"funding": [
{
@@ -8704,7 +8704,7 @@
"type": "tidelift"
}
],
"time": "2023-11-29T10:00:30+00:00"
"time": "2023-12-01T14:25:58+00:00"
},
{
"name": "symfony/service-contracts",
@@ -9484,16 +9484,16 @@
},
{
"name": "symfony/var-exporter",
"version": "v6.3.9",
"version": "v6.3.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
"reference": "a00fd2d47af5c95e95e8e371a74be2e79b95dfae"
"reference": "7bfcf232a9c7e4acad00e96774e340eb86d10bf0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/a00fd2d47af5c95e95e8e371a74be2e79b95dfae",
"reference": "a00fd2d47af5c95e95e8e371a74be2e79b95dfae",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/7bfcf232a9c7e4acad00e96774e340eb86d10bf0",
"reference": "7bfcf232a9c7e4acad00e96774e340eb86d10bf0",
"shasum": ""
},
"require": {
@@ -9538,7 +9538,7 @@
"serialize"
],
"support": {
"source": "https://github.com/symfony/var-exporter/tree/v6.3.9"
"source": "https://github.com/symfony/var-exporter/tree/v6.3.10"
},
"funding": [
{
@@ -9554,7 +9554,7 @@
"type": "tidelift"
}
],
"time": "2023-11-28T20:34:48+00:00"
"time": "2023-11-29T16:00:50+00:00"
},
{
"name": "symfony/webpack-encore-bundle",
@@ -13068,16 +13068,16 @@
},
{
"name": "symfony/phpunit-bridge",
"version": "v6.4.0",
"version": "v6.4.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
"reference": "36bc5bc71fff1f6ca9c7c7fe1e7e23f4c1ca2aa3"
"reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/36bc5bc71fff1f6ca9c7c7fe1e7e23f4c1ca2aa3",
"reference": "36bc5bc71fff1f6ca9c7c7fe1e7e23f4c1ca2aa3",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/cca5373a41d45edbeaf38b7b67f376da2205ff95",
"reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95",
"shasum": ""
},
"require": {
@@ -13129,7 +13129,7 @@
"description": "Provides utilities for PHPUnit, especially user deprecation notices management",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.0"
"source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.1"
},
"funding": [
{
@@ -13145,7 +13145,7 @@
"type": "tidelift"
}
],
"time": "2023-10-31T08:18:17+00:00"
"time": "2023-12-01T09:25:07+00:00"
},
{
"name": "symfony/process",
@@ -13346,7 +13346,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": "8.1.*||8.2.*",
"php": "8.1.*||8.2.*||8.3.*",
"ext-gd": "*",
"ext-intl": "*",
"ext-json": "*",

View File

@@ -66,12 +66,11 @@ class XlsxRenderer extends AbstractSpreadsheetRenderer
// Freeze first row and date & time columns for easier navigation
$sheet->freezePane('D2');
/** @var string $column */
foreach (range('A', $highestColumn) as $column) {
foreach ($sheet->getColumnIterator() as $columnName => $column) {
// We default to a reasonable auto-width decided by the client,
// sadly ->getDefaultColumnDimension() is not supported so it needs
// to be specific about what column should be auto sized.
$col = $sheet->getColumnDimension($column);
$col = $sheet->getColumnDimension($columnName);
// If no other width is specified (which defaults to -1)
if ((int) $col->getWidth() === -1) {

View File

@@ -59,12 +59,11 @@ final class XlsxWriter implements WriterInterface
$sheet->freezePane($options['freeze']);
}
/** @var string $column */
foreach (range('A', $highestColumn) as $column) {
foreach ($sheet->getColumnIterator() as $columnName => $column) {
// We default to a reasonable auto-width decided by the client,
// sadly ->getDefaultColumnDimension() is not supported so it needs
// to be specific about what column should be auto sized.
$col = $sheet->getColumnDimension($column);
$col = $sheet->getColumnDimension($columnName);
// If no other width is specified (which defaults to -1)
if ((int) $col->getWidth() === -1) {