#!/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; version 2 of
# the License (only)
# Passed values will be method - snap,sa4,sa6; date, and then all the
# "studnum:period:subjsec:reason:late:date" (now with date) with value of 1
# This is common for all attendance entry methods.
my %lex = ('Attendance Entry' => 'Attendance Entry',
'Main' => 'Main',
'Enter More Attendance Records (clear)' => 'Enter More Attendance Records (clear)',
'Your attendance is now stored' => 'Your attendance is now stored',
'There was an error storing your data' => 'There was an error storing your data',
'Please contact' => 'Please contact',
'Please record the following error' => 'Please record the following error',
'Enter More Attendance Records (go back)' => 'Enter More Attendance Records (go back)',
'Error' => 'Error',
);
use DBI;
use CGI;
use CGI::Session;
my @tim = localtime(time);
my $year = $tim[5] + 1900;
my $month = $tim[4] + 1;
my $day = $tim[3];
if ( length( $month ) == 1 ) { $month = '0'. $month; }
if ( length( $day ) == 1 ) { $day = '0'. $day; }
my $currdate = "$year-$month-$day";
my $q = new CGI;
my %arr = $q->Vars;
eval require "../etc/admin.conf";
if ( $@ ) {
print $lex{Error}. ": $@ \n";
die $lex{Error}. ": $@\n";
}
my $dsn = "DBI:$dbtype:dbname=$dbase";
my $dbh = DBI->connect($dsn,$user,$password);
# Get Session
my $session = new CGI::Session("driver:mysql;serializer:FreezeThaw",
undef,{Handle => $dbh}) or die CGI::Session->errstr;
my $userid = $session->param('userid');
print $session->header;
print "$doctype\n
\n";
foreach my $key ( keys %arr ) {
if ($arr{$key} == 1) { # We have a student entry
my ($studnum,$period,$subject,$reason,$late,$date) = split /:/,$key;
if ( not $late ) { $late = 0; }
#if (not $period){$period = $sql{default};}
if (not $subject){$subject = $sql{default};}
#if (not $reason){$reason = $sql{default};}
if ($arr{method} eq 'multiday'){ # use $date above not $arr{date}
$sth = $dbh->prepare("insert into attend values ($sql{default},
'$studnum','$date','$reason','$period','$subject','$late')");
$multidates{$date} = 1; # needed for teacher entry dates.
} else {
$sth = $dbh->prepare("insert into attend values (
$sql{default},'$studnum','$arr{date}','$reason','$period','$subject','$late')");
}
$sth->execute;
if ( $DBI::errstr ){ print $DBI::errstr; die $DBI::errstr; }
}
} # End of ForEach loop
# Put Entry in Teacher Attendance Table (tattend)
# Updated: Change the date to the date of the record entered above.
# This will allow teachers to see the last day they have entered
# attendance. (ie. a tracking list)
if ( $arr{method} eq 'multiday' ){
foreach my $date (keys %multidates){
$sth = $dbh->prepare("insert into tattend
values ($sql{default}, '$userid','$date 00:00')");
$sth->execute;
if ($DBI::errstr){ print $DBI::errstr; die $DBI::errstr; }
}
} else { # normal attendance entry, (not multi).
if ( $arr{date} ne $currdate ){ # We are entering for another day, not today.
#print "Passed Date: $arr{date} Currdate: $currdate \n";
$sth = $dbh->prepare("insert into tattend
values ( $sql{default},'$userid','$arr{date} 00:00')");
} else {
$sth = $dbh->prepare("insert into tattend values ( $sql{default},'$userid',now() )");
}
$sth->execute;
if ($DBI::errstr){ print $DBI::errstr; die $DBI::errstr; }
}
if (not $DBI::errstr ) {
print "
". $lex{'Your attendance is now stored'}. ".
\n";
} else {
print "
". $lex{'There was an error storing your data'}. ".\n";
print $lex{'Please contact'}. " $adminname \n";
print "$adminemail\n";
print $lex{'Please record the following error'}. " $DBI::errstr