85 |
my $sql_dir = $ENV{SCRIPT_FILENAME} || '.'; |
my $sql_dir = $ENV{SCRIPT_FILENAME} || '.'; |
86 |
$sql_dir =~ s,/[^/]+$,,; |
$sql_dir =~ s,/[^/]+$,,; |
87 |
|
|
88 |
my $config_path = $1 if "$sql_dir/config.pl" =~ m/^(.+)$/; # untaint |
sub require_config { |
89 |
warn "# using $config_path\n"; |
my $config_path = $1 if "$sql_dir/config.pl" =~ m/^(.+)$/; # untaint |
90 |
require $config_path if -e $config_path; |
warn "# using $config_path\n"; |
91 |
|
require $config_path if -e $config_path; |
92 |
|
} |
93 |
|
|
94 |
|
require_config; |
95 |
|
|
96 |
my $reports_path = $ENV{PATH_INFO}; |
my $reports_path = $ENV{PATH_INFO}; |
97 |
$reports_path =~ s/\.\.//g; # some protection against path exploits |
$reports_path =~ s/\.\.//g; # some protection against path exploits |
98 |
$reports_path ||= shift @ARGV; # for CLI invocation |
$reports_path ||= shift @ARGV; # for CLI invocation |
99 |
$sql_dir .= "/$reports_path" if -e "$sql_dir/$reports_path"; |
$sql_dir .= "/$reports_path" if -e "$sql_dir/$reports_path"; |
100 |
|
|
101 |
|
require_config; |
102 |
|
|
103 |
warn "# reading SQL queries from $sql_dir\n" if $debug; |
warn "# reading SQL queries from $sql_dir\n" if $debug; |
104 |
|
|
105 |
opendir(DIR, $sql_dir) || die "can't opendir $sql_dir: $!"; |
opendir(DIR, $sql_dir) || die "can't opendir $sql_dir: $!"; |
193 |
my $data = $row[$col]; |
my $data = $row[$col]; |
194 |
if ( $types[$col] =~ m/^date/i ) { |
if ( $types[$col] =~ m/^date/i ) { |
195 |
$data .= 'T' if $data =~ m/^\d\d\d\d-\d\d-\d\d$/; |
$data .= 'T' if $data =~ m/^\d\d\d\d-\d\d-\d\d$/; |
196 |
$data =~ s/^(\d\d\d\d-\d\d-\d\d)\s(\d\d:\S+)$/$1T$2/; |
$data =~ s/^(\d\d\d\d-\d\d-\d\d)\s(\d\d:\d\d:\d\d)$/$1T$2/; |
197 |
warn "## $data\n"; |
warn "## by type datetime $data\n"; |
198 |
$worksheet->write_date_time( $row, $col, $data, $date_format ); |
$worksheet->write_date_time( $row, $col, $data, $date_format ); |
199 |
|
} elsif ( $data =~ s/^(\d\d\d\d-\d\d-\d\d)[\sT](\d\d:\d\d:\d\d)$/$1T$2/ ) { |
200 |
|
warn "## heuristic date time: $1T$2\n"; |
201 |
|
$worksheet->write_date_time( $row, $col, "$1T$2", $date_format ); |
202 |
} else { |
} else { |
203 |
$worksheet->write($row, $col, _c( $data ) ); |
$worksheet->write($row, $col, _c( $data ) ); |
204 |
} |
} |