mirror of
https://github.com/webmin/webmin.git
synced 2026-03-20 08:40:24 +00:00
Fix indentation
This commit is contained in:
@@ -1331,210 +1331,211 @@ my $adjust_time_with_timezone = sub {
|
||||
};
|
||||
};
|
||||
# Lines processor
|
||||
my $process_line = sub {
|
||||
my ($line) = @_;
|
||||
# Start a new event
|
||||
if ($line =~ /^BEGIN:VEVENT/) {
|
||||
%event = ();
|
||||
$event{'description'} = [ ];
|
||||
$event{'attendees'} = [ ];
|
||||
}
|
||||
# Convert times using the timezone
|
||||
elsif ($line =~ /^END:VEVENT/) {
|
||||
# Local timezone
|
||||
$event{'tzid_local'} =
|
||||
DateTime::TimeZone->new(name => 'local')->name();
|
||||
$event{'tzid'} = 'UTC', $event{'tzid_missing'} = 1
|
||||
if (!$event{'tzid'});
|
||||
# Adjust times with timezone
|
||||
my ($adjusted_start, $adjusted_end);
|
||||
$event{'tzid'} = $timezone_map{$event{'tzid'}} || $event{'tzid'};
|
||||
# Add single start/end time
|
||||
if ($event{'dtstart'}) {
|
||||
$adjusted_start =
|
||||
$adjust_time_with_timezone->($event{'dtstart'},
|
||||
$event{'tzid'});
|
||||
$event{'dtstart_timestamp'} = $adjusted_start->{'timestamp'};
|
||||
my $dtstart_date =
|
||||
&make_date($event{'dtstart_timestamp'},
|
||||
{ tz => $event{'tzid'} });
|
||||
$event{'dtstart_date'} =
|
||||
"$dtstart_date->{'short'} ".
|
||||
"$dtstart_date->{'timeshort'}";
|
||||
$event{'dtstart_local_timestamp'} =
|
||||
$adjusted_start->{'timestamp_local'};
|
||||
$event{'dtstart_local_date'} =
|
||||
&make_date($event{'dtstart_local_timestamp'});
|
||||
}
|
||||
if ($event{'dtend'}) {
|
||||
$adjusted_end =
|
||||
$adjust_time_with_timezone->($event{'dtend'},
|
||||
$event{'tzid'});
|
||||
$event{'dtend_timestamp'} = $adjusted_end->{'timestamp'};
|
||||
my $dtend_date = &make_date($event{'dtend_timestamp'},
|
||||
my $process_line = sub
|
||||
{
|
||||
my ($line) = @_;
|
||||
# Start a new event
|
||||
if ($line =~ /^BEGIN:VEVENT/) {
|
||||
%event = ();
|
||||
$event{'description'} = [ ];
|
||||
$event{'attendees'} = [ ];
|
||||
}
|
||||
# Convert times using the timezone
|
||||
elsif ($line =~ /^END:VEVENT/) {
|
||||
# Local timezone
|
||||
$event{'tzid_local'} =
|
||||
DateTime::TimeZone->new(name => 'local')->name();
|
||||
$event{'tzid'} = 'UTC', $event{'tzid_missing'} = 1
|
||||
if (!$event{'tzid'});
|
||||
# Adjust times with timezone
|
||||
my ($adjusted_start, $adjusted_end);
|
||||
$event{'tzid'} = $timezone_map{$event{'tzid'}} || $event{'tzid'};
|
||||
# Add single start/end time
|
||||
if ($event{'dtstart'}) {
|
||||
$adjusted_start =
|
||||
$adjust_time_with_timezone->($event{'dtstart'},
|
||||
$event{'tzid'});
|
||||
$event{'dtstart_timestamp'} = $adjusted_start->{'timestamp'};
|
||||
my $dtstart_date =
|
||||
&make_date($event{'dtstart_timestamp'},
|
||||
{ tz => $event{'tzid'} });
|
||||
$event{'dtend_date'} =
|
||||
"$dtend_date->{'short'} ".
|
||||
"$dtend_date->{'timeshort'}";
|
||||
$event{'dtend_local_timestamp'} =
|
||||
$adjusted_end->{'timestamp_local'};
|
||||
$event{'dtend_local_date'} =
|
||||
&make_date($event{'dtend_local_timestamp'});
|
||||
}
|
||||
if ($event{'dtstart'} && $event{'dtend'}) {
|
||||
# Try to add local 'when (period)'
|
||||
my $dtstart_local_obj =
|
||||
$event{'_obj_dtstart_local_time'} =
|
||||
make_date($event{'dtstart_local_timestamp'},
|
||||
{ _ });
|
||||
my $dtend_local_obj =
|
||||
$event{'_obj_dtend_local_time'} =
|
||||
make_date($event{'dtend_local_timestamp'},
|
||||
{ _ });
|
||||
# Build when local, e.g.:
|
||||
# Tue Jun 04, 2024 04:30 PM – 05:15
|
||||
# PM (Asia/Nicosia +0300)
|
||||
# or
|
||||
# Tue Jun 04, 2024 04:30 PM – Wed Jun 05, 2024 01:15
|
||||
# AM (Asia/Nicosia +0300)
|
||||
$event{'dtwhen_local'} =
|
||||
# Start local
|
||||
$dtstart_local_obj->{'week'}.' '.
|
||||
$dtstart_local_obj->{'month'}.' '.
|
||||
$dtstart_local_obj->{'day'}.', '.
|
||||
$dtstart_local_obj->{'year'}.' '.
|
||||
$dtstart_local_obj->{'timeshort'}.' – ';
|
||||
# End local
|
||||
if ($dtstart_local_obj->{'year'} eq
|
||||
$dtend_local_obj->{'year'} &&
|
||||
$dtstart_local_obj->{'month'} eq
|
||||
$dtend_local_obj->{'month'} &&
|
||||
$dtstart_local_obj->{'day'} eq
|
||||
$dtend_local_obj->{'day'}) {
|
||||
$event{'dtstart_date'} =
|
||||
"$dtstart_date->{'short'} ".
|
||||
"$dtstart_date->{'timeshort'}";
|
||||
$event{'dtstart_local_timestamp'} =
|
||||
$adjusted_start->{'timestamp_local'};
|
||||
$event{'dtstart_local_date'} =
|
||||
&make_date($event{'dtstart_local_timestamp'});
|
||||
}
|
||||
if ($event{'dtend'}) {
|
||||
$adjusted_end =
|
||||
$adjust_time_with_timezone->($event{'dtend'},
|
||||
$event{'tzid'});
|
||||
$event{'dtend_timestamp'} = $adjusted_end->{'timestamp'};
|
||||
my $dtend_date = &make_date($event{'dtend_timestamp'},
|
||||
{ tz => $event{'tzid'} });
|
||||
$event{'dtend_date'} =
|
||||
"$dtend_date->{'short'} ".
|
||||
"$dtend_date->{'timeshort'}";
|
||||
$event{'dtend_local_timestamp'} =
|
||||
$adjusted_end->{'timestamp_local'};
|
||||
$event{'dtend_local_date'} =
|
||||
&make_date($event{'dtend_local_timestamp'});
|
||||
}
|
||||
if ($event{'dtstart'} && $event{'dtend'}) {
|
||||
# Try to add local 'when (period)'
|
||||
my $dtstart_local_obj =
|
||||
$event{'_obj_dtstart_local_time'} =
|
||||
make_date($event{'dtstart_local_timestamp'},
|
||||
{ _ });
|
||||
my $dtend_local_obj =
|
||||
$event{'_obj_dtend_local_time'} =
|
||||
make_date($event{'dtend_local_timestamp'},
|
||||
{ _ });
|
||||
# Build when local, e.g.:
|
||||
# Tue Jun 04, 2024 04:30 PM – 05:15
|
||||
# PM (Asia/Nicosia +0300)
|
||||
# or
|
||||
# Tue Jun 04, 2024 04:30 PM – Wed Jun 05, 2024 01:15
|
||||
# AM (Asia/Nicosia +0300)
|
||||
$event{'dtwhen_local'} =
|
||||
# Start local
|
||||
$dtstart_local_obj->{'week'}.' '.
|
||||
$dtstart_local_obj->{'month'}.' '.
|
||||
$dtstart_local_obj->{'day'}.', '.
|
||||
$dtstart_local_obj->{'year'}.' '.
|
||||
$dtstart_local_obj->{'timeshort'}.' – ';
|
||||
# End local
|
||||
if ($dtstart_local_obj->{'year'} eq
|
||||
$dtend_local_obj->{'year'} &&
|
||||
$dtstart_local_obj->{'month'} eq
|
||||
$dtend_local_obj->{'month'} &&
|
||||
$dtstart_local_obj->{'day'} eq
|
||||
$dtend_local_obj->{'day'}) {
|
||||
$event{'dtwhen_local'} .=
|
||||
$dtend_local_obj->{'timeshort'};
|
||||
}
|
||||
else {
|
||||
$event{'dtwhen_local'} .=
|
||||
$dtend_local_obj->{'week'}.' '.
|
||||
$dtend_local_obj->{'month'}.' '.
|
||||
$dtend_local_obj->{'day'}.', '.
|
||||
$dtend_local_obj->{'year'}.' '.
|
||||
$dtend_local_obj->{'timeshort'};
|
||||
}
|
||||
# Timezone local
|
||||
if ($event{'tzid_local'} ||
|
||||
$dtstart_local_obj->{'tz'}) {
|
||||
if ($event{'tzid_local'} &&
|
||||
$dtstart_local_obj->{'tz'}) {
|
||||
if ($event{'tzid_local'} eq
|
||||
$dtstart_local_obj->{'tz'}) {
|
||||
$event{'dtwhen_local'} .=
|
||||
" ($event{'tzid_local'})";
|
||||
}
|
||||
else {
|
||||
$event{'dtwhen_local'} .=
|
||||
" ($event{'tzid_local'} ".
|
||||
"$dtstart_local_obj->{'tz'})";
|
||||
}
|
||||
}
|
||||
elsif ($event{'tzid_local'}) {
|
||||
$event{'dtwhen_local'} .=
|
||||
$dtend_local_obj->{'timeshort'};
|
||||
" ($event{'tzid_local'})";
|
||||
}
|
||||
else {
|
||||
$event{'dtwhen_local'} .=
|
||||
$dtend_local_obj->{'week'}.' '.
|
||||
$dtend_local_obj->{'month'}.' '.
|
||||
$dtend_local_obj->{'day'}.', '.
|
||||
$dtend_local_obj->{'year'}.' '.
|
||||
$dtend_local_obj->{'timeshort'};
|
||||
" ($dtstart_local_obj->{'tz'})";
|
||||
}
|
||||
# Timezone local
|
||||
if ($event{'tzid_local'} ||
|
||||
$dtstart_local_obj->{'tz'}) {
|
||||
if ($event{'tzid_local'} &&
|
||||
$dtstart_local_obj->{'tz'}) {
|
||||
if ($event{'tzid_local'} eq
|
||||
$dtstart_local_obj->{'tz'}) {
|
||||
$event{'dtwhen_local'} .=
|
||||
" ($event{'tzid_local'})";
|
||||
}
|
||||
else {
|
||||
$event{'dtwhen_local'} .=
|
||||
" ($event{'tzid_local'} ".
|
||||
"$dtstart_local_obj->{'tz'})";
|
||||
}
|
||||
}
|
||||
elsif ($event{'tzid_local'}) {
|
||||
$event{'dtwhen_local'} .=
|
||||
" ($event{'tzid_local'})";
|
||||
}
|
||||
else {
|
||||
$event{'dtwhen_local'} .=
|
||||
" ($dtstart_local_obj->{'tz'})";
|
||||
}
|
||||
}
|
||||
# Try to add original 'when (period)'
|
||||
my $dtstart_obj =
|
||||
$event{'_obj_dtstart_time'} =
|
||||
make_date($event{'dtstart_timestamp'},
|
||||
{ tz => $event{'tzid'} });
|
||||
my $dtend_obj =
|
||||
$event{'_obj_dtend_time'} =
|
||||
make_date($event{'dtend_timestamp'},
|
||||
{ tz => $event{'tzid'} });
|
||||
# Build original when
|
||||
if (!$event{'tzid_missing'}) {
|
||||
$event{'dtwhen'} =
|
||||
# Start original
|
||||
$dtstart_obj->{'week'}.' '.
|
||||
$dtstart_obj->{'month'}.' '.
|
||||
$dtstart_obj->{'day'}.', '.
|
||||
$dtstart_obj->{'year'}.' '.
|
||||
$dtstart_obj->{'timeshort'}.' – ';
|
||||
# End original
|
||||
if ($dtstart_obj->{'year'} eq
|
||||
$dtend_obj->{'year'} &&
|
||||
$dtstart_obj->{'month'} eq
|
||||
$dtend_obj->{'month'} &&
|
||||
$dtstart_obj->{'day'} eq
|
||||
$dtend_obj->{'day'}) {
|
||||
$event{'dtwhen'} .=
|
||||
$dtend_obj->{'timeshort'};
|
||||
}
|
||||
else {
|
||||
$event{'dtwhen'} .=
|
||||
$dtend_obj->{'week'}.' '.
|
||||
$dtend_obj->{'month'}.' '.
|
||||
$dtend_obj->{'day'}.', '.
|
||||
$dtend_obj->{'year'}.' '.
|
||||
$dtend_obj->{'timeshort'};
|
||||
}
|
||||
# Timezone original
|
||||
if ($dtstart_obj->{'tz'}) {
|
||||
$event{'dtwhen'} .=
|
||||
" ($dtstart_obj->{'tz'})";
|
||||
}
|
||||
}
|
||||
# Try to add original 'when (period)'
|
||||
my $dtstart_obj =
|
||||
$event{'_obj_dtstart_time'} =
|
||||
make_date($event{'dtstart_timestamp'},
|
||||
{ tz => $event{'tzid'} });
|
||||
my $dtend_obj =
|
||||
$event{'_obj_dtend_time'} =
|
||||
make_date($event{'dtend_timestamp'},
|
||||
{ tz => $event{'tzid'} });
|
||||
# Build original when
|
||||
if (!$event{'tzid_missing'}) {
|
||||
$event{'dtwhen'} =
|
||||
# Start original
|
||||
$dtstart_obj->{'week'}.' '.
|
||||
$dtstart_obj->{'month'}.' '.
|
||||
$dtstart_obj->{'day'}.', '.
|
||||
$dtstart_obj->{'year'}.' '.
|
||||
$dtstart_obj->{'timeshort'}.' – ';
|
||||
# End original
|
||||
if ($dtstart_obj->{'year'} eq
|
||||
$dtend_obj->{'year'} &&
|
||||
$dtstart_obj->{'month'} eq
|
||||
$dtend_obj->{'month'} &&
|
||||
$dtstart_obj->{'day'} eq
|
||||
$dtend_obj->{'day'}) {
|
||||
$event{'dtwhen'} .=
|
||||
$dtend_obj->{'timeshort'};
|
||||
}
|
||||
else {
|
||||
$event{'dtwhen'} .=
|
||||
$dtend_obj->{'week'}.' '.
|
||||
$dtend_obj->{'month'}.' '.
|
||||
$dtend_obj->{'day'}.', '.
|
||||
$dtend_obj->{'year'}.' '.
|
||||
$dtend_obj->{'timeshort'};
|
||||
}
|
||||
# Timezone original
|
||||
if ($dtstart_obj->{'tz'}) {
|
||||
$event{'dtwhen'} .=
|
||||
" ($dtstart_obj->{'tz'})";
|
||||
}
|
||||
}
|
||||
# Add the event to the list
|
||||
push(@events, { %event });
|
||||
}
|
||||
# Parse fields
|
||||
elsif ($line =~ /^SUMMARY.*?:(.*)$/) {
|
||||
$event{'summary'} = $1;
|
||||
}
|
||||
elsif ($line =~ /^DTSTART:(.*)$/) {
|
||||
$event{'dtstart'} = $1;
|
||||
}
|
||||
elsif ($line =~ /^DTSTART;TZID=(.*?):(.*)$/) {
|
||||
$event{'tzid'} = $1;
|
||||
$event{'dtstart'} = $2;
|
||||
}
|
||||
elsif ($line =~ /^DTEND:(.*)$/) {
|
||||
$event{'dtend'} = $1;
|
||||
}
|
||||
elsif ($line =~ /^DTEND;TZID=(.*?):(.*)$/) {
|
||||
$event{'tzid'} = $1;
|
||||
$event{'dtend'} = $2;
|
||||
}
|
||||
elsif ($line =~ /^DESCRIPTION:(.*)$/) {
|
||||
my $description = $1;
|
||||
$description =~ s/\\n/<br>/g;
|
||||
$description =~ s/\\//g;
|
||||
unshift(@{$event{'description'}}, $description);
|
||||
}
|
||||
elsif ($line =~ /^DESCRIPTION;LANGUAGE=([a-z]{2}-[A-Z]{2}):(.*)$/) {
|
||||
my $description = $2;
|
||||
$description =~ s/\\n/<br>/g;
|
||||
$description =~ s/\\//g;
|
||||
unshift(@{$event{'description'}}, $description);
|
||||
}
|
||||
elsif ($line =~ /^LOCATION.*?:(.*)$/) {
|
||||
$event{'location'} = $1;
|
||||
}
|
||||
elsif ($line =~ /^ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=(.*?):mailto:(.*)$/ ||
|
||||
$line =~ /^ATTENDEE;.*CN=(.*?);.*mailto:(.*)$/ ||
|
||||
$line =~ /^ATTENDEE:mailto:(.*)$/) {
|
||||
push(@{$event{'attendees'}}, { 'name' => $1, 'email' => $2 });
|
||||
}
|
||||
elsif ($line =~ /^ORGANIZER;CN=(.*?):(?:mailto:)?(.*)$/) {
|
||||
$event{'organizer_name'} = $1;
|
||||
$event{'organizer_email'} = $2;
|
||||
}
|
||||
# Add the event to the list
|
||||
push(@events, { %event });
|
||||
}
|
||||
# Parse fields
|
||||
elsif ($line =~ /^SUMMARY.*?:(.*)$/) {
|
||||
$event{'summary'} = $1;
|
||||
}
|
||||
elsif ($line =~ /^DTSTART:(.*)$/) {
|
||||
$event{'dtstart'} = $1;
|
||||
}
|
||||
elsif ($line =~ /^DTSTART;TZID=(.*?):(.*)$/) {
|
||||
$event{'tzid'} = $1;
|
||||
$event{'dtstart'} = $2;
|
||||
}
|
||||
elsif ($line =~ /^DTEND:(.*)$/) {
|
||||
$event{'dtend'} = $1;
|
||||
}
|
||||
elsif ($line =~ /^DTEND;TZID=(.*?):(.*)$/) {
|
||||
$event{'tzid'} = $1;
|
||||
$event{'dtend'} = $2;
|
||||
}
|
||||
elsif ($line =~ /^DESCRIPTION:(.*)$/) {
|
||||
my $description = $1;
|
||||
$description =~ s/\\n/<br>/g;
|
||||
$description =~ s/\\//g;
|
||||
unshift(@{$event{'description'}}, $description);
|
||||
}
|
||||
elsif ($line =~ /^DESCRIPTION;LANGUAGE=([a-z]{2}-[A-Z]{2}):(.*)$/) {
|
||||
my $description = $2;
|
||||
$description =~ s/\\n/<br>/g;
|
||||
$description =~ s/\\//g;
|
||||
unshift(@{$event{'description'}}, $description);
|
||||
}
|
||||
elsif ($line =~ /^LOCATION.*?:(.*)$/) {
|
||||
$event{'location'} = $1;
|
||||
}
|
||||
elsif ($line =~ /^ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=(.*?):mailto:(.*)$/ ||
|
||||
$line =~ /^ATTENDEE;.*CN=(.*?);.*mailto:(.*)$/ ||
|
||||
$line =~ /^ATTENDEE:mailto:(.*)$/) {
|
||||
push(@{$event{'attendees'}}, { 'name' => $1, 'email' => $2 });
|
||||
}
|
||||
elsif ($line =~ /^ORGANIZER;CN=(.*?):(?:mailto:)?(.*)$/) {
|
||||
$event{'organizer_name'} = $1;
|
||||
$event{'organizer_email'} = $2;
|
||||
}
|
||||
};
|
||||
# Read the ICS file lines or just use the lines
|
||||
my $ics_file_lines =
|
||||
|
||||
Reference in New Issue
Block a user