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

View File

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

View File

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

View File

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

View File

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