#! /usr/bin/perl
# Copyright 2001-2008 Leslie Richardson
# This file is part of Open Admin for Schools.
# Open Admin for Schools is free software; you can redistribute it
# and/or modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
# Report student final marks - 1 page per student.
my %lex = ('Cumulative Mark Report' => 'Cumulative Mark Report',
'Main' => 'Main',
'View Log File' => 'View Log File',
'View/Download Cumulative Mark Report' => 'View/Download Cumulative Mark Report',
'School Year' => 'School Year',
'Grade' => 'Grade',
'Report Card' => 'Report Card',
'Error' => 'Error',
);
use DBI;
use CGI;
my $q = new CGI;
my %arr = $q->Vars;
print $q->header;
# Read config variables
eval require "../../etc/admin.conf";
if ( $@ ) {
print $lex{Error}. " $@ \n";
die $lex{Error}. " $@\n";
}
eval require "../../lib/liblatex.pl";
if ( $@ ) {
print $lex{Error}. " $@ \n";
die $lex{Error}. " $@\n";
}
# in order to get the additional comments value.
eval require "../../etc/repcard.conf";
if ( $@ ) {
print $lex{Error}. " $@ \n";
die $lex{Error}. " $@\n";
}
my ($sec, $min, $hour, $mday, $mon, $year, $wday,
$yday, $iddst) = localtime(time);
$year = $year + 1900;
$mon++; $wday++;
my $currdate = "$dow[$wday], $month[$mon] $mday, $year";
print "$doctype\n
". $lex{'Cumulative Mark Report'}. "
$chartype\n\n";
print "[ ". $lex{Main}. " |\n";
print "". $lex{'Report Card'}. " ]\n";
my $dsn = "DBI:$dbtype:dbname=$dbase";
my $dbh = DBI->connect($dsn,$user,$password);
my $logfile = "pdflog$$.txt";
my $shortname = "studfnlmark$$";
my $fileName = "$shortname.tex";
open(TEX,">$fileName") || die "Can't open tex file";
my $papersize;
if ( $defaultpapersize ) {
$papersize = $defaultpapersize;
} else {
$papersize = 'letterpaper';
}
print TEX "\\documentclass[12pt,$papersize]{article}
\\usepackage{array, inputenc}
%\\usepackage[pdftex,bookmarks=false,pdfstartview=FitH]{hyperref}
\\inputencoding{latin1}
\\renewcommand{\\familydefault}{\\sfdefault}
\\setlength{\\textwidth}{7.50in}
\\setlength{\\textheight}{10in}
\\setlength{\\hoffset}{-1in}
\\setlength{\\voffset}{-0.5in}
\\setlength{\\topmargin}{0in}
\\setlength{\\extrarowheight}{4pt}
\\addtolength{\\evensidemargin}{0in}
\\addtolength{\\oddsidemargin}{0in}";
print TEX "\\begin{document}\n
\\pagestyle{empty}\n";
print TEX "\\begin{center}\n";
my $sortorder = "grade desc, lastname, firstname";
my $sth = $dbh->prepare("select studnum,lastname, firstname, grade from student
order by $sortorder");
$sth->execute;
if ($DBI::errstr) { print $DBI::errstr; die $DBI::errstr; }
# Loop through each student
while ( my ( $studnum, $lastname, $firstname, $grade ) = $sth->fetchrow ) {
print TEX "{\\LARGE ". $lex{'Cumulative Mark Report'}. " }\n\n\\medskip\n\n";
print TEX "{\\Large $schoolname}\n\n";
print TEX "{$schoolyear} ". $lex{'School Year'}. "\n\n";
print TEX "$currdate\n\n\\bigskip\n\n";
print TEX "{\\Large\\it $firstname $lastname ($studnum)}\n\n";
print TEX $lex{Grade}. ": $grade\n\n\\bigskip";
print TEX "\n\\begin{tabular}{|l|l|}\\hline\n\n";
# Loop through their subjects.
$sth1 = $dbh->prepare("select distinct eval.subjcode, subject.description,
subject.endrptperiod from eval
left outer join subject on eval.subjcode = subject.subjsec
where studnum = ? and subject.description != '$additionalcomments'
order by subject.description");
$sth1->execute($studnum);
if ($DBI::errstr) {print $DBI::errstr; die $DBI::errstr; }
while ( my ( $subjcode, $description, $term) = $sth1->fetchrow ){
($description) = latex_filter($description);
$sth2 = $dbh->prepare("select $markfield from eval where
eval.term = ? and studnum = ? and subjcode = ?");
$sth2->execute( $term, $studnum, $subjcode );
if ($DBI::errstr) { print $DBI::errstr; die $DBI::errstr; }
my $mark = $sth2->fetchrow;
$mark =~ s/%//;
# Now print the record
print TEX "$description ($subjcode) & $mark \\\\ \\hline\n";
}
print TEX "\\end{tabular}\n\\newpage\n";
} # End of Student loop
print TEX "\\end{center}\\end{document}";
close TEX;
system("$pdflatex $fileName > $logfile");
system("mv $shortname.pdf $downloaddir");
system("mv $logfile $downloaddir");
system("rm -f $shortname.*");
print "