+sub do_csv_schedule {
+ $| = 1;
+ my %days = (M => "Mon", T => "Tue", W => "Wed", R => "Thu", F => "Fri", S => "Sat", U => "SU");
+ my @mon = qw(Jan. Feb. Mar. Apr. May June July Aug. Sept. Oct. Nov. Dec.);
+ my (@terms, $file, $current, @mhc, @schedule);
+ $file = shift unless (!defined $_[0] or $_[0] =~ /^\d/);
+ @schedule = get_schedule(@_);
+ open(STDOUT, ">" . $file) if(defined($file));
+ foreach my $row (@schedule) {
+ map {s/\n/-/g if defined; $_} %$row;
+ my $id=generate_id($row->{'id'});
+ $row->{'days'} =~ s/([MTWRFS])/ $days{$1}/g;
+ $row->{'days'} =~ s/^ //;
+ $row->{'instructor'} =~ s/^([^,]*), ([^,]*)/$2 $1/;
+ my $next = next_class(%$row);
+ $current = "";
+ #print "# $id\n";
+ $current .= $row->{'id'} . ",";
+ $current .= $row->{'title'} . ",";
+ $current .= '"' . $row->{'instructor'} . '",';
+ $next =~ /^(\d\d\d\d)(\d\d)(\d\d)$/;
+ $current .= $1 . "-". $2 ."-" . $3 . "\n";
+ print $current;
+ }
+}
+
+sub do_vcalendar_schedule {
+ $| = 1;
+ my %days = (M => "MO", T => "TU", W => "WE", R => "TH", F => "FR", S => "SA", U => "SU");
+ my $file = shift if (defined $_[0] and $_[0] !~ /^\d/);
+ my @schedule = get_schedule(@_);
+ open(STDOUT, ">>" . $file) if(defined($file) && (! -d $file));
+ open(STDOUT, ">/dev/null") if(defined($file) && (-d $file));
+ print "BEGIN:VCALENDAR\r\nVERSION:1.0\r\n";
+ foreach my $row (@schedule) {
+ map { s/\n/-/g; $_} %$row;
+ $row->{'instructor'} =~ s/^([^,]*), ([^,]*)/$2 $1/;
+ $row->{'days'} =~ s/([MTWRFS])/ $days{$1}/g;
+ $row->{'days'} =~ s/^ //;
+ #$row->{'duration'} =~ s/(\d\d)-(\d\d)-(\d\d)/20$3$1$2/g;
+ my @day = (off_for_holidays(%$row),off_for_exams(%$row));
+ my $day = "";
+ if(exists($day[0])) {
+ $day = join(";", @day);
+ $day =~ s/\b(\d{8})\b/$1T000000/g;
+ }
+ my ($starttime, $stoptime)=($row->{'begin'}, $row->{'end'});
+ my ($startdate, $stopdate)=split(/-/, $row->{'duration'});
+ $starttime =~ s/://;
+ $stoptime =~ s/://;
+ if(defined($file) && (-d $file)) {
+ open FH, ">$file/" . $row->{'id'} . ".vcs" or die "$!";
+ select FH;
+ print "BEGIN:VCALENDAR\r\nVERSION:1.0\r\n";
+ }
+ print "BEGIN:VEVENT\r\n";
+ print "SUMMARY:", $row->{'title'}, "\r\n";
+ print "DESCRIPTION:", $row->{'id'}, "\r\n";
+ print "LOCATION:", $row->{'location'}, "\r\n";
+ print "CATEGORIES:Education\r\n";
+ print "DTSTART:", $startdate."T".$starttime, "00\r\n";
+ print "DTEND:", $startdate."T".$stoptime, "00\r\n";
+ print "RRULE:W1 ", $row->{'days'} . " $stopdate", "T000000\r\n";
+ print("EXDATE:$day\r\n") if($day);
+ print "ATTENDEE;ROLE=OWNER;STATUS=CONFIRMED:", $opts{NAME}, "\r\n" if(defined($opts{NAME}));
+ print "ATTENDEE;ROLE=ORGANIZER;STATUS=CONFIRMED:", $row->{'instructor'}, " <" . (get_faculty_email($row->{'instructor'}) || "fake\@ddress"), ">\n";
+ print "END:VEVENT\r\n";
+ if(defined($file) && (-d $file)) {
+ print "END:VCALENDAR\r\n";
+ close FH;
+ select STDOUT;