Skip to content

Commit a669c62

Browse files
committed
fixed data manipulation
1 parent a007dd5 commit a669c62

File tree

2 files changed

+31
-44
lines changed

2 files changed

+31
-44
lines changed

phpstan-baseline.neon

Lines changed: 6 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
@@ -6750,6 +6726,12 @@ parameters:
67506726
count: 1
67516727
path: src/lib/Form/DataTransformer/DateIntervalTransformer.php
67526728

6729+
-
6730+
message: '#^Variable \$endDateTimestamp on left side of \?\? always exists and is not nullable\.$#'
6731+
identifier: nullCoalesce.variable
6732+
count: 1
6733+
path: src/lib/Form/DataTransformer/DateIntervalTransformer.php
6734+
67536735
-
67546736
message: '#^Class Ibexa\\AdminUi\\Form\\DataTransformer\\DateTimePickerTransformer implements generic interface Symfony\\Component\\Form\\DataTransformerInterface but does not specify its types\: T, R$#'
67556737
identifier: missingType.generics

src/lib/Form/DataTransformer/DateIntervalTransformer.php

Lines changed: 25 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,43 @@ 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+
$startDateTimestamp = $value['start_date'] ?? null;
55+
$endDateTimestamp = $value['end_date'] ?? null;
5456

55-
if ($value['end_date']) {
56-
$date->setTimestamp($value['end_date']);
57-
}
57+
$dateInterval = $value['date_interval'];
58+
if (!empty($dateInterval)) {
59+
$interval = new DateInterval($dateInterval);
60+
61+
$date = new DateTime();
62+
$endDateTimestamp = $date->getTimestamp();
5863

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

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

65-
return ['start_date' => $startDate, 'end_date' => $endDate];
70+
return ['start_date' => $startDateTimestamp, 'end_date' => $endDateTimestamp];
6671
}
6772
}
6873

0 commit comments

Comments
 (0)