#! /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.
my %lex = ('Main' => 'Main',
'Student Roster' => 'Student Roster',
'View/Download' => 'View/Download',
'View Log File' => 'View Log File',
'Cannot open' => 'Cannot open',
'Error' => 'Error',
'Homeroom' => 'Homeroom',
'Firstname' => 'Firstname',
'Lastname' => 'Lastname',
'Sort by' => 'Sort by',
);
my $self = 'rptstudrost.pl';
use DBI;
use CGI;
# Change to change number of records you want on each page, if you
# change the template for your school
my $recordsPerPage = 2;
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";
}
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{'Student Roster'}. " - Pdf
$chartype\n\n";
print "[ ". $lex{Main}. " ]\n";
# Do a sortorder form
print "\n";
my $dsn = "DBI:$dbtype:dbname=$dbase";
my $dbh = DBI->connect($dsn,$user,$password);
# Read in Template
unless (open (FH,"<../template/rptstudrost.tpl")) {
print $lex{'Cannot open'}. " template - $!\n";
die $lex{'Cannot open'}. " template - $!\n";
}
my $template;
{ local $/; $template = ; close FH;}
# Get Meta values: fieldid and arrayidx
$sth = $dbh->prepare("select fieldid, arrayidx from meta
where tableid = 'student' order by arrayidx");
$sth->execute;
if ($DBI::errstr) { print $DBI::errstr; die $DBI::errstr; }
while (my ($fieldid, $arrayidx) = $sth->fetchrow) {
$meta[$arrayidx] = $fieldid;
}
my $shortname = "studrost$$";
my $filename = "$shortname.tex";
open(TEX,">$filename") || die $lex{'Cannot open'}. " tex file\n";
my $papersize;
if ( $defaultpapersize ) {
$papersize = $defaultpapersize;
} else {
$papersize = 'letterpaper';
}
print TEX "\\documentclass[10pt,$papersize]{article}
\\usepackage{newcent,graphicx,array,colortbl,inputenc}
\\inputencoding{latin1}
\\renewcommand{\\familydefault}{\\sfdefault}
\\usepackage[pdftex,bookmarks=false,pdfstartview=FitH]{hyperref}
\\setlength{\\textwidth}{7.50in}
\\setlength{\\textheight}{10.5in}
\\setlength{\\hoffset}{-0.5in}
\\setlength{\\voffset}{-1in}
\\setlength{\\topmargin}{0in}
\\setlength{\\evensidemargin}{0in}
\\setlength{\\oddsidemargin}{0in}
\\setlength{\\extrarowheight}{4pt}
\\begin{document}
\\pagestyle{empty}\n";
print TEX $lex{'Student Roster'}. " - {\\LARGE $schoolname }";
print TEX " \\hfill $currdate\n\\bigskip\n\n";
my $sortorder = "lastname, firstname";
if ( $arr{sortorder} eq $lex{Homeroom} ) {
$sortorder = "homeroom, lastname, firstname";
}
my $sth = $dbh->prepare("select * from student order by $sortorder");
$sth->execute;
if ( $DBI::errstr ) { print $DBI::errstr; die $DBI::errstr; }
my $first = 1;
my $curroom = -1;
my $counter = 1;
while ( my @arr = $sth->fetchrow ) {
$oldroom = $curroom;
$curroom = $arr[6];
# put in extra page break if we are starting a new room.
if ( $curroom ne $oldroom and not $first and $arr{sortorder} eq $lex{Homeroom} ) { # new room
print TEX "\\newpage\n"; # put in page break.
$counter = 1; # Set counter back to one to print 3 recs/page
} else { $first = 0; }
@arr = latex_filter( @arr );
# populate rec hash with rec{fieldid} = fieldvalue
# @meta holds the fieldid's and @arr holds current record vals.
for (0..$#arr) {
$rec{$meta[$_]} = $arr[$_];
}
my $text = $template; # make a new blank record to plug in...
# Now put replacement text back in.
$text =~ s{\<\#(.*?)\#\>}
{ $rec{$1} }gsex;
print TEX $text,"\n";
if ( not ( $counter % $recordsPerPage)) { print TEX "\\newpage\n\n"; }
$counter++;
} # End of For loop
print TEX "\\end{document}";
close TEX;
system("$pdflatex $filename > pdflog$$.txt");
system("mv $shortname.pdf $downloaddir");
system("mv pdflog$$.txt $downloaddir");
system("rm $shortname.*");
print "