#!/usr/bin/perl # # $Id: IntegroCSV.pl,v 1.2 2005/10/31 17:03:34 ddoughty Exp $ # # Source File: IntegroCSV.pl ### DED 12/23/04 Script to print out answers to Integro SAS Survey ### across all clients ### Must be run from cgi-bin in browser: ### http://www.integrosurvey.com/cgi-bin/IntegroCSV.pl - USA ### http://www.integroonline.com/cgi-bin/IntegroCSV.pl - AUS ### Prints CSV data to browser, can copy/paste into a file # Get config use FileHandle; use Time::Local; use Data::Dumper; #use IntegroLib; #require 'sitecfg.pl'; require 'testlib.pl'; require 'smilib.pl'; require 'tstatlib.pl'; require 'cybertestlib.pl'; use strict; use vars qw(%FORM %SESSION %CLIENT %TEST_SESSION %SUBTEST_QUESTIONS %TEST %SUBTEST_SUMMARY %CANDIDATE %SUBTEST_ANSWERS %SYSTEM %REPORT %SUBTEST_RESPONSES); use vars qw($testcomplete $cgiroot $pathsep $dataroot ); print "Content-Type: text/html\n\n"; my @history; my @client_data = get_client_list(); shift @client_data; foreach (@client_data) { my ($clientID, $trash) = split('&', $_); my $file = join($pathsep,$testcomplete,"$clientID.SAS01.history"); my $fh = new FileHandle; if ($fh->open($file)) { push(@history, map([split(/<<>>/,$_)],<$fh>)); } } #print "
".Dumper(\@history)."
"; print "
\n";
print "Client,Survey Date,Survey Time,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58.1,58.2,58.3\n";
foreach (@history) {
	my ($clientID, $trash) = split(/&/, $_->[1]);
	my ($date, $time) = split(/ /, $_->[0],2);
	my @answers;
	my @data = split(/&/, $_->[4]);
	for (my $i=0;$i<$#data;$i++) {
		#if (($i == $#data) || ($#data == 59 && $i == 57)) {
			# Skip #59, and skip #57, if included
		if ($i == $#data) {
			# Skip #59
			next;
		} elsif ($i == $#data-1) {
			my ($answer, $comment) = split(/::/,$data[$i]);
			my @ans = split(/\?/, $answer);
			shift @ans;
			my @fiftyeight;
			for (my $j=0;$j<=59;$j++) {
				if ($ans[$j] eq "1") {
					my $ipers = ($j % 3);
					$fiftyeight[$ipers] = (($j + 3 - ($j % 3))/6)*10;
		#if ($clientID eq "integroleadership") {
			#print STDERR "$date: $answer\n";
			#print STDERR "$date: J: $j Ipers: $ipers 58: $fiftyeight[$ipers]\n";
		#}
				}
			}
			if ($i == 57) {
				push(@answers, "");
			}
			push(@answers, "$fiftyeight[0]");
			push(@answers, "$fiftyeight[1]");
			push(@answers, "$fiftyeight[2]");
		} else {
			my ($answer, $comment) = split(/::/,$data[$i]);
			$answer =~ tr/\'//d;
			$answer =~ tr/xxx//d;
			$answer =~ tr/?//d;
			push(@answers, $answer);
		}
	}
	my $answers = join(',', @answers);
	print "$clientID,$date,$time$answers\n";
	
}
print "
\n";