#! /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 "

"; print $lex{'View/Download Cumulative Mark Report'}. "

\n"; print "[ ". $lex{Main}. " |\n"; print "". $lex{'View Log File'}. " ]\n"; print "
\n";