You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1918 lines
64 KiB
1918 lines
64 KiB
4 months ago
|
#!/usr/bin/perl
|
||
|
##!/usr/local/bin/perl5.8.0
|
||
|
#
|
||
|
# $Id: creports.pl,v 1.24 2006/09/13 18:12:31 psims Exp $
|
||
|
#
|
||
|
# Source File: creports.pl
|
||
|
|
||
|
# Get config
|
||
|
require 'sitecfg.pl';
|
||
|
require 'testlib.pl';
|
||
|
require 'tstatlib.pl';
|
||
|
require 'cybertestlib.pl';
|
||
|
use Time::Local;
|
||
|
|
||
|
$FORM{'frm'}="";
|
||
|
|
||
|
&app_initialize;
|
||
|
|
||
|
# warn "INFO: " . __FILE__ . " running.\n" ;
|
||
|
|
||
|
my $HBI_Debug = 0 ;
|
||
|
my $HBI_Key ;
|
||
|
if ($HBI_Debug) {
|
||
|
foreach $HBI_Key (sort keys %FORM) {
|
||
|
warn __FILE__ . " key $HBI_Key FORM $FORM{$HBI_Key} X" ;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($FORM{'pdf'}) {
|
||
|
print "Content-Type: application/pdf\n\n";
|
||
|
open(STDOUT, "| ".$cfgroot.$pathsep."html2pdf");
|
||
|
select(STDOUT); # needed for older versions of perl
|
||
|
} else {
|
||
|
print "Content-Type: text/html\n\n"
|
||
|
unless ((exists $FORM{'CustomFormat'}) && ($FORM{'CustomFormat'} eq "Yes")) ;
|
||
|
# Allow custom report to control Content-Type.
|
||
|
#print STDERR "Content-Type: text/html\n\n";
|
||
|
#open(STDOUT, "| filtertest.pl");
|
||
|
#select(STDOUT);
|
||
|
}
|
||
|
|
||
|
# ACT-C-001&Login Activity Report
|
||
|
# ACT-C-005&Login Activity by User
|
||
|
# ACT-C-002&Test Activity Report
|
||
|
# ACT-C-003&Test Reports by Candidate
|
||
|
# ACT-C-004&Test Statistics by Test
|
||
|
# ACT-C-004F&Test Statistics by Test User Filter
|
||
|
# ACT-C-006&Test Report by User
|
||
|
# ACT-C-007&Timing Statistics by Test
|
||
|
|
||
|
unless ($FORM{'tid'}) {
|
||
|
warn "ERROR: Empty Session ID " ;
|
||
|
&show_illegal_access_warning("user");
|
||
|
exit();
|
||
|
}
|
||
|
|
||
|
if (&get_session($FORM{'tid'})) {
|
||
|
&LanguageSupportInit();
|
||
|
|
||
|
unless ($SESSION{'clid'}) {
|
||
|
warn "ERROR: Empty Client ID in Session data for Session ID $FORM{'tid'} " ;
|
||
|
&show_illegal_access_warning("user");
|
||
|
exit();
|
||
|
}
|
||
|
|
||
|
$REPORT{'rptid'}="";
|
||
|
@rptdefs = &get_data("reports.$SESSION{'clid'}");
|
||
|
@lbls = split(/&/, $rptdefs[0]);
|
||
|
foreach $rptdef (@rptdefs) {
|
||
|
chomp ($rptdef);
|
||
|
@flds = split(/&/, $rptdef);
|
||
|
if ($flds[0] eq $FORM{'rptno'}) {
|
||
|
for $i (0 .. $#lbls) {
|
||
|
$REPORT{$lbls[$i]} = $flds[$i];
|
||
|
$i++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (substr($FORM{'rptno'},0,5) ne 'ACT-C') {
|
||
|
# This is a custom report
|
||
|
my ($ret);
|
||
|
(my $rptapp, @rptparams) = split(/ /, $REPORT{'rptapp'});
|
||
|
unless ($ret=do $rptapp) {
|
||
|
warn "couldn't parse $REPORT{'rptapp'}: $@" if $@;
|
||
|
warn "couldn't do $REPORT{'rptapp'}: $!" unless defined $ret;
|
||
|
warn "couldn't run $REPORT{'rptapp'}" unless $ret;
|
||
|
}
|
||
|
# At this point the custom report takes over writing out all the html.
|
||
|
} elsif (($FORM{'frm'} eq '1') || ($FORM{'frm'} eq '5')) {
|
||
|
&show_index;
|
||
|
} else {
|
||
|
if ($FORM{'frm'} eq '2') {
|
||
|
&show_detail;
|
||
|
} else {
|
||
|
if ($FORM{'frm'} eq '') {
|
||
|
if ($FORM{'rptno'} eq 'ACT-C-004') {
|
||
|
$REPORT{'rptid'}=$FORM{'rptno'};
|
||
|
&show_index;
|
||
|
} elsif ($FORM{'rptno'} eq 'ACT-C-003') {
|
||
|
$REPORT{'rptid'}=$FORM{'rptno'};
|
||
|
# &show_index;
|
||
|
&show_frames_003;
|
||
|
} elsif ($FORM{'rptno'} eq 'ACT-C-006') {
|
||
|
$REPORT{'rptid'}=$FORM{'rptno'};
|
||
|
&show_detail;
|
||
|
} elsif ($FORM{'rptno'} eq 'ACT-C-007') {
|
||
|
$REPORT{'rptid'}=$FORM{'rptno'};
|
||
|
&show_frames_007;
|
||
|
} elsif ($FORM{'rptno'} eq 'ACT-C-002') {
|
||
|
$REPORT{'rptid'}=$FORM{'rptno'};
|
||
|
&show_frames_002;
|
||
|
} elsif ($FORM{'rptno'} eq 'ACT-C-001') {
|
||
|
$REPORT{'rptid'}=$FORM{'rptno'};
|
||
|
&show_frames_001;
|
||
|
} else {
|
||
|
&show_frames;
|
||
|
}
|
||
|
} else {
|
||
|
print "<HTML>\n";
|
||
|
print "<HEAD></HEAD>\n";
|
||
|
print "
|
||
|
<BODY BACKGROUND=\"$SYSTEM{'BACKGROUND'}\" BGCOLOR=\"$SYSTEM{'BGCOLOR'}\"
|
||
|
TEXT=\"$SYSTEM{'TEXT'}\" LINK=\"$SYSTEM{'LINK'}\"
|
||
|
VLINK=\"$SYSTEM{'VLINK'}\" ALINK=\"$SYSTEM{'ALINK'}\">
|
||
|
</BODY>\n";
|
||
|
print "</HTML>\n";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
close(STDOUT);
|
||
|
|
||
|
sub show_frames {
|
||
|
print "<HTML>\n";
|
||
|
print "<HEAD></HEAD>\n";
|
||
|
print "<FRAMESET frameborder=0 cols=\"30%,*\">\n";
|
||
|
print "<FRAME name=\"rptindex\" frameborder=0 src=\"$urlroot/creports.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=1&rptno=$FORM{'rptno'}\">\n";
|
||
|
print "<FRAME name=\"rptdetail\" frameborder=0 src=\"$urlroot/creports.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=0&rptno=$FORM{'rptno'}\">\n";
|
||
|
print "</FRAMESET>\n";
|
||
|
print "</HTML>\n";
|
||
|
}
|
||
|
|
||
|
sub show_frames_001 {
|
||
|
print "<HTML>\n";
|
||
|
print "<HEAD></HEAD>\n";
|
||
|
print "<FRAMESET frameborder=0 rows=\"20%,*\">\n";
|
||
|
print "<FRAME name=\"rpthead\" frameborder=0 src=\"$urlroot/creports.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=5&rptno=$FORM{'rptno'}\">\n";
|
||
|
print "\t<FRAMESET frameborder=0 cols=\"30%,*\">\n";
|
||
|
print "\t<FRAME name=\"rptindex\" frameborder=0 src=\"$urlroot/creports.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=0&rptno=$FORM{'rptno'}\">\n";
|
||
|
print "\t<FRAME name=\"rptdetail\" frameborder=0 src=\"$urlroot/creports.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=0&rptno=$FORM{'rptno'}\">\n";
|
||
|
print "\t</FRAMESET>\n";
|
||
|
print "</FRAMESET>\n";
|
||
|
print "</HTML>\n";
|
||
|
}
|
||
|
|
||
|
|
||
|
sub show_frames_002 {
|
||
|
print "<HTML>\n";
|
||
|
print "<HEAD></HEAD>\n";
|
||
|
print "<FRAMESET frameborder=0 rows=\"25%,*\">\n";
|
||
|
print "\t<FRAME name=\"rptindex\" frameborder=0 src=\"$urlroot/creports.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=5&rptno=$FORM{'rptno'}\">\n";
|
||
|
print "\t<FRAME name=\"rptdetail\" frameborder=0 src=\"$urlroot/creports.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=1&rptno=$FORM{'rptno'}\">\n";
|
||
|
print "</FRAMESET>\n";
|
||
|
print "</HTML>\n";
|
||
|
}
|
||
|
|
||
|
sub show_frames_003 {
|
||
|
print "<HTML>\n";
|
||
|
print "<HEAD></HEAD>\n";
|
||
|
print "<FRAMESET frameborder=0 rows=\"60,*\">\n";
|
||
|
print "\t<FRAME noresize scrolling=\"no\" name=\"rptindx003\" frameborder=0 src=\"$urlroot/creports003.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=1&rptno=$FORM{'rptno'}\">\n";
|
||
|
print "\t<FRAMESET frameborder=0 cols=\"230,*\">\n";
|
||
|
print "\t\t<FRAME name=\"rpttidx003\" frameborder=0 src=\"$urlroot/creports003.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=0\">\n";
|
||
|
print "\t\t<FRAME name=\"rptdtl003\" frameborder=0 src=\"$urlroot/creports003.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=0\">\n";
|
||
|
print "\t</FRAMESET>\n";
|
||
|
print "</FRAMESET>\n";
|
||
|
print "</HTML>\n";
|
||
|
}
|
||
|
|
||
|
sub show_frames_007 {
|
||
|
print "<HTML>\n";
|
||
|
print "<HEAD></HEAD>\n";
|
||
|
print "<FRAMESET frameborder=0 rows=\"30%,*\">\n";
|
||
|
print "\t<FRAME name=\"rptindx007\" frameborder=0 src=\"$urlroot/creports007.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=1&rptno=$FORM{'rptno'}\">\n";
|
||
|
print "\t<FRAMESET frameborder=0 cols=\"30%,*\">\n";
|
||
|
print "\t\t<FRAME name=\"rptqidx007\" frameborder=0 src=\"$urlroot/creports007.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=0\">\n";
|
||
|
print "\t\t<FRAME name=\"rptdtl007\" frameborder=0 src=\"$urlroot/creports007.pl?lang=$SESSION{'lang'}&tid=$SESSION{'tid'}&frm=0\">\n";
|
||
|
print "\t</FRAMESET>\n";
|
||
|
print "</FRAMESET>\n";
|
||
|
print "</HTML>\n";
|
||
|
}
|
||
|
|
||
|
sub print_report_header() {
|
||
|
my $i;
|
||
|
$dform=1;
|
||
|
if ($REPORT{'rptid'} eq 'ACT-C-001') {
|
||
|
# C_001
|
||
|
my ($frm);
|
||
|
$faction="$cgiroot/creports.pl";
|
||
|
if ($FORM{"frm"} == 5) {
|
||
|
$ftarget="rptindex";
|
||
|
$frm=1;
|
||
|
} else {
|
||
|
$ftarget="rptdetail";
|
||
|
$frm=2
|
||
|
}
|
||
|
$fparms="<input type=hidden name=\"tid\" value=\"$SESSION{'tid'}\">\n";
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"frm\" value=\"$frm\">\n");
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"rptno\" value=\"$FORM{'rptno'}\">\n");
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"dbfile\" value=\"\">\n");
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"filter\" value=\"\">\n");
|
||
|
$fjscript="
|
||
|
function parmsC001(oform,dbf,fltr) {
|
||
|
oform.dbfile.value=dbf;
|
||
|
oform.filter.value=fltr;
|
||
|
oform.submit();
|
||
|
}
|
||
|
";
|
||
|
} elsif ($REPORT{'rptid'} eq 'ACT-C-002') {
|
||
|
# C_002
|
||
|
$dform=1;
|
||
|
my $testoptions="";
|
||
|
my $useroptions="";
|
||
|
my $groupoptions="";
|
||
|
my $yroptions="";
|
||
|
my $mooptions="";
|
||
|
my $dayoptions="";
|
||
|
my @flds;
|
||
|
|
||
|
#print STDERR "ACT-C-002: cbcomplete = $FORM{'cbcomplete'}\n";
|
||
|
#print STDERR " cbsort = $FORM{'cbsort'}\n";
|
||
|
my $st = time;
|
||
|
my @tmparray=&get_test_list($CLIENT{'clid'});
|
||
|
#my $end = time;
|
||
|
#my $dl = $end - $st;
|
||
|
#$st = $end;
|
||
|
#print STDERR "get_test_list($CLIENT{'clid'}) - $dl seconds\n";
|
||
|
print "<!-- $CLIENT{'id'} $CLIENT{'clid'} -->\n";
|
||
|
foreach (sort @tmparray[1..$#tmparray]) {
|
||
|
@flds=split(/&/,$_);
|
||
|
$testoptions=join('',$testoptions,"<option value=\"$flds[0]\">$flds[0]\n");
|
||
|
@flds=();
|
||
|
}
|
||
|
#$end = time; #$dl = $end - $st;
|
||
|
#print STDERR " sorting - $dl seconds\n";
|
||
|
#$st = time;
|
||
|
@tmparray=&get_client_cnd_list($CLIENT{'clid'});
|
||
|
#$end = time;
|
||
|
#$dl = $end - $st;
|
||
|
#print STDERR "get_client_cnd_list($CLIENT{'clid'}) - $dl seconds\n";
|
||
|
foreach (sort @tmparray[1..$#tmparray]) {
|
||
|
@flds=split(/&/,$_);
|
||
|
$useroptions=join('',$useroptions,"<option value=\"$flds[0]\">$flds[0]\n");
|
||
|
@flds=();
|
||
|
}
|
||
|
#$end = time;
|
||
|
#$dl = $end - $st;
|
||
|
#print STDERR " sorting - $dl seconds\n";
|
||
|
@tmparray=&get_client_groups($CLIENT{'clid'});
|
||
|
foreach (sort @tmparray[0..$#tmparray]) {
|
||
|
@flds=split(/&/,$_);
|
||
|
$groupoptions=join('',$groupoptions,"<option value=\"$flds[1]\">$flds[2]\n");
|
||
|
@flds=();
|
||
|
}
|
||
|
@tmparray=();
|
||
|
for $i (2000 .. scalar(1900+(localtime(time))[5])) {
|
||
|
$yroptions = join('',"<option value=$i>$i\n",$yroptions);
|
||
|
}
|
||
|
for $i (1 .. 12) { $mooptions = join('',$mooptions,"<option value=$i>$i\n"); }
|
||
|
for $i (1 .. 31) { $dayoptions = join('',$dayoptions,"<option value=$i>$i\n"); }
|
||
|
$faction="$cgiroot/creports.pl";
|
||
|
if ($FORM{'cbcomplete'} eq '') {
|
||
|
$FORM{'cbcomplete'}='2';
|
||
|
$FORM{'cbsort'}='0';
|
||
|
}
|
||
|
if ($FORM{'frm'} eq '5') {
|
||
|
$ftarget="rptdetail";
|
||
|
$fparms="<input type=hidden name=\"frm\" value=\"1\">\n";
|
||
|
if ($FORM{'cbcomplete'} eq '2') {
|
||
|
@optmarks = split(/&/,"&&checked");
|
||
|
} elsif ($FORM{'cbcomplete'} eq '1') {
|
||
|
@optmarks = split(/&/,"&checked&");
|
||
|
} else {
|
||
|
@optmarks = split(/&/,"checked&&");
|
||
|
}
|
||
|
if ($FORM{'cbsort'} eq '0') {
|
||
|
@srtmarks = split(/&/,"checked&");
|
||
|
} else {
|
||
|
@srtmarks = split(/&/,"&checked");
|
||
|
}
|
||
|
$flrtmarks[0] = ($FORM{'cbfiltertest'} ne '') ? "checked" : "&";
|
||
|
$flrtmarks[1] = ($FORM{'cbfilteruser'} ne '') ? "checked" : "&";
|
||
|
$flrtmarks[2] = ($FORM{'cbfilterdate'} ne '') ? "checked" : "&";
|
||
|
$foptions="<TABLE cellpadding=0 cellspacing=0 border=0 width=100\%>
|
||
|
<TR>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT COLOR=\"$SYSTEM{'HEADERCOLOR'}\" size=2>$xlatphrase[919] $xlatphrase[922]</FONT>
|
||
|
</TD>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT COLOR=\"$SYSTEM{'HEADERCOLOR'}\" size=2>$xlatphrase[920]</FONT>
|
||
|
</TD>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT COLOR=\"$SYSTEM{'HEADERCOLOR'}\" size=2>$xlatphrase[921]</FONT>
|
||
|
</TD>
|
||
|
</TR>
|
||
|
<TR>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT size=2>
|
||
|
<input type=radio name=\"cbcomplete\" value=\"2\" $optmarks[2] onClick=\"this.form.submit()\">Completed<br>
|
||
|
</FONT>
|
||
|
</TD>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT size=2>
|
||
|
<input type=radio name=\"cbsort\" value=\"0\" $srtmarks[0] onClick=\"this.form.submit()\">$xlatphrase[919]<br>
|
||
|
</FONT>
|
||
|
</TD>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT size=2>$xlatphrase[919]:
|
||
|
<select name=\"testfilter\" onChange=\"this.form.submit()\">
|
||
|
<option value=\"\">All
|
||
|
$testoptions
|
||
|
</select>
|
||
|
</FONT>
|
||
|
</TD>
|
||
|
</TR>
|
||
|
<TR>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT size=2>
|
||
|
<input type=radio name=\"cbcomplete\" value=\"1\" $optmarks[1] onClick=\"this.form.submit()\">In Progress<br>
|
||
|
</FONT>
|
||
|
</TD>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT size=2>
|
||
|
<input type=radio name=\"cbsort\" value=\"1\" $srtmarks[1] onClick=\"this.form.submit()\">Username<br>
|
||
|
</FONT>
|
||
|
</TD>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT size=2>User:
|
||
|
<select name=\"userfilter\" onChange=\"this.form.submit()\">
|
||
|
<option value=\"\">All
|
||
|
$useroptions
|
||
|
</select>
|
||
|
<nobr>
|
||
|
Group:
|
||
|
<select name=\"groupfilter\" onChange=\"this.form.submit()\">
|
||
|
<option value=\"\">All
|
||
|
$groupoptions
|
||
|
</select>
|
||
|
</FONT>
|
||
|
</TD>
|
||
|
</TR>
|
||
|
<TR>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT size=2>
|
||
|
<input type=radio name=\"cbcomplete\" value=\"0\" $optmarks[0] onClick=\"this.form.submit()\">Pending<br>
|
||
|
</FONT>
|
||
|
</TD>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT size=2>
|
||
|
<input type=radio name=\"cbsort\" value=\"2\" $srtmarks[2] onClick=\"this.form.submit()\">Date<br>
|
||
|
</FONT>
|
||
|
</TD>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT size=2>Date:
|
||
|
<nobr>
|
||
|
<select name=\"yearfilter\" onChange=\"this.form.submit()\">
|
||
|
<option value=\"\">All
|
||
|
$yroptions
|
||
|
</select>
|
||
|
<select name=\"monthfilter\" onChange=\"this.form.submit()\">
|
||
|
<option value=\"\">All
|
||
|
$mooptions
|
||
|
</select>
|
||
|
<select name=\"dayfilter\" onChange=\"this.form.submit()\">
|
||
|
<option value=\"\">All
|
||
|
$dayoptions
|
||
|
</select>
|
||
|
</nobr>
|
||
|
</FONT>
|
||
|
</TD>
|
||
|
</TR>
|
||
|
<TR>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT size=2>\ </FONT>
|
||
|
</TD>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT size=2>\ </FONT>
|
||
|
</TD>
|
||
|
<TD ALIGN=\"left\" VALIGN=\"top\">
|
||
|
<FONT size=2>Email Pattern:
|
||
|
<input type=textbox name=\"emailmask\" value=\"\" size=20 onChange=\"this.form.submit()\">
|
||
|
</FONT>
|
||
|
</TD>
|
||
|
</TR>
|
||
|
</TABLE>\n";
|
||
|
} else {
|
||
|
$ftarget="rptdetail002";
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"frm\" value=\"2\">\n");
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"cbcomplete\" value=\"$FORM{'cbcomplete'}\">\n");
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"cbsort\" value=\"$FORM{'cbsort'}\">\n");
|
||
|
}
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"tid\" value=\"$SESSION{'tid'}\">\n");
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"rptno\" value=\"$FORM{'rptno'}\">\n");
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"dbfile\" value=\"\">\n");
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"location\" value=\"\">\n");
|
||
|
$fjscript="
|
||
|
function parmsC002(oform,dbf,loctn) {
|
||
|
oform.dbfile.value=dbf;
|
||
|
oform.location.value=loctn;
|
||
|
oform.submit();
|
||
|
}
|
||
|
";
|
||
|
} elsif ($REPORT{'rptid'} eq 'ACT-C-003') {
|
||
|
# C_003
|
||
|
$faction="$cgiroot/creports.pl";
|
||
|
$ftarget="rptwindow";
|
||
|
$fparms="<input type=hidden name=\"tid\" value=\"$SESSION{'tid'}\">\n";
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"frm\" value=\"2\">\n");
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"rptno\" value=\"$FORM{'rptno'}\">\n");
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"cndid\" value=\"\">\n");
|
||
|
$fjscript="
|
||
|
function parmsC003(oform,cnd) {
|
||
|
oform.cndid.value=cnd;
|
||
|
oform.submit();
|
||
|
}
|
||
|
";
|
||
|
} elsif ($REPORT{'rptid'} eq 'ACT-C-004') {
|
||
|
# C_004
|
||
|
$faction="$cgiroot/teststats.pl";
|
||
|
$ftarget="rptwindow";
|
||
|
$fparms="<input type=hidden name=\"tid\" value=\"$SESSION{'tid'}\">\n";
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"tstid\" value=\"\">\n");
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"rptdesc\" value=\"$REPORT{'rptdesc'}\">\n");
|
||
|
$fparms=join('',$fparms,"<input type=hidden name=\"rptid\" value=\"$REPORT{'rptid'}\">\n");
|
||
|
$finputs="<table cellpadding=2 border=1>\n";
|
||
|
$finputs=join('',$finputs,"\t<tr>\n\t\t<td colspan=3 align=center valign=top>Advanced Options<br></td>\n</tr>\n");
|
||
|
|
||
|
$finputs=join('',$finputs,"<tr>\n");
|
||
|
$finputs=join('',$finputs,"\t\t<td valign=top><font size=2>\n<i>Question Statistics:</i><br>\n");
|
||
|
$finputs=join('',$finputs,"<input type=radio name=\"testsummary\" value=\"composite\" onClick=\"return reportOptions(this)\"> Question Statistics<br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"showobs\" onClick=\"return reportOptions(this)\"> include inactive questions<br>\n");
|
||
|
#$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"exunans\"> exclude unanswered questions<br>\n");
|
||
|
$unansel = "<select name=minunans>\n";
|
||
|
$unansel .= build_number_select_list(5,20,spread);
|
||
|
$unansel .= "</select>\n";
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<nobr><input type=checkbox name=\"exunans\"> exclude questions with fewer than $unansel responses</nobr><br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"exnoresp\"> exclude No Response from stats<br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<i>User Comments:</i><br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=radio name=\"showcmts\" value=\"donot\" onClick=\"return reportOptions(this)\"> do not include<br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=radio name=\"showcmts\" value=\"withq\" onClick=\"return reportOptions(this)\"> include with question<br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=radio name=\"showcmts\" value=\"atend\" onClick=\"return reportOptions(this)\"> include at end<br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=radio name=\"showcmts\" value=\"atendwonocomm\" onClick=\"return reportOptions(this)\"> include at end without uncommented questions<br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"anoncmts\"> anonymize comments and essay(narrative) responses<br>\n");
|
||
|
$finputs=join('',$finputs,"\t\t</font></td>\n");
|
||
|
|
||
|
$finputs=join('',$finputs,"\t\t<td valign=top><font size=2>\n<i>$xlatphrase[28] $xlatphrase[923]</i><br>\n");
|
||
|
$finputs=join('',$finputs,"<input type=radio name=\"testsummary\" value=\"bycnd\" onClick=\"return reportOptions(this)\"> $xlatphrase[924]<br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"statsbysubj\" onClick=\"return reportOptions(this)\"> $xlatphrase[925]<br>\n");
|
||
|
$finputs=join('',$finputs,"\t\t</font></td>\n");
|
||
|
|
||
|
$finputs=join('',$finputs,"\t\t<td valign=top nowrap><font size=2>\n<i>$xlatphrase[926]:</i><br>");
|
||
|
$finputs=join('',$finputs,"<input type=radio name=\"testsummary\" value=\"extractemail\" onClick=\"return reportOptions(this)\"> $xlatphrase[927]<br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"cndnme\" onClick=\"return reportOptions(this)\"> $xlatphrase[103] $xlatphrase[279]<br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"cndeml\" onClick=\"return reportOptions(this)\"> $xlatphrase[103] $xlatphrase[188]<br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"cndscr\" onClick=\"return reportOptions(this)\"> $xlatphrase[103] $xlatphrase[361]<br>\n");
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"cnddat\" onClick=\"return reportOptions(this)\"> $xlatphrase[163]<br>\n");
|
||
|
if ($CLIENT{'clcnd1'} ne "") {
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"excnd1\" onClick=\"return reportOptions(this)\"> $CLIENT{'clcnd1'}<br>\n");
|
||
|
}
|
||
|
if ($CLIENT{'clcnd2'} ne "") {
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"excnd2\" onClick=\"return reportOptions(this)\"> $CLIENT{'clcnd2'}<br>\n");
|
||
|
}
|
||
|
if ($CLIENT{'clcnd3'} ne "") {
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"excnd3\" onClick=\"return reportOptions(this)\"> $CLIENT{'clcnd3'}<br>\n");
|
||
|
}
|
||
|
if ($CLIENT{'clcnd4'} ne "") {
|
||
|
$finputs=join('',$finputs,"\ \;\ \;\ \;\ \;\ \;<input type=checkbox name=\"excnd4\" onClick=\"return reportOptions(this)\"> $CLIENT{'clcnd4'}<br>\n");
|
||
|
}
|
||
|
### DED 4/6/07 Show pending rather than completed
|
||
|
$finputs=join('',$finputs,"<br>\n");
|
||
|
$finputs=join('',$finputs,"<input type=checkbox name=\"shwpending\" onClick=\"return reportOptions(this)\"> $xlatphrase[932]<br>\n");
|
||
|
|
||
|
$finputs=join('',$finputs,"\t\t</font></td>\n");
|
||
|
$finputs=join('',$finputs,"\t</tr>\n");
|
||
|
|
||
|
$finputs=join('',$finputs,"\t</tr>\n");
|
||
|
$finputs=join('',$finputs,"\t\t<td align=left valign=top> \n");
|
||
|
$finputs=join('',$finputs,"\t\t</td>\n");
|
||
|
$finputs=join('',$finputs,"\t\t<td align=left valign=top colspan=2><font size=2>\n");
|
||
|
### DED 4/6/07 Filter indiv results/extractions by custom fields
|
||
|
$ffinputs = "";
|
||
|
if ($CLIENT{'clcnd1vals'} ne '' ) {
|
||
|
$ffinputs .= &print_clcnd_input($CLIENT{'clid'}, 1, 0, 0);
|
||
|
}
|
||
|
if ($CLIENT{'clcnd2vals'} ne '' ) {
|
||
|
$ffinputs .= &print_clcnd_input($CLIENT{'clid'}, 2, 0, 0);
|
||
|
}
|
||
|
if ($CLIENT{'clcnd3vals'} ne '' ) {
|
||
|
$ffinputs .= &print_clcnd_input($CLIENT{'clid'}, 3, 0, 0);
|
||
|
}
|
||
|
if ($CLIENT{'clcnd4vals'} ne '' ) {
|
||
|
$ffinputs .= &print_clcnd_input($CLIENT{'clid'}, 4, 0, 0);
|
||
|
}
|
||
|
if ($ffinputs ne "") {
|
||
|
$finputs .= "Filter Individual Results or Extractions by:<br>\n";
|
||
|
$finputs .= "<table>\n".$ffinputs."</table>\n";
|
||
|
}
|
||
|
|
||
|
$finputs=join('',$finputs,"\t\t</font></td>\n");
|
||
|
$finputs=join('',$finputs,"\t</tr>\n");
|
||
|
|
||
|
$finputs=join('',$finputs,"\t</tr>\n");
|
||
|
$finputs=join('',$finputs,"\t\t<td align=left valign=top><font size=2>\n");
|
||
|
### DED 10/24/2002
|
||
|
### Added Filter-by-question options
|
||
|
#$finputs=join('',$finputs,"\ \;<br>\n");
|
||
|
$finputs=join('',$finputs,"<input type=checkbox name=\"filterbyques\" onClick=\"return filterCheck(this.form)\"> $xlatphrase[921] $xlatphrase[328]<br>\n");
|
||
|
$finputs=join('',$finputs,"<input type=checkbox name=\"specfilter\" onClick=\"return filterCheck(this.form)\"> $xlatphrase[921] $xlatphrase[928]<br>\n");
|
||
|
$finputs=join('',$finputs,"\t\t</font></td>\n");
|
||
|
$finputs=join('',$finputs,"\t\t<td align=right valign=top><font size=2>\n");
|
||
|
my $j;
|
||
|
$finputs=join('',$finputs,"$xlatphrase[929]: <select name=\"mofm\">\n");
|
||
|
for $i (526 .. 537) {
|
||
|
$j=$i-525;
|
||
|
$finputs=join('',$finputs,"<option value=\"$j\">$xlatphrase[$i]\n");
|
||
|
}
|
||
|
$finputs=join('',$finputs,"</select><select name=\"dyfm\">\n");
|
||
|
for $i (1 .. 31) {
|
||
|
$finputs=join('',$finputs,"<option value=\"$i\">$i\n");
|
||
|
}
|
||
|
$finputs=join('',$finputs,"</select><select name=\"yrfm\">\n");
|
||
|
for $i (2000 .. 2099) {
|
||
|
$finputs=join('',$finputs,"<option value=\"$i\">$i\n");
|
||
|
}
|
||
|
$finputs=join('',$finputs,"</select><br>\n");
|
||
|
$finputs=join('',$finputs,"$xlatphrase[433]: <select name=\"moto\">\n");
|
||
|
for $i (526 .. 537) {
|
||
|
$j=$i-525;
|
||
|
$finputs=join('',$finputs,"<option value=\"$j\">$xlatphrase[$i]\n");
|
||
|
}
|
||
|
$finputs=join('',$finputs,"</select><select name=\"dyto\">\n");
|
||
|
for $i (1 .. 31) {
|
||
|
$finputs=join('',$finputs,"<option value=\"$i\">$i\n");
|
||
|
}
|
||
|
$finputs=join('',$finputs,"</select><select name=\"yrto\">\n");
|
||
|
for $i (2000 .. 2099) {
|
||
|
$finputs=join('',$finputs,"<option value=\"$i\">$i\n");
|
||
|
}
|
||
|
$finputs=join('',$finputs,"</select><br>\n");
|
||
|
$finputs=join('',$finputs,"\t\t</font></td>\n");
|
||
|
$finputs=join('',$finputs,"\t\t<td align=right valign=top><font size=2>\n");
|
||
|
$finputs=join('',$finputs,"<input type=checkbox name=\"export\" onClick=\"return reportOptions(this)\"> $xlatphrase[930]<br>\n");
|
||
|
$finputs=join('',$finputs,"\t\t</font></td>\n");
|
||
|
$finputs=join('',$finputs,"\t</tr>\n");
|
||
|
|
||
|
$finputs=join('',$finputs,"</table>\ \;<br>\n");
|
||
|
$fjscript="
|
||
|
function onWdwLoad() {
|
||
|
var oform=document.rptform1;
|
||
|
oform.mofm.selectedIndex=0;
|
||
|
oform.dyfm.selectedIndex=0;
|
||
|
oform.yrfm.selectedIndex=0;
|
||
|
oform.moto.selectedIndex=oform.moto.options.length-1;
|
||
|
oform.dyto.selectedIndex=oform.dyto.options.length-1;
|
||
|
oform.yrto.selectedIndex=oform.yrto.options.length-1;
|
||
|
oform.testsummary[0].checked=true;
|
||
|
oform.showcmts[0].checked=true;
|
||
|
}
|
||
|
function filterCheck(oform) {
|
||
|
if (oform.specfilter.checked==true || oform.filterbyques.checked==true) {
|
||
|
oform.action=\"$cgiroot/creportsf.pl\";
|
||
|
} else {
|
||
|
oform.action=\"$cgiroot/teststats.pl\";
|
||
|
}
|
||
|
}
|
||
|
function parmsC004(oform,tst) {
|
||
|
oform.tstid.value=tst;
|
||
|
oform.submit();
|
||
|
}
|
||
|
function reportOptions(oinp) {
|
||
|
var oform=oinp.form,idx;
|
||
|
if (oinp.name==\"testsummary\") {
|
||
|
idx=(oform.testsummary[0].checked) ? 0 : -1;
|
||
|
idx=(oform.testsummary[1].checked) ? 1 : idx;
|
||
|
idx=(oform.testsummary[2].checked) ? 2 : idx;
|
||
|
return testsummaryClick(oform,idx);
|
||
|
} else {
|
||
|
if (oinp.name==\"showcmts\") {
|
||
|
idx=(oform.showcmts[0].checked) ? 0 : -1;
|
||
|
idx=(oform.showcmts[1].checked) ? 1 : idx;
|
||
|
idx=(oform.showcmts[2].checked) ? 2 : idx;
|
||
|
idx=(oform.showcmts[3].checked) ? 3 : idx;
|
||
|
return showcmtsClick(oform,idx);
|
||
|
} else {
|
||
|
if (oinp.name==\"statsbysubj\") {
|
||
|
return statsbysubjClick(oform,oinp.checked);
|
||
|
} else {
|
||
|
if (oinp.name==\"showobs\") {
|
||
|
return showobsClick(oform,oinp.checked);
|
||
|
} else {
|
||
|
if (oinp.name==\"export\") {
|
||
|
return exportClick(oform,oinp.checked);
|
||
|
} else {
|
||
|
return dataextractOpts(oform);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
function dataextractOpts(oform) {
|
||
|
if (!(oform.testsummary[2].checked)) {
|
||
|
oform.testsummary[2].checked=true;
|
||
|
oform.showcmts[0].checked=false;
|
||
|
oform.showcmts[1].checked=false;
|
||
|
oform.showcmts[2].checked=false;
|
||
|
oform.showcmts[3].checked=false;
|
||
|
oform.statsbysubj.checked=false;
|
||
|
oform.showobs.checked=false;
|
||
|
oform.exunans.checked=false;
|
||
|
oform.exnoresp.checked=false;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
function testsummaryClick(oform,i) {
|
||
|
if (i==0) {
|
||
|
if (!((oform.showcmts[0].checked) || (oform.showcmts[1].checked)
|
||
|
|| (oform.showcmts[2].checked) || (oform.showcmts[3].checked) )) {
|
||
|
oform.showcmts[0].checked=true;
|
||
|
oform.statsbysubj.checked=false;
|
||
|
oform.showobs.checked=false;
|
||
|
oform.exunans.checked=false;
|
||
|
oform.cndnme.checked=false;
|
||
|
oform.cndeml.checked=false;
|
||
|
oform.exnoresp.checked=false;
|
||
|
if (\"$CLIENT{'clcnd1'}\" != \"\") {
|
||
|
oform.cnd1.checked=false;
|
||
|
}
|
||
|
if (\"$CLIENT{'clcnd2'}\" != \"\") {
|
||
|
oform.cnd2.checked=false;
|
||
|
}
|
||
|
if (\"$CLIENT{'clcnd3'}\" != \"\") {
|
||
|
oform.cnd3.checked=false;
|
||
|
}
|
||
|
if (\"$CLIENT{'clcnd4'}\" != \"\") {
|
||
|
oform.cnd4.checked=false;
|
||
|
}
|
||
|
oform.cndscr.checked=false;
|
||
|
}
|
||
|
} else {
|
||
|
if (i==1) {
|
||
|
oform.showcmts[0].checked=false;
|
||
|
oform.showcmts[1].checked=false;
|
||
|
oform.showcmts[2].checked=false;
|
||
|
oform.showcmts[3].checked=false;
|
||
|
oform.statsbysubj.checked=false;
|
||
|
oform.showobs.checked=false;
|
||
|
oform.exunans.checked=false;
|
||
|
oform.exnoresp.checked=false;
|
||
|
oform.cndnme.checked=false;
|
||
|
oform.cndeml.checked=false;
|
||
|
if (\"$CLIENT{'clcnd1'}\" != \"\") {
|
||
|
oform.cnd1.checked=false;
|
||
|
}
|
||
|
if (\"$CLIENT{'clcnd2'}\" != \"\") {
|
||
|
oform.cnd2.checked=false;
|
||
|
}
|
||
|
if (\"$CLIENT{'clcnd3'}\" != \"\") {
|
||
|
oform.cnd3.checked=false;
|
||
|
}
|
||
|
if (\"$CLIENT{'clcnd4'}\" != \"\") {
|
||
|
oform.cnd4.checked=false;
|
||
|
}
|
||
|
oform.cndscr.checked=false;
|
||
|
} else {
|
||
|
if (i==2) {
|
||
|
oform.showcmts[0].checked=false;
|
||
|
oform.showcmts[1].checked=false;
|
||
|
oform.showcmts[2].checked=false;
|
||
|
oform.showcmts[3].checked=false;
|
||
|
oform.statsbysubj.checked=false;
|
||
|
oform.showobs.checked=false;
|
||
|
oform.exunans.checked=false;
|
||
|
oform.exnoresp.checked=false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
function showcmtsClick(oform,i) {
|
||
|
if (!(oform.testsummary[0].checked)) {
|
||
|
oform.testsummary[0].checked=true;
|
||
|
oform.statsbysubj.checked=false;
|
||
|
oform.showobs.checked=false;
|
||
|
oform.exunans.checked=false;
|
||
|
oform.exnoresp.checked=false;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
function statsbysubjClick(oform,chkd) {
|
||
|
if (chkd) {
|
||
|
if (!(oform.testsummary[1].checked)) {
|
||
|
oform.testsummary[1].checked=true;
|
||
|
oform.showcmts[0].checked=false;
|
||
|
oform.showcmts[1].checked=false;
|
||
|
oform.showcmts[2].checked=false;
|
||
|
oform.showcmts[3].checked=false;
|
||
|
oform.showobs.checked=false;
|
||
|
oform.exunans.checked=false;
|
||
|
oform.exnoresp.checked=false;
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
function showobsClick(oform,chkd) {
|
||
|
if (chkd) {
|
||
|
if (!(oform.testsummary[0].checked)) {
|
||
|
oform.testsummary[0].checked=true;
|
||
|
oform.showcmts[0].checked=true;
|
||
|
oform.statsbysubj.checked=false;
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
function exportClick(oform,chkd) {
|
||
|
return true;
|
||
|
}
|
||
|
window.onload=onWdwLoad;
|
||
|
";
|
||
|
} else {
|
||
|
# C_006
|
||
|
$dform=0;
|
||
|
$fjscript="";
|
||
|
$finputs="";
|
||
|
}
|
||
|
print "<HTML>
|
||
|
<HEAD>
|
||
|
<TITLE>$REPORT{'rptid'} - $REPORT{'rptdesc'}</TITLE>
|
||
|
<SCRIPT language=\"JavaScript\">
|
||
|
<!--
|
||
|
$fjscript
|
||
|
function right(e) {
|
||
|
if (navigator.appName == 'Netscape' && (e.which == 3 || e.which == 2)) {
|
||
|
alert(\"This source and all graphics are proprietary and may not be viewed or copied.\");
|
||
|
return false;
|
||
|
} else {
|
||
|
if (navigator.appName == 'Microsoft Internet Explorer' && (event.button == 2 || event.button == 3)) {
|
||
|
alert(\"This source and all graphics are proprietary and may not be viewed or copied.\");
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
//document.onmousedown=right;
|
||
|
//document.onmouseup=right;
|
||
|
//if (document.layers) window.captureEvents(Event.MOUSEDOWN);
|
||
|
//if (document.layers) window.captureEvents(Event.MOUSEUP);
|
||
|
//window.onmousedown=right;
|
||
|
//window.onmouseup=right;
|
||
|
// -->
|
||
|
</SCRIPT>
|
||
|
</HEAD>
|
||
|
<BODY BACKGROUND=\"$SYSTEM{'BACKGROUND'}\" BGCOLOR=\"$SYSTEM{'BGCOLOR'}\"
|
||
|
TEXT=\"$SYSTEM{'TEXT'}\" LINK=\"$SYSTEM{'LINK'}\"
|
||
|
VLINK=\"$SYSTEM{'VLINK'}\" ALINK=\"$SYSTEM{'ALINK'}\">
|
||
|
";
|
||
|
if ($dform) {
|
||
|
print "<FORM name=\"rptform1\" action=\"$faction\" METHOD=POST target=\"$ftarget\">\n$fparms\n";
|
||
|
}
|
||
|
if (($REPORT{'rptid'} eq 'ACT-C-004') || ($REPORT{'rptid'} eq 'ACT-C-003')) {
|
||
|
print "<TABLE cellpadding=0 cellspacing=0 border=0 width=100\%>
|
||
|
<TR>
|
||
|
<TD VALIGN=\"top\">$CLIENT{'logo'}</TD>
|
||
|
<TD ALIGN=\"right\">
|
||
|
<FONT COLOR=\"$SYSTEM{'HEADERCOLOR'}\" size=2>
|
||
|
<B>$REPORT{'rptdesc'}\ -\ $REPORT{'rptid'}</B><BR>
|
||
|
</FONT>
|
||
|
</TD>
|
||
|
</TR>
|
||
|
</TABLE>
|
||
|
";
|
||
|
} else {
|
||
|
if (($REPORT{'rptid'} ne 'ACT-C-002') || (($REPORT{'rptid'} eq 'ACT-C-002') && ($FORM{'frm'} ne '1'))) {
|
||
|
print "<TABLE cellpadding=0 cellspacing=0 border=0 width=100\%>
|
||
|
<TR>
|
||
|
<TD VALIGN=\"top\">$CLIENT{'logo'}</TD>
|
||
|
</TR>
|
||
|
<TR>
|
||
|
<TD ALIGN=\"center\">
|
||
|
<FONT COLOR=\"$SYSTEM{'HEADERCOLOR'}\" size=2>
|
||
|
<B>$REPORT{'rptdesc'}\ -\ $REPORT{'rptid'}</B><BR>
|
||
|
</FONT>
|
||
|
</TD>
|
||
|
</TR>
|
||
|
</TABLE>
|
||
|
";
|
||
|
}
|
||
|
if (($REPORT{'rptid'} eq 'ACT-C-002') && ($FORM{'frm'} eq '5')) {
|
||
|
print "$foptions\n";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
sub print_report_footer() {
|
||
|
if ($dform) { print "</FORM>\n";}
|
||
|
print "</BODY>\n</HTML>\n";
|
||
|
}
|
||
|
|
||
|
sub print_report_C_001 {
|
||
|
if ($FORM{"frm"} == 5) {
|
||
|
# print the chooser
|
||
|
# Filter by date
|
||
|
my ($j);
|
||
|
print "<Table><tr><td>";
|
||
|
#print "Filter by user <input type=checkbox name=\"specfilter\" onClick=\"return filterCheck(this.form)\"><br>\n";
|
||
|
#print "</td>\n<td>";
|
||
|
print "$xlatphrase[929]: <select name=\"mofm\">\n";
|
||
|
$i = 526; $j = $i-525;
|
||
|
print "<option value=\"$j\" selected>$xlatphrase[$i]\n";
|
||
|
for $i (527 .. 537) {
|
||
|
$j=$i-525;
|
||
|
print "<option value=\"$j\">$xlatphrase[$i]\n";
|
||
|
}
|
||
|
print "</select><select name=\"dyfm\">\n";
|
||
|
$i=1; print "<option value=\"$i\" selected>$i\n";
|
||
|
for $i (2 .. 31) {
|
||
|
print "<option value=\"$i\">$i\n";
|
||
|
}
|
||
|
print "</select><select name=\"yrfm\">\n";
|
||
|
$i = 2000; print "<option value=\"$i\" selected>$i\n";
|
||
|
for $i (2001 .. 2099) {
|
||
|
print "<option value=\"$i\">$i\n";
|
||
|
}
|
||
|
print "</select></td>\n<td>";
|
||
|
print "$xlatphrase[433]: <select name=\"moto\">\n";
|
||
|
for $i (526 .. 536) {
|
||
|
$j=$i-525;
|
||
|
print "<option value=\"$j\">$xlatphrase[$i]\n";
|
||
|
}
|
||
|
$i = 537; $j = $i-525;
|
||
|
print "<option value=\"$j\" selected>$xlatphrase[$i]\n";
|
||
|
print "</select><select name=\"dyto\">\n";
|
||
|
for $i (1 .. 30) {
|
||
|
print "<option value=\"$i\">$i\n";
|
||
|
}
|
||
|
$i=31; print "<option value=\"$i\" selected>$i\n";
|
||
|
print "</select><select name=\"yrto\">\n";
|
||
|
for $i (2000 .. 2036) {
|
||
|
print "<option value=\"$i\">$i\n";
|
||
|
}
|
||
|
$i = 2037; print "<option value=\"$i\" selected>$i\n";
|
||
|
print "</select></td></tr>\n";
|
||
|
# Filter by user/canidate
|
||
|
# Code taken from creports003.pl sub show_index_candidates.
|
||
|
# Unfortunately we couldn't use the subroutine directly since
|
||
|
# it writes the entire webpage, not just the section we need.
|
||
|
my @clrecs = &get_client_cnd_list($CLIENT{'clid'});
|
||
|
my @clnamesort=();
|
||
|
my @clidsort=();
|
||
|
my $namesort;
|
||
|
my $idsort;
|
||
|
for (1 .. $#clrecs) {
|
||
|
$clrecs[$_] =~ s/\n//g;
|
||
|
($id, $pwd, $sal, $nmf, $nmm, $nml) = split(/&/, $clrecs[$_]);
|
||
|
unless (($id eq '') || ($nml eq '')) {
|
||
|
$namesort=join('&',$nml,$nmf,$nmm,$id);
|
||
|
#print STDERR "$SESSION{'clid'}, $SESSION{'uid'}, $SESS{'clid'}, $SESS{'uid'}, $id is the super string\n";
|
||
|
$imaregistrar = &get_a_key("cnd.$SESSION{'clid'}", $SESSION{'uid'}, "registrar");
|
||
|
if ($imaregistrar eq 'Y') {
|
||
|
$mycreator = &get_a_key("cnd.$SESSION{'clid'}", $id, "createdby");
|
||
|
if ($SESSION{'uid'} eq $mycreator) {
|
||
|
push @clnamesort, $namesort;
|
||
|
}
|
||
|
} else {
|
||
|
push @clnamesort, $namesort;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
@clrecs = &get_client_admin_list($CLIENT{'clid'});
|
||
|
foreach (@clrecs) {
|
||
|
s/\n//g;
|
||
|
($uid) = split(/&/, $_);
|
||
|
unless ($uid eq '') {
|
||
|
$namesort = "Admin User&&&$uid";
|
||
|
push @clnamesort, $namesort unless $imaregistrar eq 'Y';;
|
||
|
}
|
||
|
}
|
||
|
@clrecs = sort @clnamesort;
|
||
|
@clnamesort=();
|
||
|
print "<tr><td>\n";
|
||
|
print "$xlatphrase[279]:<SELECT name=\"cndnamesort\" onChange=\"return nameSelect(this.form)\">\n";
|
||
|
print "<OPTION value=\"0\"> </OPTION>\n";
|
||
|
for (0 .. $#clrecs) {
|
||
|
($nml, $nmf, $nmm, $id) = split(/&/, $clrecs[$_]);
|
||
|
$idsort=join('&',$id,$nml,$nmf,$nmm);
|
||
|
push @clidsort, $idsort;
|
||
|
print "<OPTION value=\"$id\">$nml, $nmf $nmm ($id)</OPTION>\n";
|
||
|
}
|
||
|
print "</SELECT>\n";
|
||
|
@clrecs = sort @clidsort;
|
||
|
@clidsort=();
|
||
|
print "</td>\n<td>ID:<SELECT name=\"cndidsort\" onChange=\"return idSelect(this.form)\">\n";
|
||
|
print "<OPTION value=\"0\"> </OPTION>\n";
|
||
|
for (0 .. $#clrecs) {
|
||
|
($id,$nml,$nmf,$nmm) = split(/&/, $clrecs[$_]);
|
||
|
print "<OPTION value=\"$id\">$id - $nml, $nmf $nmm\n";
|
||
|
}
|
||
|
print "</SELECT>\n";
|
||
|
print "</td></tr></table>\n";
|
||
|
print "<input type=\"submit\" value=\"Display\">\n";
|
||
|
} else {
|
||
|
# print the index
|
||
|
opendir(DIR, "$logroot");
|
||
|
@dircon = readdir(DIR);
|
||
|
closedir DIR;
|
||
|
#print STDERR Dumper(\@dircon);
|
||
|
@sdircon = sort {substr($a,5) <=> substr($b,5)} grep(/^sess\./,@dircon);
|
||
|
#print STDERR Dumper(\@sdircon);
|
||
|
my $from = timelocal(0,0,0,$FORM{'dyfm'},$FORM{'mofm'}-1,$FORM{'yrfm'});
|
||
|
my $to = timelocal(0,0,0,$FORM{'dyto'},$FORM{'moto'}-1,$FORM{'yrto'});
|
||
|
foreach $diritem (@sdircon) {
|
||
|
chomp ($diritem);
|
||
|
if ($diritem =~ /sess\.[0-9]/i ) {
|
||
|
@lines = &get_log($diritem);
|
||
|
foreach $line (@lines) {
|
||
|
chomp ($line);
|
||
|
($nm,$vlu)=split(/=/, $line);
|
||
|
$SESS{$nm}=$vlu;
|
||
|
}
|
||
|
if ($FORM{"inc$SESS{'uid'}"}) {
|
||
|
next;
|
||
|
}
|
||
|
my $time = substr($SESS{'tid'}, 0, -4);
|
||
|
if ($time < $from or $time > $to) {
|
||
|
next;
|
||
|
}
|
||
|
if ($FORM{'cndnamesort'} or $FORM{'cndidsort'}) {
|
||
|
if ($SESS{'uid'} ne $FORM{'cndnamesort'} and $SESS{'uid'} ne $FORM{'cndidsort'}) {
|
||
|
next;
|
||
|
}
|
||
|
}
|
||
|
if ($SESS{'clid'} eq $SESSION{'clid'}) {
|
||
|
$tmstr = &format_date_time("yy-mm-dd hh:nn", "1", "-10000", $time);
|
||
|
print "<FONT SIZE=2>$tmstr <A HREF=\"javascript:parmsC001(document.rptform1,\'$SESS{'clid'}.$SESS{'uid'}\',\'$SESS{'tid'}\')\;\">$SESS{'uid'}.$SESS{'clid'}</A></FONT><BR>\n";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
sub candidateNameFromFile {
|
||
|
my ($diritem,$dirid) = @_;
|
||
|
my $cndid;
|
||
|
my $testid;
|
||
|
my $clid;
|
||
|
my $fname;
|
||
|
my @retvals;
|
||
|
my @testinfo;
|
||
|
|
||
|
if ($dirid == 2) {
|
||
|
$fname=join($pathsep,$testcomplete,$diritem);
|
||
|
} elsif ($dirid == 1) {
|
||
|
$fname=join($pathsep,$testinprog,$diritem);
|
||
|
} elsif ($dirid == 0) {
|
||
|
$fname=join($pathsep,$testpending,$diritem);
|
||
|
}
|
||
|
|
||
|
$retvals[0]=0;
|
||
|
$retvals[1]="";
|
||
|
$retvals[2]="";
|
||
|
$retvals[3]="";
|
||
|
#print STDERR "$fname\n";
|
||
|
if (-e $fname and open(TSTFILE, "<$fname")) {
|
||
|
@testinfo = <TSTFILE>;
|
||
|
close TSTFILE;
|
||
|
($clid,$cndid,$testid,$etc) = split(/&/,$testinfo[0]);
|
||
|
#print STDERR "($clid,$cndid,$testid,$etc)\n";
|
||
|
if ((&get_candidate_profile( $clid, $cndid))) {
|
||
|
$retvals[0]=1;
|
||
|
$retvals[1]="$CANDIDATE{'nml'}, $CANDIDATE{'nmf'} $CANDIDATE{'nmm'}";
|
||
|
$retvals[2]=$cndid;
|
||
|
$retvals[3]=$testid;
|
||
|
$retvals[4]=$CANDIDATE{'eml'};
|
||
|
}
|
||
|
}
|
||
|
return @retvals;
|
||
|
}
|
||
|
|
||
|
sub print_report_C_002O {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
sub print_report_C_002I {
|
||
|
my $dirname;
|
||
|
my $diritem;
|
||
|
my @dircon;
|
||
|
my @sdircon;
|
||
|
my @cndflds;
|
||
|
my @lines;
|
||
|
my @sorted;
|
||
|
my $trec;
|
||
|
my $curtst;
|
||
|
my $dirtitle;
|
||
|
my @testdates;
|
||
|
my $iopt;
|
||
|
my $j;
|
||
|
my $optval;
|
||
|
my $qcor;
|
||
|
my $qinc;
|
||
|
my $tscore;
|
||
|
my $filterok;
|
||
|
|
||
|
print "<TABLE border=0 cellpadding=0 cellspacing=0 width=100\%>\n";
|
||
|
if ($FORM{'cbcomplete'} eq '0') {
|
||
|
$dirname=$testpending;
|
||
|
$dirtitle="Tests Pending";
|
||
|
} elsif ($FORM{'cbcomplete'} eq '1') {
|
||
|
$dirname=$testinprog;
|
||
|
$dirtitle="Tests In Progress";
|
||
|
} else {
|
||
|
$dirname=$testcomplete;
|
||
|
$dirtitle="Completed Tests";
|
||
|
}
|
||
|
opendir(DIR, $dirname);
|
||
|
@dircon = readdir(DIR);
|
||
|
closedir DIR;
|
||
|
@sdircon = sort @dircon;
|
||
|
#print STDERR "print_report_C_002I - ".time."\n";
|
||
|
my @cnds = &get_data("cnd.".$SESSION{'clid'});
|
||
|
shift @cnds;
|
||
|
my %cnds;
|
||
|
foreach (@cnds) {
|
||
|
my @flds = split(/&/,$_);
|
||
|
$cnds{$flds[0]} = "$flds[5], $flds[3], $flds[4]";
|
||
|
}
|
||
|
#print STDERR Dumper(\%cnds);
|
||
|
$registrarkey = &get_a_key("cnd.$SESSION{'clid'}", $SESSION{'uid'}, "registrar");
|
||
|
foreach $diritem (@sdircon) {
|
||
|
if ($diritem =~ /\.(tim|history)$/) {next;}
|
||
|
$filterok=0;
|
||
|
chomp ($diritem);
|
||
|
@registrarchk = split(/\./, $diritem);
|
||
|
$percnd_creator = &get_a_key("cnd.$SESSION{'clid'}", $registrarchk[1], "createdby");
|
||
|
if ($registrarkey eq 'Y') {
|
||
|
next unless $SESSION{'uid'} eq $percnd_creator;
|
||
|
}
|
||
|
@cndflds = (0,'','','');
|
||
|
if ($diritem =~ /$SESSION{'clid'}\.([\-\w]+\.[\-\w]+\.[\-\w]+\.[\-\w]+)\.([\-\w]+)/i ) {
|
||
|
($cndflds[2],$cndflds[3]) = ($1,$2);
|
||
|
$filterok=1;
|
||
|
} elsif ($diritem =~ /$SESSION{'clid'}\.([\-\w]+\.[\-\w]+\.[\-\w]+)\.([\-\w]+)/i ) {
|
||
|
($cndflds[2],$cndflds[3]) = ($1,$2);
|
||
|
$filterok=1;
|
||
|
} elsif ($diritem =~ /$SESSION{'clid'}\.([\-\w+\.\-\w]+)\.([\-\w]+)/i ) {
|
||
|
($cndflds[2],$cndflds[3]) = ($1,$2);
|
||
|
$filterok=1;
|
||
|
} elsif ($diritem =~ /$SESSION{'clid'}\.([\-\w]+)\.([\-\w]+)/i ) {
|
||
|
($cndflds[2],$cndflds[3]) = ($1,$2);
|
||
|
$filterok=1;
|
||
|
}
|
||
|
if ($filterok == 1) {
|
||
|
#@cndflds=&candidateNameFromFile($diritem,$FORM{'cbcomplete'});
|
||
|
#$filterok=($cndflds[0] != 0) ? 1 : 0;
|
||
|
if (exists $cnds{$cndflds[2]}) {
|
||
|
$filterok=1;
|
||
|
$cndflds[1] = $cnds{$cndflds[2]};
|
||
|
$cndflds[0] = 1;
|
||
|
} else {
|
||
|
$filterok=0;
|
||
|
}
|
||
|
}
|
||
|
if ($filterok == 1 && $FORM{'groupfilter'} ne '') {
|
||
|
my @grpcnds = &get_group_cnds($SESSION{'clid'}, $FORM{'groupfilter'});
|
||
|
$grpcnds = join(':', @grpcnds);
|
||
|
@grpcnds = ();
|
||
|
$grpcnds = ":$grpcnds:";
|
||
|
}
|
||
|
if ($filterok == 1) {
|
||
|
if ($FORM{'testfilter'} ne '') {
|
||
|
$filterok=($cndflds[3] eq $FORM{'testfilter'}) ? 1 : 0;
|
||
|
}
|
||
|
if ($filterok == 1) {
|
||
|
if ($FORM{'userfilter'} ne '') {
|
||
|
$filterok=($cndflds[2] eq $FORM{'userfilter'}) ? 1 : 0;
|
||
|
}
|
||
|
}
|
||
|
if ($filterok == 1) {
|
||
|
if ($FORM{'groupfilter'} ne '') {
|
||
|
$filterok=($grpcnds =~ /:$cndflds[2]:/i) ? 1 : 0;
|
||
|
}
|
||
|
}
|
||
|
if ($filterok == 1) {
|
||
|
if ($FORM{'emailmask'} ne '') {
|
||
|
$filterok=($cndflds[4] =~ /$FORM{'emailmask'}/i) ? 1 : 0;
|
||
|
}
|
||
|
}
|
||
|
if ($filterok == 1) {
|
||
|
if (($FORM{'yearfilter'} ne '') || ($FORM{'monthfilter'} ne '') || ($FORM{'dayfilter'} ne '')) {
|
||
|
$filterok=1;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if ($filterok == 1) {
|
||
|
if ($FORM{'cbsort'} eq '0') {
|
||
|
$trec = join('&',$cndflds[3],$cndflds[1],$diritem,$cndflds[2]);
|
||
|
push @lines, $trec;
|
||
|
} elsif ($FORM{'cbsort'} eq '1') {
|
||
|
$trec = join('&',$cndflds[1],$cndflds[3],$diritem,$cndflds[2]);
|
||
|
push @lines, $trec;
|
||
|
} else {
|
||
|
if ($FORM{'cbcomplete'} eq '2') {
|
||
|
#print "<!-- getHistoricTests $testcomplete,$CLIENT{'clid'},$cndflds[3],$cndflds[2] -->\n";
|
||
|
@testdates = getHistoricTests($testcomplete,$CLIENT{'clid'},$cndflds[3],$cndflds[2]);
|
||
|
for $iopt (0 .. $#testdates) {
|
||
|
$j=$#testdates-$iopt;
|
||
|
($optval,$qcor,$qinc,$tscore) = split(/&/, $testdates[$j]);
|
||
|
$optdesc = $optval;
|
||
|
$optval =~ s/ /_/g;
|
||
|
$optdesc =~ s/ GMT//g;
|
||
|
$trec = join('&',$cndflds[3],$cndflds[1],$diritem,$cndflds[2],$optdesc);
|
||
|
push @lines, $trec;
|
||
|
#print "<!-- $trec -->\n";
|
||
|
}
|
||
|
@testdates = ();
|
||
|
} else {
|
||
|
$trec = join('&',$cndflds[1],$cndflds[3],$diritem,$cndflds[2]);
|
||
|
push @lines, $trec;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
#print STDERR " - ".time."\n";
|
||
|
@sorted = sort @lines;
|
||
|
@lines = ();
|
||
|
print "<TR><TD align=center><B>$dirtitle</B></td></tr>\n";
|
||
|
if ($FORM{'cbsort'} eq '1') {
|
||
|
print "<TR>\n";
|
||
|
print "<TD>User Name</TD>\n";
|
||
|
print "<TD align=left><FONT SIZE=2>Test/Survey ID</FONT></TD>\n";
|
||
|
print "<TD align=left><FONT SIZE=2>Date</FONT></TD>\n";
|
||
|
print "<TD align=left><FONT SIZE=2>User ID</FONT></TD>\n";
|
||
|
print "<TD align=left><FONT SIZE=2>File Name</FONT></TD>\n";
|
||
|
print "</TR>\n";
|
||
|
} else {
|
||
|
print "<TR>\n";
|
||
|
print "<TD>Test/Survey ID</TD>\n";
|
||
|
print "<TD align=left><FONT SIZE=2>User Name</FONT></TD>\n";
|
||
|
print "<TD align=left><FONT SIZE=2>Date</FONT></TD>\n";
|
||
|
print "<TD align=left><FONT SIZE=2>User ID</FONT></TD>\n";
|
||
|
print "<TD align=left><FONT SIZE=2>File Name</FONT></TD>\n";
|
||
|
print "</TR>\n";
|
||
|
}
|
||
|
my $curtst = "";
|
||
|
for $i (0 .. $#sorted) {
|
||
|
@cndflds = split(/&/,$sorted[$i]);
|
||
|
if ($curtst ne $cndflds[0]) {
|
||
|
print "<TR><TD>$cndflds[0]</TD></TR>\n";
|
||
|
$curtst=$cndflds[0];
|
||
|
}
|
||
|
print "<TR>\n";
|
||
|
print "<TD>\ </TD>\n";
|
||
|
print "<TD align=left><FONT SIZE=2><A HREF=\"javascript:parmsC002(document.rptform1,\'$cndflds[2]\',\'$FORM{'cbcomplete'}\')\;\">$cndflds[1]</A></FONT></TD>\n";
|
||
|
print "<TD align=left><FONT SIZE=2>$cndflds[4]</FONT></TD>\n";
|
||
|
print "<TD align=left><FONT SIZE=2>$cndflds[3]</FONT></TD>\n";
|
||
|
print "<TD align=left><FONT SIZE=2>$cndflds[2]</FONT></TD>\n";
|
||
|
print "</TR>\n";
|
||
|
}
|
||
|
print "</TABLE>\n";
|
||
|
#print STDERR " - ".time."\n";
|
||
|
}
|
||
|
|
||
|
sub print_report_C_003 {
|
||
|
&get_candidate_profile( $SESSION{'clid'}, $SESSION{'uid'} );
|
||
|
if( $CANDIDATE{'grpowner'} eq 'Y' ) {
|
||
|
$isGroupOwner = 1;
|
||
|
} else {
|
||
|
$isGroupOwner = 0;
|
||
|
}
|
||
|
if( $isGroupOwner ) {
|
||
|
@ownerGroups = &get_gradebooks_list( $SESSION{'clid'}, $SESSION{'uid'} );
|
||
|
foreach $group ( @ownerGroups ) {
|
||
|
chop( $group ); # Remove newline character
|
||
|
@fields = split( /&/, $group ); # Separate into fields
|
||
|
$groupId = $fields[1];
|
||
|
push( @groups, $groupId );
|
||
|
$groupNames{$groupId} = $fields[2];
|
||
|
foreach $candidate ( split( /,/, $fields[3] ) ) {
|
||
|
$tempName = join( ':', $groupId, $candidate );
|
||
|
$groupCand{$tempName} = 1;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
@cndrecs = &get_data("cnd.$SESSION{'clid'}");
|
||
|
$flds = shift @cndrecs;
|
||
|
chop ($flds);
|
||
|
@flds = split(/&/, $flds);
|
||
|
$nflds = $#flds;
|
||
|
@myunalphaidx=();
|
||
|
foreach $cndrec (@cndrecs) {
|
||
|
chop ($cndrec);
|
||
|
@fldvals = split(/&/, $cndrec);
|
||
|
for (0 .. $nflds) { $RECFLD{$flds[$_]} = $fldvals[$_];}
|
||
|
$idxline = $RECFLD{'nml'};
|
||
|
# v sac report alpha indexing
|
||
|
$myalpha=uc(substr($idxline,0,1));
|
||
|
unless ( $myalphaindex =~ /.$myalpha/) {
|
||
|
$myalphaindex=join('',$myalphaindex,$myalpha);
|
||
|
push @myunalphaidx, $myalpha;
|
||
|
}
|
||
|
# ^ sac report alpha indexing
|
||
|
$idxline = join('', $idxline, ", ", $RECFLD{'nmf'}, " ", $RECFLD{'nmm'});
|
||
|
$idxline = join('', $idxline, ", ", $RECFLD{'sal'});
|
||
|
$idxline = join('&', $idxline, $RECFLD{'uid'});
|
||
|
if( $isGroupOwner ) {
|
||
|
$cntr = 0;
|
||
|
foreach $group ( @groups ) {
|
||
|
$tempName = join( ':', $group, $RECFLD{'uid'} );
|
||
|
if( defined( $groupCand{$tempName} ) ) {
|
||
|
$idxline2 = join( '&', $group, $idxline );
|
||
|
push( @cndlist, $idxline2 );
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
push( @cndlist, $idxline );
|
||
|
}
|
||
|
} #end foreach
|
||
|
# v sac report alpha indexing
|
||
|
@myalphaidx=sort @myunalphaidx;
|
||
|
@myunalphaidx=();
|
||
|
$myalphaindex="";
|
||
|
foreach $myalpha (@myalphaidx) {
|
||
|
$myalphaindex=join(' ',$myalphaindex,"<a href=\"\#alpha$myalpha\">$myalpha</a>");
|
||
|
}
|
||
|
$myalpha="";
|
||
|
# ^ sac report alpha indexing
|
||
|
print "<CENTER><B>Test/Survey Results by Candidate</B><br>\n";
|
||
|
print "$finputs";
|
||
|
print "<TABLE cellpadding=1 cellspacing=1 border=0 width=\"100\%\">\n";
|
||
|
print "<tr>\n";
|
||
|
print "\t<td colspan=5><HR WIDTH=\"100\%\"></td>\n";
|
||
|
print "</tr>\n";
|
||
|
print "<TR>\n";
|
||
|
print "\t<TD valign=top><B><FONT SIZE=2>Candidate Name</FONT></B></TD>\n";
|
||
|
print "\t<TD valign=top><B><FONT SIZE=2>ID</FONT></B></TD>\n";
|
||
|
print "\t<TD align=right valign=top><B><FONT SIZE=2>Cmp</FONT></B></TD>\n";
|
||
|
print "\t<TD align=right valign=top><B><FONT SIZE=2>InP</FONT></B></TD>\n";
|
||
|
print "\t<TD align=right valign=top><B><FONT SIZE=2>Pnd</FONT></B></TD>\n";
|
||
|
print "</TR>\n";
|
||
|
|
||
|
if( !$isGroupOwner )
|
||
|
{
|
||
|
print "<TR>\n";
|
||
|
print "\t<TD colspan=5><HR WIDTH=\"100\%\"></TD>\n";
|
||
|
print "</TR>\n";
|
||
|
}
|
||
|
@sortedlist = sort {uc($a) cmp uc($b)} @cndlist;
|
||
|
@cndlist = ();
|
||
|
@cndrecs = ();
|
||
|
foreach $cndrec (@sortedlist) {
|
||
|
if( $isGroupOwner ) {
|
||
|
($groupId, $href, $id) = split(/&/, $cndrec);
|
||
|
} else {
|
||
|
($href, $id) = split(/&/, $cndrec);
|
||
|
}
|
||
|
# v sac report alpha indexing
|
||
|
unless (uc(substr($href,0,1)) eq $myalpha ) {
|
||
|
if ($#myalphaidx != -1) {
|
||
|
$myalpha=shift @myalphaidx;
|
||
|
print "<tr><td colspan=5>";
|
||
|
print "<a name=\"alpha$myalpha\">Index:</a>$myalphaindex";
|
||
|
print "</td></tr>";
|
||
|
}
|
||
|
}
|
||
|
# ^ sac report alpha indexing
|
||
|
$testscompleted = CountCndTests($testcomplete, $CLIENT{'clid'},$id);
|
||
|
$testscompleted = CountCndFiles($testcomplete, $CLIENT{'clid'},$id);
|
||
|
$testsinprogress = CountCndFiles($testinprog, $CLIENT{'clid'},$id);
|
||
|
$testspending = CountCndFiles($testpending, $CLIENT{'clid'},$id);
|
||
|
if( ( $isGroupOwner ) && ( $groupId ne $prevGroup ) ) {
|
||
|
$groupName = $groupNames{$groupId};
|
||
|
print "<TR>\n";
|
||
|
print "\t<TD colspan=5><HR WIDTH=\"100\%\"><font size=2><b>Course ID:</b> $groupId<br><b>Course Name:</b>$groupName</font></TD>\n";
|
||
|
print "</TR>\n";
|
||
|
}
|
||
|
print "<TR>\n";
|
||
|
print "\t<TD valign=top><FONT SIZE=2><A HREF=\"javascript:parmsC003(document.rptform1,\'$id\')\;\">$href</A></FONT></td>\n";
|
||
|
print "\t<TD valign=top><FONT SIZE=2>$id</FONT></TD>\n";
|
||
|
print "\t<TD align=right valign=top><FONT SIZE=2>$testscompleted</FONT></TD>\n";
|
||
|
print "\t<TD align=right valign=top><FONT SIZE=2>$testsinprogress</FONT></TD>\n";
|
||
|
print "\t<TD align=right valign=top><FONT SIZE=2>$testspending</FONT></TD>\n";
|
||
|
print "</TR>\n";
|
||
|
|
||
|
$prevGroup = $groupId;
|
||
|
}
|
||
|
@sortedlist = ();
|
||
|
print "</table>\n\n";
|
||
|
}
|
||
|
|
||
|
sub print_report_C_004 {
|
||
|
@trecs = &get_test_list($CLIENT{'clid'}); #tests in an array
|
||
|
@tmptrecs = ();
|
||
|
for (1 .. $#trecs) {
|
||
|
($id, $desc) = split(/&/, $trecs[$_]); #id=testid, descr=test description
|
||
|
$trecs[$_] = join('&', "$desc", "$id"); #reverses the order for some reason
|
||
|
push @tmptrecs, $trecs[$_];
|
||
|
}
|
||
|
@trecs = sort @tmptrecs;
|
||
|
for (0 .. $#trecs) {
|
||
|
($desc,$id) = split(/&/, $trecs[$_]);
|
||
|
$testscompleted = CountTestFiles($testcomplete,$CLIENT{'clid'},$id);
|
||
|
$testsinprogress = CountTestFiles($testinprog, $CLIENT{'clid'},$id);
|
||
|
$testspending = CountTestFiles($testpending, $CLIENT{'clid'},$id);
|
||
|
$href="javascript:parmsC004(document.rptform1,\'$id\')\;";
|
||
|
$tstoption =" <TR>
|
||
|
<TD valign=top><FONT SIZE=2><a href=\"$href\">$id</a></FONT></TD>
|
||
|
<TD valign=top><FONT SIZE=2>$desc</FONT></TD>
|
||
|
<TD align=right valign=top><FONT SIZE=2>$testscompleted</FONT></TD>
|
||
|
<TD align=right valign=top><FONT SIZE=2>$testsinprogress</FONT></TD>
|
||
|
<TD align=right valign=top><FONT SIZE=2>$testspending</FONT></TD>
|
||
|
</TR>\n";
|
||
|
$tstoptions = join('', $tstoptions, $tstoption);
|
||
|
}
|
||
|
print "<CENTER><B>$xlatphrase[919] $xlatphrase[800] $xlatphrase[923]</B><br>
|
||
|
$finputs
|
||
|
<TABLE cellpadding=1 cellspacing=1 border=0 width=\"100\%\">
|
||
|
<TR><TD colspan=5><HR WIDTH=\"100\%\"></TD></TR>
|
||
|
<TR>
|
||
|
<TD valign=top><B><FONT SIZE=1>Test ID</FONT></B></TD>
|
||
|
<TD valign=top><B><FONT SIZE=1>Description</FONT></B></TD>
|
||
|
<TD align=right valign=top><B><FONT SIZE=1>Cmp</FONT></B></TD>
|
||
|
<TD align=right valign=top><B><FONT SIZE=1>InP</FONT></B></TD>
|
||
|
<TD align=right valign=top><B><FONT SIZE=1>Pnd</FONT></B></TD>
|
||
|
</TR>
|
||
|
<TR><TD colspan=5><HR WIDTH=\"100\%\"></TD></TR>
|
||
|
$tstoptions
|
||
|
<TR><TD colspan=5><HR WIDTH=\"100\%\"></TD></TR>
|
||
|
</TABLE>
|
||
|
";
|
||
|
}
|
||
|
|
||
|
sub print_report_C_007 {
|
||
|
@trecs = &get_test_list($CLIENT{'clid'});
|
||
|
@tmptrecs = ();
|
||
|
for (1 .. $#trecs) {
|
||
|
($id, $desc) = split(/&/, $trecs[$_]);
|
||
|
$trecs[$_] = join('&', "$desc", "$id");
|
||
|
push @tmptrecs, $trecs[$_];
|
||
|
}
|
||
|
@trecs = sort @tmptrecs;
|
||
|
for (0 .. $#trecs) {
|
||
|
($desc,$id) = split(/&/, $trecs[$_]);
|
||
|
$testscompleted = CountTestFiles($testcomplete,$CLIENT{'clid'},$id);
|
||
|
$testsinprogress = CountTestFiles($testinprog, $CLIENT{'clid'},$id);
|
||
|
$testspending = CountTestFiles($testpending, $CLIENT{'clid'},$id);
|
||
|
$href="javascript:parmsC004(document.rptform1,\'$id\')\;";
|
||
|
$tstoption =" <TR>
|
||
|
<TD valign=top><FONT SIZE=2><a href=\"$href\">$id</a></FONT></TD>
|
||
|
<TD valign=top><FONT SIZE=2>$desc</FONT></TD>
|
||
|
<TD align=right valign=top><FONT SIZE=2>$testscompleted</FONT></TD>
|
||
|
<TD align=right valign=top><FONT SIZE=2>$testsinprogress</FONT></TD>
|
||
|
<TD align=right valign=top><FONT SIZE=2>$testspending</FONT></TD>
|
||
|
</TR>\n";
|
||
|
$tstoptions = join('', $tstoptions, $tstoption);
|
||
|
}
|
||
|
print "<CENTER><B>Test Question Timing Statistics</B><br>
|
||
|
$finputs
|
||
|
<TABLE cellpadding=1 cellspacing=1 border=0 width=\"100\%\">
|
||
|
<TR><TD colspan=5><HR WIDTH=\"100\%\"></TD></TR>
|
||
|
<TR>
|
||
|
<TD valign=top><B><FONT SIZE=1>Test ID</FONT></B></TD>
|
||
|
<TD valign=top><B><FONT SIZE=1>Description</FONT></B></TD>
|
||
|
<TD align=right valign=top><B><FONT SIZE=1>Cmp</FONT></B></TD>
|
||
|
<TD align=right valign=top><B><FONT SIZE=1>InP</FONT></B></TD>
|
||
|
<TD align=right valign=top><B><FONT SIZE=1>Pnd</FONT></B></TD>
|
||
|
</TR>
|
||
|
<TR><TD colspan=5><HR WIDTH=\"100\%\"></TD></TR>
|
||
|
$tstoptions
|
||
|
<TR><TD colspan=5><HR WIDTH=\"100\%\"></TD></TR>
|
||
|
</TABLE>
|
||
|
";
|
||
|
}
|
||
|
|
||
|
sub show_index {
|
||
|
&log_entry($SESSION{'clid'}, $SESSION{'uid'}, "2", "Exec Report $FORM{'rptno'}");
|
||
|
&get_client_profile($SESSION{'clid'});
|
||
|
&print_report_header();
|
||
|
if ($REPORT{'rptid'} eq 'ACT-C-001') {
|
||
|
&print_report_C_001();
|
||
|
} elsif ($REPORT{'rptid'} eq 'ACT-C-002') {
|
||
|
if ($FORM{'frm'} eq '5') {
|
||
|
&print_report_C_002O();
|
||
|
} else {
|
||
|
&print_report_C_002I();
|
||
|
}
|
||
|
} elsif ($REPORT{'rptid'} eq 'ACT-C-003') {
|
||
|
&print_report_C_003();
|
||
|
} elsif ($REPORT{'rptid'} eq 'ACT-C-004') {
|
||
|
&print_report_C_004();
|
||
|
} elsif ($REPORT{'rptid'} eq 'ACT-C-007') {
|
||
|
&print_report_C_007();
|
||
|
} else {
|
||
|
print "<CENTER>\n";
|
||
|
print "Nothing Selected or Report $FORM{rptno} is not yet available.\n";
|
||
|
print "Please select a report to view from the list.\n";
|
||
|
print "</CENTER>\n";
|
||
|
}
|
||
|
&print_report_footer();
|
||
|
&log_entry($SESSION{'clid'}, $SESSION{'uid'}, "3", "Exec Report $FORM{'rptno'} completed");
|
||
|
}
|
||
|
|
||
|
# ACT-C-001&Login Activity Report
|
||
|
# ACT-C-005&Login Activity by User
|
||
|
# ACT-C-002&Test Activity Report
|
||
|
# ACT-C-003&Test Reports by Candidate
|
||
|
# ACT-C-004&Test Statistics by Test
|
||
|
# ACT-C-006&Test Report by User
|
||
|
|
||
|
sub show_detail {
|
||
|
my $sTitle;
|
||
|
if ($REPORT{'rptid'} eq 'ACT-C-001') {
|
||
|
$sTitle="$REPORT{'rptid'} - Log File $FORM{'dbfile'}";
|
||
|
&print_detail_header($sTitle);
|
||
|
&print_detail_C_001();
|
||
|
} elsif ($REPORT{'rptid'} eq 'ACT-C-002') {
|
||
|
$sTitle="$REPORT{'rptid'} - Test File $FORM{'dbfile'}";
|
||
|
&print_detail_header($sTitle);
|
||
|
&print_detail_C_002();
|
||
|
} elsif ($REPORT{'rptid'} eq 'ACT-C-003') {
|
||
|
$sTitle="$REPORT{'rptid'} - Test Results Summary";
|
||
|
&print_detail_header($sTitle);
|
||
|
&print_detail_C_003();
|
||
|
} elsif ($REPORT{'rptid'} eq 'ACT-C-006') {
|
||
|
$sTitle="$REPORT{'rptid'} - Test Results Summary";
|
||
|
&print_detail_header($sTitle);
|
||
|
&print_detail_C_006();
|
||
|
} else {
|
||
|
$sTitle="$REPORT{'rptid'}";
|
||
|
&print_detail_header($sTitle);
|
||
|
print "Please Select a Report to View from the frame to the left.<BR>\n";
|
||
|
}
|
||
|
&print_report_footer();
|
||
|
}
|
||
|
|
||
|
sub print_detail_header {
|
||
|
my ($sTitle) = @_;
|
||
|
print "<HTML>
|
||
|
<HEAD>
|
||
|
<TITLE>$sTitle</TITLE>
|
||
|
<SCRIPT language=\"JavaScript\">
|
||
|
<!--
|
||
|
function right(e) {
|
||
|
if (navigator.appName == 'Netscape' && (e.which == 3 || e.which == 2)) {
|
||
|
alert(\"This source and all graphics are proprietary and may not be viewed or copied.\");
|
||
|
return false;
|
||
|
} else {
|
||
|
if (navigator.appName == 'Microsoft Internet Explorer' && (event.button == 2 || event.button == 3)) {
|
||
|
alert(\"This source and all graphics are proprietary and may not be viewed or copied.\");
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
document.onmousedown=right;
|
||
|
document.onmouseup=right;
|
||
|
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
|
||
|
if (document.layers) window.captureEvents(Event.MOUSEUP);
|
||
|
window.onmousedown=right;
|
||
|
window.onmouseup=right;
|
||
|
// -->
|
||
|
</SCRIPT>
|
||
|
</HEAD>
|
||
|
<BODY BACKGROUND=\"$SYSTEM{'BACKGROUND'}\" BGCOLOR=\"$SYSTEM{'BGCOLOR'}\"
|
||
|
TEXT=\"$SYSTEM{'TEXT'}\" LINK=\"$SYSTEM{'LINK'}\"
|
||
|
VLINK=\"$SYSTEM{'VLINK'}\" ALINK=\"$SYSTEM{'ALINK'}\">
|
||
|
\n";
|
||
|
}
|
||
|
|
||
|
sub print_detail_C_001 {
|
||
|
&log_entry($SESSION{'clid'}, $SESSION{'uid'}, "2", "Exec Log Report $FORM{'dbfile'}");
|
||
|
print "<H4>$REPORT{'rptid'} - $REPORT{'rptdesc'}</H4><BR>\n";
|
||
|
if ($FORM{'filter'}!='') {
|
||
|
print "<B>Session $FORM{'filter'}</B><BR>\n";
|
||
|
@lines = &get_log("sess.$FORM{'filter'}");
|
||
|
foreach $line (@lines) {
|
||
|
chomp ($line);
|
||
|
print "$line<BR>\n";
|
||
|
}
|
||
|
print "<HR WIDTH=\"100\%\">\n";
|
||
|
}
|
||
|
@lines = &get_log($FORM{'dbfile'});
|
||
|
foreach $line (@lines) {
|
||
|
chomp ($line);
|
||
|
if ($FORM{'filter'}!='') {
|
||
|
if ($line =~ /,$FORM{'filter'},/ ) {
|
||
|
print "$line<BR>\n";
|
||
|
}
|
||
|
} else {
|
||
|
print "$line<BR>\n";
|
||
|
}
|
||
|
}
|
||
|
&log_entry($SESSION{'clid'}, $SESSION{'uid'}, "2", "Exec Log Report $FORM{'dbfile'} completed");
|
||
|
}
|
||
|
|
||
|
sub print_detail_C_002 {
|
||
|
$msg = "";
|
||
|
@locations = ( $testpending, $testinprog, $testcomplete);
|
||
|
$trash = join($pathsep, $locations[$FORM{'location'}], $FORM{'dbfile'});
|
||
|
open (TESTFILE, "<$trash") or $msg="failed";
|
||
|
if ($msg eq 'failed') {
|
||
|
print "Unable to open file.";
|
||
|
} else {
|
||
|
@lines = <TESTFILE>;
|
||
|
close TESTFILE;
|
||
|
if ($trash =~ /$testinprog/ ) {
|
||
|
print "<A HREF=\"\#terminate\">TERMINATE THIS TEST</A><BR>\n";
|
||
|
}
|
||
|
foreach $line (@lines) {
|
||
|
chomp ($line);
|
||
|
print "$line<BR>\n";
|
||
|
}
|
||
|
if ($trash =~ /$testinprog/ ) {
|
||
|
print "<FORM METHOD=POST ACTION=\"$cgiroot/testterm.pl\">\n";
|
||
|
print "<INPUT TYPE=HIDDEN NAME=\"tid\" VALUE=\"$SESSION{'tid'}\">\n";
|
||
|
print "<INPUT TYPE=HIDDEN NAME=\"dbfile\" VALUE=\"$FORM{'dbfile'}\">\n";
|
||
|
print "<A NAME=\"terminate\">Reason for Terminating The Test:</A><BR>\n";
|
||
|
print "<TEXTAREA NAME=\"reason\" ROWS=\"4\" COLS=\"40\"></TEXTAREA><BR>\n";
|
||
|
print "<INPUT TYPE=SUBMIT VALUE=\"Terminate Test\">\n";
|
||
|
print "</FORM>\n";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
sub print_detail_C_003 {
|
||
|
&get_client_profile($SESSION{'clid'});
|
||
|
my @testList = &GetTestsByOwner( $CLIENT{'clid'}, $SESSION{'uid' } );
|
||
|
my @testFields = &GetTestHeader( $CLIENT{'clid'} );
|
||
|
my $searchStr = "";
|
||
|
my $currHash;
|
||
|
my @found=();
|
||
|
|
||
|
&get_candidate_profile( $SESSION{'clid'}, $SESSION{'uid'} );
|
||
|
if( $CANDIDATE{'grpowner'} eq 'Y' )
|
||
|
{
|
||
|
foreach $test ( @testList )
|
||
|
{
|
||
|
#print "$test<p>\n";
|
||
|
chop( $test );
|
||
|
@currField = split( '&', $test );
|
||
|
for( 0 .. $#testFields )
|
||
|
{
|
||
|
$currHash{$testFields[$_]} = $currField[$_];
|
||
|
}
|
||
|
$searchStr = "$searchStr|$currHash{'id'}";
|
||
|
}
|
||
|
$searchStr = substr( $searchStr, 1 );
|
||
|
}
|
||
|
|
||
|
&get_candidate_profile( $SESSION{'clid'}, $FORM{'cndid'});
|
||
|
print "<CENTER><B>Test Results Summary</B><BR>\n";
|
||
|
print "<TABLE cellpadding=\"0\" cellspacing=\"0\" border=0 width=\"100%\">\n";
|
||
|
print "<TR>\n";
|
||
|
print "<TD>\n";
|
||
|
print "$CANDIDATE{'sal'} $CANDIDATE{'nmf'} $CANDIDATE{'nmm'} $CANDIDATE{'nml'}<BR>\n";
|
||
|
print "$CANDIDATE{'adr'}<BR>\n";
|
||
|
print "$CANDIDATE{'cty'}, $CANDIDATE{'ste'} $CANDIDATE{'pst'}<BR>\n";
|
||
|
print "$CANDIDATE{'ctry'}<BR>\n";
|
||
|
print "<\TD>\n";
|
||
|
print "<TD>\n";
|
||
|
print "$CANDIDATE{'eml'}<BR>\n";
|
||
|
print "$CANDIDATE{'cnd1'}<BR>\n";
|
||
|
print "$CANDIDATE{'cnd2'}<BR>\n";
|
||
|
print "$CANDIDATE{'cnd3'}<BR>\n";
|
||
|
print "$CANDIDATE{'cnd4'}<BR>\n";
|
||
|
print "<\TD>\n";
|
||
|
print "<\TR>\n";
|
||
|
print "</TABLE>\n";
|
||
|
|
||
|
print "<TABLE cellpadding=\"3\" cellspacing=\"2\" border=0 width = 100\%>\n";
|
||
|
print "<TR>\n";
|
||
|
print "<TD colspan=7><HR WIDTH=\"100%\"></TD>\n";
|
||
|
print "<\TR>\n";
|
||
|
print "<TR>\n";
|
||
|
print "<TD><B>Date</B></TD>\n";
|
||
|
print "<TD><B>Status</B></TD>\n";
|
||
|
print "<TD><B>Time Stats</B></TD>\n";
|
||
|
print "<TD><B>Test Description</B></TD>\n";
|
||
|
print "<TD align=center NOWRAP><B>$xlatphrase[137]</B></TD>\n";
|
||
|
print "<TD align=center NOWRAP><B>Incorrect</B></TD>\n";
|
||
|
print "<TD align=center NOWRAP><B>Score</B></TD>\n";
|
||
|
print "<\TR>\n";
|
||
|
print "<TR>\n";
|
||
|
print "<TD colspan=7><HR WIDTH=\"100%\"></TD>\n";
|
||
|
print "<\TR>\n";
|
||
|
|
||
|
@tstoptions = ();
|
||
|
opendir (GDIR, $testinprog);
|
||
|
@rdots = readdir(GDIR);
|
||
|
closedir GDIR;
|
||
|
#ADT v limit groupowner viewing of testids, copied code section from 106
|
||
|
$replaceStr = "$CLIENT{'clid'}.$CANDIDATE{'uid'}.";
|
||
|
$myRmMask = "$CLIENT{'clid'}.$CANDIDATE{'uid'}.($searchStr)";
|
||
|
$rrmmask = $myRmMask;
|
||
|
|
||
|
@found = grep(/^$rrmmask/i, @rdots);
|
||
|
@rdots = sort @found;
|
||
|
@found=();
|
||
|
|
||
|
foreach $rmfile (@rdots) {
|
||
|
if ($rmfile =~ /$rrmmask/i ) {
|
||
|
#print "<font color=\"#ff0000\">$rmfile - $rrmmask</font><br>\n";
|
||
|
$trash = join($pathsep, $testinprog, $rmfile);
|
||
|
open (TMPFILE, "<$trash");
|
||
|
$mtime = (stat(TMPFILE))[9];
|
||
|
close TMPFILE;
|
||
|
$completedat = &format_date_time("yyyy-mm-dd hh:nn", "2", "-10000", $mtime);
|
||
|
$tstid = $rmfile;
|
||
|
$tstid =~ s/$replaceStr//g;
|
||
|
#ADT ^
|
||
|
#$trash = join($pathsep, $testcomplete, "$CLIENT{'clid'}.$CANDIDATE{'uid'}.$tstid.tim");
|
||
|
#$timestats = "<a href=\"$cgiroot/creports007.pl?tid=$SESSION{'tid'}&clid=$CLIENT{'clid'}&cndid=$CANDIDATE{'uid'}&tstid=$tstid&frm=4\" TARGET=\"testreport\">Times</a>";
|
||
|
#open (TMPFILE, "<$trash") or $timestats="";
|
||
|
#close TMPFILE;
|
||
|
|
||
|
&get_test_sequence( $CLIENT{'clid'}, $CANDIDATE{'uid'}, $tstid, $testinprog);
|
||
|
$state = $TEST_SESSION{'state'};
|
||
|
($tstate, $tseq, $tqst) = split(/\./, $state);
|
||
|
&get_test_profile($CLIENT{'clid'}, $TEST{'id'});
|
||
|
$tstoption = "<TR>
|
||
|
<TD valign=top NOWRAP>$completedat</TD>
|
||
|
<TD valign=top>$TEST_STATE_DESCRIPTION{$tstate}<BR>Segment:$TEST_SEGMENT_DESCRIPTION{$tseq}<BR>Question:$tqst</TD>
|
||
|
<TD valign=top NOWRAP>$timestats</TD>
|
||
|
<TD valign=top NOWRAP>$TEST{'desc'}</TD>
|
||
|
<TD valign=top align=center></TD>
|
||
|
<TD valign=top align=center></TD>
|
||
|
<TD valign=top align=center></TD>
|
||
|
<\TR>\n";
|
||
|
push @tstoptions, $tstoption;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
opendir (GDIR, $testpending);
|
||
|
@rdots = readdir(GDIR);
|
||
|
closedir GDIR;
|
||
|
#ADT v groupowner filter
|
||
|
#$rrmmask = "$CLIENT{'clid'}.$CANDIDATE{'uid'}.";
|
||
|
$replaceStr = "$CLIENT{'clid'}.$CANDIDATE{'uid'}.";
|
||
|
$rrmmask = $myRmMask;
|
||
|
|
||
|
@found = grep(/^$rrmmask/i, @rdots);
|
||
|
@rdots = sort @found;
|
||
|
@found=();
|
||
|
|
||
|
foreach $rmfile (@rdots) {
|
||
|
if ($rmfile =~ /$rrmmask/i ) {
|
||
|
#print "<font color=\"#ff0000\">$rmfile - $rrmmask</font><br>\n";
|
||
|
$trash = join($pathsep, $testpending, $rmfile);
|
||
|
#print "$trash<p>\n";
|
||
|
open (TMPFILE, "<$trash");
|
||
|
$mtime = (stat(TMPFILE))[9];
|
||
|
close TMPFILE;
|
||
|
$completedat = &format_date_time("yyyy-mm-dd hh:nn", "2", "-10000", $mtime);
|
||
|
$tstid = $rmfile;
|
||
|
$tstid =~ s/$replaceStr//g;
|
||
|
#ADT ^
|
||
|
#wac merge ^ (selected lines, since rrmfile wasn't part of original code)
|
||
|
&get_test_sequence( $CLIENT{'clid'}, $CANDIDATE{'uid'}, $tstid, $testpending);
|
||
|
&get_test_profile($CLIENT{'clid'}, $TEST{'id'});
|
||
|
$tstoption = "<TR>
|
||
|
<TD valign=top NOWRAP>$completedat</TD>
|
||
|
<TD valign=top>$TEST_STATE_DESCRIPTION{0}</TD>
|
||
|
<TD valign=top NOWRAP></TD>
|
||
|
<TD valign=top NOWRAP>$TEST{'desc'}</TD>
|
||
|
<TD colspan=3 valign=top align=left>
|
||
|
Print\ \;
|
||
|
<A HREF=\"$cgiroot/tmaster.pl?tid=$SESSION{'tid'}&clid=$CLIENT{'clid'}&cndid=$CANDIDATE{'uid'}&tstid=$TEST{'id'}\" TARGET=\"prtwindow\">Master/Key</A>
|
||
|
</TD>
|
||
|
<\TR>\n";
|
||
|
push @tstoptions, $tstoption;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
opendir (GDIR, $testcomplete);
|
||
|
@rdots = readdir(GDIR);
|
||
|
closedir GDIR;
|
||
|
#ADT v groupowner filter
|
||
|
#$rrmmask = "$CLIENT{'clid'}.$CANDIDATE{'uid'}.";
|
||
|
$replaceStr = "$CLIENT{'clid'}.$CANDIDATE{'uid'}.";
|
||
|
$rrmmask = $myRmMask;
|
||
|
|
||
|
@found = grep(/^$rrmmask/i, @rdots);
|
||
|
@rdots = sort @found;
|
||
|
@found=();
|
||
|
|
||
|
foreach $rmfile (@rdots) {
|
||
|
if ($rmfile =~ /$rrmmask/i ) {
|
||
|
#print "<font color=\"#ff0000\">$rmfile - $rrmmask</font><br>\n";
|
||
|
$trash = join($pathsep, $testcomplete, $rmfile);
|
||
|
open (TMPFILE, "<$trash");
|
||
|
$mtime = (stat(TMPFILE))[9];
|
||
|
close TMPFILE;
|
||
|
$completedat = &format_date_time("yyyy-mm-dd hh:nn", "2", "-10000", $mtime);
|
||
|
$tstid = $rmfile;
|
||
|
#####
|
||
|
@mysegs=split(/\./, $rmfile);
|
||
|
$mysegcnt = $#mysegs;
|
||
|
|
||
|
@myclidsegs=split(/\./, $CLIENT{'clid'});
|
||
|
$myclidsegcnt=$#myclidsegs+1;
|
||
|
@myclidsegs=();
|
||
|
$myclid=$mysegs[0];
|
||
|
$mytstid=$mysegs[$mysegcnt];
|
||
|
$mysegcnt--;
|
||
|
$mycndid="";
|
||
|
$mysegjoint="";
|
||
|
for ($myclidsegcnt .. $mysegcnt) {
|
||
|
$mycndid=join($mysegjoint,$mycndid,$mysegs[$_]);
|
||
|
$mysegjoint=".";
|
||
|
}
|
||
|
$CANDIDATE{'uid'}=$mycndid;
|
||
|
$tstid=$mytstid;
|
||
|
#ADT ^
|
||
|
#$trash = join($pathsep, $testcomplete, "$CLIENT{'clid'}.$CANDIDATE{'uid'}.$tstid.tim");
|
||
|
#$timestats = "<a href=\"$cgiroot/creports007.pl?tid=$SESSION{'tid'}&clid=$CLIENT{'clid'}&cndid=$CANDIDATE{'uid'}&tstid=$tstid&frm=4\" TARGET=\"testreport\">Times</a>";
|
||
|
#open (TMPFILE, "<$trash") or $timestats="";
|
||
|
#close TMPFILE;
|
||
|
|
||
|
#wac ^ merge selected lines.
|
||
|
&get_test_sequence( $CLIENT{'clid'}, $CANDIDATE{'uid'}, $tstid, $testcomplete);
|
||
|
($correctans, $incorrectans, $score, $trash) = split(/&/, $SUBTEST_SUMMARY{2});
|
||
|
$state = $TEST_SESSION{'state'};
|
||
|
($tstate, $tseq, $tqst) = split(/\./, $state);
|
||
|
&get_test_profile($CLIENT{'clid'}, $TEST{'id'});
|
||
|
$tstoption = "<TR>
|
||
|
<TD valign=top NOWRAP>$completedat</TD>
|
||
|
<TD valign=top>$TEST_STATE_DESCRIPTION{$tstate}</TD>
|
||
|
<TD valign=top NOWRAP>$timestats</TD>
|
||
|
<TD valign=top NOWRAP><a href=\"$cgiroot/testreport.pl?tid=$SESSION{'tid'}&clid=$CLIENT{'clid'}&cndid=$CANDIDATE{'uid'}&tstid=$tstid\" TARGET=\"testreport\">$TEST{'desc'}</a></TD>
|
||
|
<TD valign=top align=center>$correctans</TD>
|
||
|
<TD valign=top align=center>$incorrectans</TD>
|
||
|
<TD valign=top align=center>$score\%</TD>
|
||
|
<\TR>\n";
|
||
|
push @tstoptions, $tstoption;
|
||
|
}
|
||
|
}
|
||
|
@sorted = sort @tstoptions;
|
||
|
@tstoptions = ();
|
||
|
for (0 .. $#sorted) {
|
||
|
print $sorted[$_];
|
||
|
}
|
||
|
@sorted = ();
|
||
|
print "</TABLE>\n";
|
||
|
}
|
||
|
|
||
|
sub print_detail_C_006 {
|
||
|
&get_client_profile($SESSION{'clid'});
|
||
|
&get_candidate_profile( $SESSION{'clid'}, $FORM{'cndid'});
|
||
|
print "<CENTER><B>Test Results Summary</B><BR>\n";
|
||
|
print "<TABLE cellpadding=\"0\" cellspacing=\"0\" border=0 width=\"100%\">\n";
|
||
|
print "<TR>\n";
|
||
|
print "<TD>\n";
|
||
|
print "$CANDIDATE{'sal'} $CANDIDATE{'nmf'} $CANDIDATE{'nmm'} $CANDIDATE{'nml'}<BR>\n";
|
||
|
print "$CANDIDATE{'adr'}<BR>\n";
|
||
|
print "$CANDIDATE{'cty'}, $CANDIDATE{'ste'} $CANDIDATE{'pst'}<BR>\n";
|
||
|
print "$CANDIDATE{'ctry'}<BR>\n";
|
||
|
print "<\TD>\n";
|
||
|
print "<TD>\n";
|
||
|
print "$CANDIDATE{'eml'}<BR>\n";
|
||
|
print "$CANDIDATE{'cnd1'}<BR>\n";
|
||
|
print "$CANDIDATE{'cnd2'}<BR>\n";
|
||
|
print "$CANDIDATE{'cnd3'}<BR>\n";
|
||
|
print "$CANDIDATE{'cnd4'}<BR>\n";
|
||
|
print "<\TD>\n";
|
||
|
print "<\TR>\n";
|
||
|
print "</TABLE>\n";
|
||
|
|
||
|
print "<TABLE cellpadding=\"3\" cellspacing=\"2\" border=0 width = 100\%>\n";
|
||
|
print "<TR>\n";
|
||
|
print "<TD colspan=6><HR WIDTH=\"100%\"></TD>\n";
|
||
|
print "<\TR>\n";
|
||
|
print "<TR>\n";
|
||
|
print "<TD><B>Date</B></TD>\n";
|
||
|
print "<TD><B>Status Information</B></TD>\n";
|
||
|
print "<TD><B>Test Description</B></TD>\n";
|
||
|
print "<TD align=center NOWRAP><B>$xlatphrase[137]</B></TD>\n";
|
||
|
print "<TD align=center NOWRAP><B>Incorrect</B></TD>\n";
|
||
|
print "<TD align=center NOWRAP><B>Score</B></TD>\n";
|
||
|
print "<\TR>\n";
|
||
|
print "<TR>\n";
|
||
|
print "<TD colspan=6><HR WIDTH=\"100%\"></TD>\n";
|
||
|
print "<\TR>\n";
|
||
|
|
||
|
@tstoptions = ();
|
||
|
opendir (GDIR, $testcomplete);
|
||
|
@rdots = readdir(GDIR);
|
||
|
closedir GDIR;
|
||
|
$rrmmask = "$CLIENT{'clid'}.$CANDIDATE{'uid'}.";
|
||
|
foreach $rrmfile (@rdots) {
|
||
|
if ($rrmfile =~ /$rrmmask/ ) {
|
||
|
$trash = join($pathsep, $testcomplete, $rrmfile);
|
||
|
open (TMPFILE, "<$trash");
|
||
|
$mtime = (stat(TMPFILE))[9];
|
||
|
close TMPFILE;
|
||
|
$completedat = &format_date_time("yyyy-mm-dd hh:nn", "2", "-10000", $mtime);
|
||
|
$tstid = $rrmfile;
|
||
|
$tstid =~ s/$rrmmask//g;
|
||
|
&get_test_sequence( $CLIENT{'clid'}, $CANDIDATE{'uid'}, $tstid, $testcomplete);
|
||
|
($correctans, $incorrectans, $score, $trash) = split(/&/, $SUBTEST_SUMMARY{2});
|
||
|
$state = $TEST_SESSION{'state'};
|
||
|
($tstate, $tseq, $tqst) = split(/\./, $state);
|
||
|
&get_test_profile($CLIENT{'clid'}, $TEST{'id'});
|
||
|
$tstoption = "<TR>
|
||
|
<TD valign=top NOWRAP>$completedat</TD>
|
||
|
<TD valign=top>$TEST_STATE_DESCRIPTION{$tstate}</TD>
|
||
|
<TD valign=top NOWRAP><a href=\"$cgiroot/testreport.pl?tid=$SESSION{'tid'}&clid=$CLIENT{'clid'}&cndid=$CANDIDATE{'uid'}&tstid=$tstid\" TARGET=\"rptdetail\">$TEST{'desc'}</a></TD>
|
||
|
<TD valign=top align=center>$correctans</TD>
|
||
|
<TD valign=top align=center>$incorrectans</TD>
|
||
|
<TD valign=top align=center>$score\%</TD>
|
||
|
<\TR>\n";
|
||
|
push @tstoptions, $tstoption;
|
||
|
}
|
||
|
}
|
||
|
@sorted = sort @tstoptions;
|
||
|
@tstoptions = ();
|
||
|
for (0 .. $#sorted) {
|
||
|
print $sorted[$_];
|
||
|
}
|
||
|
@sorted = ();
|
||
|
print "</TABLE>\n";
|
||
|
}
|
||
|
|
||
|
################################################################################
|
||
|
#
|
||
|
# Subroutine Name
|
||
|
# GetTestHeader
|
||
|
#
|
||
|
# Description
|
||
|
# This subroutine returns the header of the test file
|
||
|
#
|
||
|
# Inputs
|
||
|
# $clientId -- The id of the client to search through
|
||
|
#
|
||
|
# Outputs
|
||
|
# None
|
||
|
#
|
||
|
# Returns
|
||
|
# @testFields -- An array of fields in the header
|
||
|
#
|
||
|
#adt080401###############################################################################
|
||
|
sub GetTestHeader
|
||
|
{
|
||
|
my $clientId = $_[0];
|
||
|
my @testList = &get_data("tests.$clientId");
|
||
|
my $testHdr = $testList[0];
|
||
|
my $testFields;
|
||
|
|
||
|
chop( $testHdr );
|
||
|
@testFields = split( /&/, $testHdr );
|
||
|
|
||
|
return @testFields;
|
||
|
}
|
||
|
|
||
|
|
||
|
#adt080401###############################################################################
|
||
|
#
|
||
|
# Subroutine Name
|
||
|
# GetTestsByOwner
|
||
|
#
|
||
|
# Description
|
||
|
# This subroutine searches through the test definition file of the given
|
||
|
# client for all the tests that are owned by the given user id or are public
|
||
|
#
|
||
|
# Inputs
|
||
|
# $clientId -- The id of the client to search through
|
||
|
# $ownedBy -- The name of the owner of the test to search for
|
||
|
#
|
||
|
# Outputs
|
||
|
# None
|
||
|
#
|
||
|
# Returns
|
||
|
# @tests -- An array of tests owned by the given user id
|
||
|
#
|
||
|
################################################################################
|
||
|
sub GetTestsByOwner
|
||
|
{
|
||
|
my $clientId = $_[0];
|
||
|
my $ownedBy = $_[1];
|
||
|
my %currHash;
|
||
|
my @testList = &get_data("tests.$clientId");
|
||
|
my @currField;
|
||
|
my @tests;
|
||
|
my $testHdr = $testList[0];
|
||
|
my $testFields;
|
||
|
my $testCntr;
|
||
|
|
||
|
@testFields = &GetTestHeader( $clientId );
|
||
|
|
||
|
for( $testCntr = 1; $testCntr < $#testList; $testCntr++ )
|
||
|
{
|
||
|
#print "<b>$testList[$testCntr]</b><br>\n";
|
||
|
chop( $testList[$testCntr] );
|
||
|
@currField = split( '&', $testList[$testCntr] );
|
||
|
for( 0 .. $#testFields )
|
||
|
{
|
||
|
$currHash{$testFields[$_]} = $currField[$_];
|
||
|
}
|
||
|
|
||
|
#print "$currHash{'ownedby'} - $ownedBy<p>";
|
||
|
if( ( $currHash{'ownedby'} eq $ownedBy ) || ( $currHash{'ownedby'} eq "" ) )
|
||
|
{
|
||
|
push( @tests, $testList[$testCntr] );
|
||
|
#print "<font color=\"#ff0000\"><b>$testList[$testCntr]</b></font><br>\n";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return @tests;
|
||
|
}
|