From e2a1130e947adc2f4058bbb5a27216273f724853 Mon Sep 17 00:00:00 2001 From: Metabox Date: Tue, 23 Apr 2019 16:33:14 +1000 Subject: [PATCH] Added export CSV routines. --- htdocs/cgi-bin/config.cgi | 107 +++++++++++++++++++++++++++++++++----- 1 file changed, 95 insertions(+), 12 deletions(-) diff --git a/htdocs/cgi-bin/config.cgi b/htdocs/cgi-bin/config.cgi index 93b946d..14b5b90 100755 --- a/htdocs/cgi-bin/config.cgi +++ b/htdocs/cgi-bin/config.cgi @@ -44,8 +44,16 @@ my $db = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die "

my $rv; my $dbs; -my $today = DateTime->now; -my $tz = $cgi->param('tz'); +my $today = DateTime->now; +my $tz = $cgi->param('tz'); + +my $csvp = $cgi->param("csv"); +if($csvp && $csvp<3){ + exportLogToCSV($csvp); +} +elsif($csvp){ + exportCategoriesToCSV($csvp); +} ##################### @@ -53,14 +61,11 @@ my $tz = $cgi->param('tz'); ##################### $today->set_time_zone( $TIME_ZONE ); -print $cgi->header(-expires=>"+6s", -charset=>"UTF-8"); - +print $cgi->header(-expires=>"+6s", -charset=>"UTF-8"); print $cgi->start_html(-title => "Personal Log", -BGCOLOR=>"#c8fff8", -script=>{-type => 'text/javascript', -src => 'wsrc/main.js'}, -style =>{-type => 'text/css', -src => 'wsrc/main.css'}, - ); - - + ); my $stmtCat = 'SELECT * FROM CAT ORDER BY ID;'; $dbs = $db->prepare( $stmtCat ); @@ -155,10 +160,15 @@ my $frmVars = qq( # print '

'; print "

Log Configuration In -> $dbname

"; - print "\n
\n" . $frm ."\n
\n
"; - print "\n
\n" . $frmVars."\n
\n
"; - print "\n
\nSTATUS:" .$status. "\n
\n
"; - print '
Back to Main Log
'; + print "\n
\n" . $frm ."\n

\n"; + print "\n
\n" . $frmVars."\n

\n"; + print "\n
\nSTATUS:" .$status. "\n

\n"; + print "
Back to Main Log


\n"; + print '
Export Log to CSV
'; + print '
View the Log in CSV Format.
'; + print '
Export Categories to CSV
'; + print '
View the Categories in CSV Format.
'; + print '
'; @@ -317,7 +327,6 @@ sub updConfSetting{ my ($s,$d); $s = "UPDATE CONFIG SET VALUE='".$val."' WHERE ID=".$id.";"; try{ - $d = $db->prepare($s); $d->execute(); } @@ -326,6 +335,80 @@ sub updConfSetting{ } } +sub exportLogToCSVWorking{ + try{ + + my $csv = Text::CSV->new ( { binary => 1, strict => 1 } ); + $dbs = $db->prepare("SELECT * FROM LOG;"); + $dbs->execute(); + print $cgi->header(-charset=>"UTF-8" -type=>"text/html"); + print "ID_CAT,DATE,LOG,AMMOUNT\n"; + while (my $r=$dbs->fetchrow_arrayref()){ + print $csv->print(*STDOUT, $r)."\n"; + } + $db->disconnect(); + exit; + } + catch{ + print "SERVER ERROR->exportLogToCSV:".$_; + } +} +sub exportLogToCSV{ + try{ + + my $csv = Text::CSV->new ( { binary => 1, strict => 1 } ); + $dbs = $db->prepare("SELECT * FROM LOG;"); + $dbs->execute(); + if($csvp==2){ + print $cgi->header(-charset=>"UTF-8", -type=>"text/html"); + print "
\n";
+			}
+			else{
+				 print $cgi->header(-charset=>"UTF-8", -type=>"application/octet-stream", -attachment=>"$dbname.csv");
+			}
+			
+		  print "ID_CAT,DATE,LOG,AMMOUNT\n";
+			while (my $r=$dbs->fetchrow_arrayref()){ 
+						 print $csv->print(*STDOUT, $r)."\n";
+			}
+			if($csvp && $csvp==1){			
+				 print "\n
\n"; + } + $db->disconnect(); + exit; + } + catch{ + print "SERVER ERROR->exportLogToCSV:".$_; + } +} +sub exportCategoriesToCSV{ + try{ + + my $csv = Text::CSV->new ( { binary => 1, strict => 1 } ); + $dbs = $db->prepare("SELECT * FROM CAT;"); + $dbs->execute(); + if($csvp==4){ + print $cgi->header(-charset=>"UTF-8", -type=>"text/html"); + print "
\n";
+			}
+			else{
+				 print $cgi->header(-charset=>"UTF-8", -type=>"application/octet-stream", -attachment=>"$dbname.categories.csv");
+			}
+			
+		  print "ID_CAT,DATE,LOG,AMMOUNT\n";
+			while (my $r=$dbs->fetchrow_arrayref()){ 
+						 print $csv->print(*STDOUT, $r)."\n";
+			}
+			if($csvp && $csvp==3){			
+				 print "\n
\n"; + } + $db->disconnect(); + exit; + } + catch{ + print "SERVER ERROR->exportLogToCSV:".$_; + } +} -- 2.34.1