allow PHP 8.3 (#4471)
Fix use of range() and auto-width columns for Excel exports
This commit is contained in:
4
.github/workflows/testing.yaml
vendored
4
.github/workflows/testing.yaml
vendored
@@ -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 }}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
88
composer.lock
generated
@@ -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": "*",
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user