Merge branch 'correct-duration-handling' into 'master'

Correctly handle durations without units like "PT"

Closes #136

See merge request davical-project/davical!41
This commit is contained in:
Andrew McMillan 2018-01-10 21:35:44 +00:00
commit ce19c87208
2 changed files with 4 additions and 1 deletions

View File

@ -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 );
}

View File

@ -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 );
}