* Calendar - Add checkbox to turn on or off emptying calendar before iCal import

This commit is contained in:
nathangray 2018-10-22 09:25:28 -06:00
parent b39bcc8c36
commit 24b869d61a
3 changed files with 21 additions and 14 deletions

View File

@ -144,18 +144,21 @@ class calendar_import_ical implements importexport_iface_import_plugin {
$owner = $plugin_options['cal_owner']; $owner = $plugin_options['cal_owner'];
// Purge // Purge
$remove_past = new Api\DateTime(); if($plugin_options['empty_before_import'])
$remove_future = new Api\DateTime();
$plugin_options = array_merge(array('remove_past' => 100, 'remove_future' => 365), $plugin_options);
foreach(array('remove_past','remove_future') as $date)
{ {
${$date}->add( (($date == 'remove_past' ? -1 : 1) * (int)$plugin_options[$date]) . ' days'); $remove_past = new Api\DateTime();
$remove_future = new Api\DateTime();
$plugin_options = array_merge(array('remove_past' => 100, 'remove_future' => 365), $plugin_options);
foreach(array('remove_past','remove_future') as $date)
{
${$date}->add( (($date == 'remove_past' ? -1 : 1) * (int)$plugin_options[$date]) . ' days');
}
$this->purge_calendar(
$owner,
array('from' => $remove_past, 'to' => $remove_future),
$plugin_options['no_notification']
);
} }
$this->purge_calendar(
$owner,
array('from' => $remove_past, 'to' => $remove_future),
$plugin_options['no_notification']
);
// User wants conflicting events to not be imported // User wants conflicting events to not be imported
if($_definition->plugin_options['skip_conflicts']) if($_definition->plugin_options['skip_conflicts'])

View File

@ -70,7 +70,7 @@ class calendar_wizard_import_ical
{ {
$content['text'] = $this->steps['wizard_step55']; $content['text'] = $this->steps['wizard_step55'];
$content['step'] = 'wizard_step55'; $content['step'] = 'wizard_step55';
foreach(array('skip_conflicts','remove_past','remove_future') as $field) foreach(array('skip_conflicts','empty_before_import','remove_past','remove_future') as $field)
{ {
if(!$content[$field] && array_key_exists($field, $content['plugin_options'])) if(!$content[$field] && array_key_exists($field, $content['plugin_options']))
{ {

View File

@ -9,9 +9,13 @@
<description value="Do not import conflicting events"/> <description value="Do not import conflicting events"/>
<checkbox id="skip_conflicts"/> <checkbox id="skip_conflicts"/>
</hbox> </hbox>
<description id="delete_title" value="Empty target calendar before importing" font_style="b" class="et2_bold"/> <description/>
<integer label="How many days to be removed in the past (default 100)" id="remove_past"/> <hbox>
<integer label="How many days to be removed in the future (default 365)" id="remove_future"/> <description id="delete_title" value="Empty target calendar before importing" font_style="b" class="et2_bold"/>
<checkbox id="empty_before_import" onchange="var enabled = widget.getValue() == 'true'; var past = widget.getRoot().getWidgetById('remove_past'); var future = widget.getRoot().getWidgetById('remove_future');past.set_disabled(!enabled);future.set_disabled(!enabled);return true;"/>
</hbox>
<integer label="How many days to be removed in the past (default 100)" id="remove_past" disabled="!@empty_before_import"/>
<integer label="How many days to be removed in the future (default 365)" id="remove_future" disabled="!@empty_before_import"/>
</vbox> </vbox>
<styles> <styles>
#importexport-wizardbox_delete_title { #importexport-wizardbox_delete_title {