#! /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"; print "\n"; 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 "

"; print $lex{'View/Download'}. ' '. $lex{'Student Roster'}. "

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