Add support for valarm ACTION:AUDIO
This commit is contained in:
parent
291a6878cf
commit
b86a301d61
3 changed files with 24 additions and 2 deletions
|
@ -615,6 +615,14 @@ class libvcalendar implements Iterator
|
|||
case 'ATTENDEE':
|
||||
$alarm['attendees'][] = preg_replace('/^mailto:/i', '', $prop->value);
|
||||
break;
|
||||
|
||||
case 'ATTACH':
|
||||
$params = self::parameters_array($prop);
|
||||
if (strlen($prop->value) && (preg_match('/^[a-z]+:/', $prop->value) || strtoupper($params['VALUE']) == 'URI')) {
|
||||
// we only support URI-type of attachments here
|
||||
$alarm['uri'] = $prop->value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1006,6 +1014,9 @@ class libvcalendar implements Iterator
|
|||
$va->add('DURATION', $alarm['duration']);
|
||||
$va->add('REPEAT', intval($alarm['repeat']));
|
||||
}
|
||||
if ($alarm['uri']) {
|
||||
$va->add('ATTACH', $alarm['uri'], array('VALUE' => 'URI'));
|
||||
}
|
||||
$ve->add($va);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -246,8 +246,9 @@ class libvcalendar_test extends PHPUnit_Framework_TestCase
|
|||
$this->assertEquals('-M', $alarm[1], "Alarm unit");
|
||||
|
||||
$this->assertEquals(1, count($event['valarms']), "Ignore invalid alarm blocks");
|
||||
$this->assertEquals('AUDIO', $event['valarms'][0]['action'], "Full alarm item (action)");
|
||||
$this->assertEquals('AUDIO', $event['valarms'][0]['action'], "Full alarm item (action)");
|
||||
$this->assertEquals('-PT45M', $event['valarms'][0]['trigger'], "Full alarm item (trigger)");
|
||||
$this->assertEquals('Basso', $event['valarms'][0]['uri'], "Full alarm item (attachment)");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -222,7 +222,7 @@ abstract class kolab_format_xcal extends kolab_format
|
|||
$alarm = $valarms->get($i);
|
||||
$type = $alarm_types[$alarm->type()];
|
||||
|
||||
if ($type == 'DISPLAY' || $type == 'EMAIL') { // only DISPLAY and EMAIL alarms are supported
|
||||
if ($type == 'DISPLAY' || $type == 'EMAIL' || $type == 'AUDIO') { // only some alarms are supported
|
||||
$valarm = array(
|
||||
'action' => $type,
|
||||
'summary' => $alarm->summary(),
|
||||
|
@ -237,6 +237,10 @@ abstract class kolab_format_xcal extends kolab_format
|
|||
$valarm['attendees'][] = $cr->email();
|
||||
}
|
||||
}
|
||||
else if ($type == 'AUDIO') {
|
||||
$attach = $alarm->audioFile();
|
||||
$valarm['uri'] = $attach->uri();
|
||||
}
|
||||
|
||||
if ($start = self::php_datetime($alarm->start())) {
|
||||
$object['alarms'] = '@' . $start->format('U');
|
||||
|
@ -451,7 +455,13 @@ abstract class kolab_format_xcal extends kolab_format
|
|||
$recipients
|
||||
);
|
||||
}
|
||||
else if ($valarm['action'] == 'AUDIO') {
|
||||
$attach = new Attachment;
|
||||
$attach->setUri($valarm['uri'] ?: 'null', 'unknown');
|
||||
$alarm = new Alarm($attach);
|
||||
}
|
||||
else {
|
||||
// action == DISPLAY
|
||||
$alarm = new Alarm(strval($valarm['summary'] ?: $object['title']));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue