Skip to content

Commit b242c30

Browse files
committed
Allow CLICS absolute time format
1 parent 2d24411 commit b242c30

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

webapp/src/Validator/Constraints/TimeStringValidator.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ class TimeStringValidator extends ConstraintValidator
1111
public function validate(mixed $value, Constraint $constraint): void
1212
{
1313
$timezoneRegex = "[A-Za-z][A-Za-z0-9_\/+-]{1,35}"; # See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
14-
$absoluteRegex = "\d\d\d\d-\d\d-\d\d( |T)\d\d:\d\d:\d\d(\.\d{1,6})?( " . $timezoneRegex . "|Z)";
14+
$offsetRegex = "[+-]\d{1,2}(:\d\d)?";
15+
$absoluteRegex = "\d\d\d\d-\d\d-\d\d( |T)\d\d:\d\d:\d\d(\.\d{1,6})?( " . $timezoneRegex . "|" . $offsetRegex . "|Z)";
1516
$relativeRegex = "\d+:\d\d(:\d\d(\.\d{1,6})?)?";
1617
if (!$constraint instanceof TimeString) {
1718
throw new UnexpectedTypeException($constraint, TimeString::class);

webapp/tests/Unit/Controller/Jury/ContestControllerTest.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,46 @@ class ContestControllerTest extends JuryControllerTestCase
4949
'silverMedals' => '1',
5050
'bronzeMedals' => '1',
5151
'medalCategories' => ['0' => '2']],
52+
['shortname' => 'CLICS offset (H:MM)',
53+
'name' => 'No Timezone but only offset',
54+
'activatetimeString' => '2021-07-17 16:08:00+1:11',
55+
'starttimeString' => '2021-07-17 16:09:00+1:11',
56+
'freezetimeString' => '2021-07-17 16:10:00+1:11',
57+
'endtimeString' => '2021-07-17 16:11:00+1:11',
58+
'unfreezetimeString' => '2021-07-17T16:12:00+1:11',
59+
'deactivatetimeString' => '2021-07-17T16:13:00+1:11'],
60+
['shortname' => 'CLICS offset (HH:MM)',
61+
'name' => 'No Timezone but only offset',
62+
'activatetimeString' => '2021-07-17 16:08:00+11:11',
63+
'starttimeString' => '2021-07-17 16:09:00+11:11',
64+
'freezetimeString' => '2021-07-17 16:10:00+11:11',
65+
'endtimeString' => '2021-07-17 16:11:00+11:11',
66+
'unfreezetimeString' => '2021-07-17T16:12:00+11:11',
67+
'deactivatetimeString' => '2021-07-17T16:13:00+11:11'],
68+
['shortname' => 'CLICS offset (0H:00)',
69+
'name' => 'No Timezone but only offset',
70+
'activatetimeString' => '2021-07-17 16:08:00+01:00',
71+
'starttimeString' => '2021-07-17 16:09:00+01:00',
72+
'freezetimeString' => '2021-07-17 16:10:00+01:00',
73+
'endtimeString' => '2021-07-17 16:11:00+01:00',
74+
'unfreezetimeString' => '2021-07-17T16:12:00+01:00',
75+
'deactivatetimeString' => '2021-07-17T16:13:00+01:00'],
76+
['shortname' => 'CLICS offset (H)',
77+
'name' => 'No Timezone but only offset',
78+
'activatetimeString' => '2021-07-17 16:08:00+1',
79+
'starttimeString' => '2021-07-17 16:09:00+1',
80+
'freezetimeString' => '2021-07-17 16:10:00+1',
81+
'endtimeString' => '2021-07-17 16:11:00+1',
82+
'unfreezetimeString' => '2021-07-17T16:12:00+1',
83+
'deactivatetimeString' => '2021-07-17T16:13:00+1'],
84+
['shortname' => 'CLICS offset (-HHH)',
85+
'name' => 'No Timezone but only offset',
86+
'activatetimeString' => '2021-07-17 16:08:00-001',
87+
'starttimeString' => '2021-07-17 16:09:00-001',
88+
'freezetimeString' => '2021-07-17 16:10:00-001',
89+
'endtimeString' => '2021-07-17 16:11:00-001',
90+
'unfreezetimeString' => '2021-07-17T16:12:00-001',
91+
'deactivatetimeString' => '2021-07-17T16:13:00-001'],
5292
['shortname' => 'utc_Z',
5393
'name' => 'UTC (Z)',
5494
'activatetimeString' => '2021-07-17 16:08:00Z',

0 commit comments

Comments
 (0)