diff --git a/calendar-export.plx b/calendar-export.plx
index 3e0ae02..5438ed5 100644
--- a/calendar-export.plx
+++ b/calendar-export.plx
@@ -22,8 +22,9 @@
# along with this program in a file in the toplevel directory called
# "GPLv3". If not, see .
-# The functions PrivatizeMergeAndTZIcalFile, BuildTZList, and
-# FilterEmacsToICal material copyrighted and licensed as below:
+# The functions PrivatizeMergeAndTZIcalFile, BuildTZList,
+# PrivacyFilterICalFile, and FilterEmacsToICal material copyrighted and
+# licensed as below:
# Copyright © 2006 Software Freedom Law Center, Inc.
#
@@ -150,6 +151,58 @@ ELISP_END
DieLog("Unable to remove temporary files")
unless unlink($icsPublicFile, $icsWillBePrivatizedFile, $icsFullFile) == 3;
}
+###############################################################################
+sub PrivacyFilterICalFile ($$) {
+ my($inputFile, $outputFile) = @_;
+
+ my $oldCalendar = Data::ICal->new(filename => $inputFile);
+ my $newCalendar = Data::ICal->new(data => <entries : [];
+ my $x =0;
+ foreach my $entry (@{$entries}) {
+ my @newSubEntries;
+ foreach my $subEntry (@{$entry->{entries}}) {
+ my $refVal = ref $subEntry;
+ if (defined $refVal and $refVal =~ /Alarm/i) {
+ # Don't put it in the list in the public version if is an alarm
+ } else {
+ push(@newSubEntries, $subEntry);
+ }
+ }
+ $entry->{entries} = \@newSubEntries;
+
+ my $classes = $entry->property('class');
+ my $class;
+ foreach my $classProp (@{$classes}) {
+ $class = $classProp->value;
+ last if defined $class and
+ $class =~ /^\s*(?:PUBLIC|PRIVATE|CONFIDENTIAL)\s*/i;
+ }
+ if (defined $class and $class =~ /CONFIDENTIAL/i) {
+ foreach my $prop (qw/location summary description/) {
+ my $propList = $entry->property($prop);
+ $entry->add_property($prop => "Private")
+ if (defined $propList and @{$propList} > 0);
+ }
+ } elsif (defined $class and $class =~ /PRIVATE/i){
+ # do not put this event in the output at all
+ next;
+ }
+ $newCalendar->add_entry($entry);
+ }
+ open(SCRUBBED_CAL, ">$outputFile") or
+ DieLog("Unable to overwrite $outputFile: $!", $LOCK_CLEANUP_CODE);
+ print SCRUBBED_CAL $newCalendar->as_string;
+ close SCRUBBED_CAL;
+ DieLog("Error when writing $outputFile: $!", $LOCK_CLEANUP_CODE)
+ unless $? == 0;
+}
######################################################################
sub PrivatizeMergeAndTZIcalFile ($$$$$$) {
my($icsPrivate, $icsPublic, $icsFull, $tzList, $user, $errorUser) = @_;