Validate alarm date-time or duration before adding it to the DB.

Signed-off-by: Andrew McMillan <andrew@morphoss.com>
This commit is contained in:
Andrew McMillan 2011-01-12 10:03:36 +13:00
parent 02182cf087
commit c7ae6826d8

View File

@ -669,12 +669,16 @@ function write_alarms( $dav_id, $ical ) {
default: $related = $ical->GetPValue('DTSTART');
}
$duration = $trigger->Value();
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 ( $minus ) {
$related_trigger = preg_replace( '{(\d+[WDHMS])}', '-$1 ', $related_trigger );
}
}
else {
if ( false === strtotime($trigger->Value()) ) continue; // Invalid date.
}
$qry->Bind(':action', $v->GetPValue('ACTION'));
$qry->Bind(':trigger', $trigger->Render());
$qry->Bind(':summary', $v->GetPValue('SUMMARY'));