| "if ($output_type eq 'html');
+ # mark all known target events
+ my $targetEventsByKey = {};
+ for my $event (@$targetEvents) {
+ #print Dumper($event);
+ next if $event->{status} eq 'canceled';
+ my $key = getGoogleEventToString($event);
+ $targetEventsByKey->{$key} = $event;
+ }
- #read event
- $event=source::get_event_attributes($event);
+ # mark all knwon source events
+ my $sourceEventsByKey = {};
+ for my $event (@$sourceEvents) {
+ $event = CalcmsEvents::mapToSchema($event);
+ $event = GoogleCalendar::mapToSchema($event);
+ my $key = getCalcmsEventToString($event);
+ $sourceEventsByKey->{$key} = $event;
+ }
- #convert to calcms schema
- $event=source::map_to_schema($event);
+ # delete target entries without matching source entries
+ for my $key ( keys %$targetEventsByKey ) {
+ next if defined $sourceEventsByKey->{$key};
+ my $event = $targetEventsByKey->{$key};
+ info "delete $key ";
+ print Dumper($event);
+ GoogleCalendar::deleteEvent($event);
+ }
- #map event to target schema
- $event=target::map_to_schema($event);
-
- #deprecated: override defined attributes by configuration
- if ((defined $source::settings->{override}) && (ref($source::settings->{override})eq 'HASH')){
- for my $key (keys %{$source::settings->{override}}){
- my $value=$source::settings->{override}->{$key};
- if ($source::settings->{override} ne ''){
- print_info("override '$key'='$value'");
- $event->{event}->{$key}=$value;
- }
- }
- }
-
- if ($output_type eq'html'){
- print_event_html("[".($c+1)."]",$event);
- }else{
- print_event_text("[".($c+1)."]",$event);
- }
-
- if ($event->{event}->{start} eq '' || $event->{event}->{end} eq ''){
- print ('WARNING: Cannot read start or end of event');
- print "\n";
- }else{
-# print Dumper($event);
- sync_event($event);
- }
-
- # last;
- $event=undef;
- $c++;
- print " |
"if ($output_type eq 'html');
- }
-# print "\n