mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-01-27 00:33:34 +00:00
Correctly handle durations without units like "PT"
While this has always been handled in basic event parsing the handling in VALARM components for related triggers was missing.
This commit is contained in:
parent
bc9c39c455
commit
58cf5b01ad
@ -139,7 +139,8 @@ class WritableCollection extends DAVResource {
|
||||
else {
|
||||
$dtend = 'NULL';
|
||||
if ( $first->GetPValue('DURATION') != '' AND $dtstart != '' ) {
|
||||
$duration = preg_replace( '#[PT]#', ' ', $first->GetPValue('DURATION') );
|
||||
$duration = preg_replace( '#[PT]#', '', $first->GetPValue('DURATION') );
|
||||
if ($duration == '') $duration = '0 seconds';
|
||||
$dtend = '(:dtstart::timestamp with time zone + :duration::interval)';
|
||||
$calitem_params[':duration'] = $duration;
|
||||
}
|
||||
@ -343,6 +344,7 @@ EOSQL;
|
||||
if ( !preg_match('{^-?P(:?\d+W)?(:?\d+D)?(:?T(:?\d+H)?(:?\d+M)?(:?\d+S)?)?$}', $duration ) ) continue;
|
||||
$minus = (substr($duration,0,1) == '-');
|
||||
$related_trigger = trim(preg_replace( '#[PT-]#', ' ', $duration ));
|
||||
if ($related_trigger == '') $related_trigger = '0 seconds';
|
||||
if ( $minus ) {
|
||||
$related_trigger = preg_replace( '{(\d+[WDHMS])}', '-$1 ', $related_trigger );
|
||||
}
|
||||
|
||||
@ -1215,6 +1215,7 @@ function write_alarms( $dav_id, vComponent $ical ) {
|
||||
if ( !preg_match('{^-?P(:?\d+W)?(:?\d+D)?(:?T(:?\d+H)?(:?\d+M)?(:?\d+S)?)?$}', $duration ) ) continue;
|
||||
$minus = (substr($duration,0,1) == '-');
|
||||
$related_trigger = trim(preg_replace( '#[PT-]#', ' ', $duration ));
|
||||
if ($related_trigger == '') $related_trigger = '0 seconds';
|
||||
if ( $minus ) {
|
||||
$related_trigger = preg_replace( '{(\d+[WDHMS])}', '-$1 ', $related_trigger );
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user