Skip to content

Commit 3fb2a09

Browse files
committed
fixed data manipulation
1 parent a007dd5 commit 3fb2a09

File tree

2 files changed

+24
-44
lines changed

2 files changed

+24
-44
lines changed

phpstan-baseline.neon

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6702,36 +6702,12 @@ parameters:
67026702
count: 1
67036703
path: src/lib/Form/DataTransformer/DateIntervalToArrayTransformer.php
67046704

6705-
-
6706-
message: '#^Call to function array_key_exists\(\) with ''date_interval'' and non\-empty\-array will always evaluate to true\.$#'
6707-
identifier: function.alreadyNarrowedType
6708-
count: 1
6709-
path: src/lib/Form/DataTransformer/DateIntervalTransformer.php
6710-
6711-
-
6712-
message: '#^Call to function is_array\(\) with array will always evaluate to true\.$#'
6713-
identifier: function.alreadyNarrowedType
6714-
count: 1
6715-
path: src/lib/Form/DataTransformer/DateIntervalTransformer.php
6716-
67176705
-
67186706
message: '#^Class Ibexa\\AdminUi\\Form\\DataTransformer\\DateIntervalTransformer implements generic interface Symfony\\Component\\Form\\DataTransformerInterface but does not specify its types\: T, R$#'
67196707
identifier: missingType.generics
67206708
count: 1
67216709
path: src/lib/Form/DataTransformer/DateIntervalTransformer.php
67226710

6723-
-
6724-
message: '#^Method Ibexa\\AdminUi\\Form\\DataTransformer\\DateIntervalTransformer\:\:reverseTransform\(\) has parameter \$value with no value type specified in iterable type array\.$#'
6725-
identifier: missingType.iterableValue
6726-
count: 1
6727-
path: src/lib/Form/DataTransformer/DateIntervalTransformer.php
6728-
6729-
-
6730-
message: '#^Method Ibexa\\AdminUi\\Form\\DataTransformer\\DateIntervalTransformer\:\:reverseTransform\(\) return type has no value type specified in iterable type array\.$#'
6731-
identifier: missingType.iterableValue
6732-
count: 1
6733-
path: src/lib/Form/DataTransformer/DateIntervalTransformer.php
6734-
67356711
-
67366712
message: '#^Method Ibexa\\AdminUi\\Form\\DataTransformer\\DateIntervalTransformer\:\:transform\(\) has Symfony\\Component\\Form\\Exception\\TransformationFailedException in PHPDoc @throws tag but it''s not thrown\.$#'
67376713
identifier: throws.unusedType

src/lib/Form/DataTransformer/DateIntervalTransformer.php

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
namespace Ibexa\AdminUi\Form\DataTransformer;
1010

11+
use DateInterval;
12+
use DateTime;
1113
use Symfony\Component\Form\DataTransformerInterface;
1214
use Symfony\Component\Form\Exception\TransformationFailedException;
1315

@@ -29,40 +31,42 @@ public function transform($value)
2931
}
3032

3133
/**
32-
* @param array|null $value
33-
*
34-
* @return array|null
34+
* @param array<mixed>|null $value
3535
*
36-
* @throws \Exception
37-
* @throws \Symfony\Component\Form\Exception\TransformationFailedException
38-
* @throws \Ibexa\Contracts\Core\Repository\Exceptions\UnauthorizedException
39-
* @throws \Ibexa\Contracts\Core\Repository\Exceptions\NotFoundException
36+
* @return array<string, int>
4037
*/
41-
public function reverseTransform($value)
38+
public function reverseTransform($value): array
4239
{
43-
if (null === $value || !is_array($value) || empty($value['date_interval'])) {
40+
if (!is_array($value)) {
4441
return [];
4542
}
4643

47-
if (!array_key_exists('date_interval', $value) || !array_key_exists('end_date', $value)) {
44+
if (
45+
!array_key_exists('date_interval', $value)
46+
|| !array_key_exists('start_date', $value)
47+
|| !array_key_exists('end_date', $value)
48+
) {
4849
throw new TransformationFailedException(
49-
"Invalid data. Value array is missing 'date_interval' and/or 'end_date' keys"
50+
"Invalid data. On of the array keys is missing 'date_interval', 'start_date' or 'end_date'"
5051
);
5152
}
5253

53-
$date = new \DateTime();
54+
$date = new DateTime();
5455

55-
if ($value['end_date']) {
56-
$date->setTimestamp($value['end_date']);
57-
}
56+
$startDateTimestamp = $value['start_date'] ?? null;
57+
$endDateTimestamp = $value['end_date'] ?? null;
58+
59+
$dateInterval = $value['date_interval'];
60+
if (!empty($dateInterval)) {
61+
$interval = new DateInterval($dateInterval);
5862

59-
$endDate = $date->getTimestamp();
60-
$interval = new \DateInterval($value['date_interval']);
61-
$date->sub($interval);
63+
$date->setTimestamp($endDateTimestamp ?? $date->getTimestamp());
64+
$date->sub($interval);
6265

63-
$startDate = $value['start_date'] ?? $date->getTimestamp();
66+
$startDateTimestamp = $date->getTimestamp();
67+
}
6468

65-
return ['start_date' => $startDate, 'end_date' => $endDate];
69+
return ['start_date' => $startDateTimestamp, 'end_date' => $endDateTimestamp];
6670
}
6771
}
6872

0 commit comments

Comments
 (0)