dirroot/mod/attendance/lib.php"); /// error_reporting(E_ALL); optional_variable($id); // Course Module ID, or optional_variable($a); // attendance ID /// populate the appropriate objects if ($id) { if (! $attendance = get_record("attendance", "id", $id)) { error("Course module is incorrect"); } if (! $course = get_record("course", "id", $attendance->course)) { error("Course is misconfigured"); } if (! $cm = get_coursemodule_from_instance("attendance", $attendance->id, $course->id)) { error("Course Module ID was incorrect"); } if ($scope == "section") { if (! $attendances = get_attendance_for_section($attendance->id, $course->id)) { error("Course module is incorrect"); } } else { if (! $attendances = get_attendance_for_week($attendance->id, $course->id)) { error("Course module is incorrect"); } } } // echo "
\n";
//    foreach ($attendances as $attendance) {
//    var_dump($attendances);
//    }
//    echo "\n
"; // print_footer(); // exit; require_login($course->id); add_to_log($course->id, "attendance", "viewweek", "viewweek.php?scope=".$scope."&id=$course->id"); /// Print the page header if ($course->category) { $navigation = "id\">$course->shortname ->"; } $strattendances = get_string("modulenameplural", "attendance"); $strattendance = get_string("modulename", "attendance"); $strweekattendance = get_string("weekmodulename", "attendance"); print_header("$course->shortname: $strallattendance", "$course->fullname", "$navigation id>$strattendances -> $strweekattendance", "", "", true, " ", navmenu($course, $cm)); /// Print the main part of the page if ($attendances) { if ( !(isteacher($course->id) || isstudent($course->id)) ) { notice(get_string("noviews", "attendance")); print_footer($course); exit; } // print other links at top of page $strviewsection = get_string("viewsection", "attendance"); $strviewweek = get_string("viewweek", "attendance"); $strviewall = get_string("viewall", "attendance"); $strviewone = get_string("viewone", "attendance"); $strviewtable = get_string("viewtable", "attendance"); $strviewmulti = get_string("viewmulti", "attendance"); echo "

id."\">"; echo "$strviewall
"; if ($onepage) { // one page for all tables echo ""; echo "$strviewmulti
"; echo ""; echo "$strviewtable
"; } else if ($onetable) { // one table for all echo ""; echo "$strviewmulti
"; echo ""; echo "$strviewone
"; } else { // multiple pages echo ""; echo "$strviewone
"; echo ""; echo "$strviewtable
"; } if ($scope=="week") { // week view for scope echo ""; echo "$strviewsection

"; } else { // section view for scope echo ""; echo "$strviewweek

"; } /// create an array of all the attendance objects for the entire course $numatt=0; $numhours=0; foreach ($attendances as $attendance){ // store the raw attendance object $atts[$numatt]->attendance=$attendance; // tally the hours for possible paging of the report $numhours=$numhours+$attendance->hours; // get the list of attendance records for all hours of the given day and // put it in the array for use in the attendance table if (isstudent($course->id)) { $rolls = get_records("attendance_roll", "dayid", $form->id, "userid", $USER->id); } else { // must be a teacher $rolls = get_records("attendance_roll", "dayid", $attendance->id); } if ($rolls) { foreach ($rolls as $roll) { $atts[$numatt]->sroll[$roll->userid][$roll->hour]->status=$roll->status; $atts[$numatt]->sroll[$roll->userid][$roll->hour]->notes=$roll->notes; } } $numatt++; } if (isstudent($course->id)) { $onepage=true; $multipage=false; } else if (!(isset($onepage))){ $onepage=false; $multipage=true; } else if ($onepage) { $multipage=false; } else { // if onepage is set to false $multilpage=true; } // adjust the width for the report for students if (($onetable) || ($CFG->attendance_hours_in_full_report == 0)) { $hoursinreport = 100+$numhours; } else if (isstudent($course->id)) { $hoursinreport = $CFG->attendance_hours_in_full_report + 15; } else { $hoursinreport = $CFG->attendance_hours_in_full_report; } while (($multipage || $onepage) && (!$endonepage)) { // this makes for a one iteration loop for multipage $multipage = false; if ($numhours>=$hoursinreport) { if (!isset($pagereport)) { // $pagereport is used to determine whether the report needs to be paged at all $pagereport=true; $endatt=0; $page=1; } // find the last hour to have on this page of the report // go to the next (or first) page // $endatt++; // $startatt=$endatt; $curpage=1; $endatt=0; for($curpage=1;true;$curpage++) { // the for loop is broken from the inside $pagehours=$atts[$endatt]->attendance->hours; $startatt=$endatt; while(($pagehours<$hoursinreport)) { if ($endatt>=$numatt) { break 2; } // end the page number calculations and trigger the end of a multi-page report! $endatt++; $pagehours=$pagehours+$atts[$endatt]->attendance->hours; } // if this is the page we're on, save the info if ($curpage == $page) {$endatt_target = $endatt; $startatt_target = $startatt; } } // hopefully at this point, startatt and endatt are set correctly for the current page if ($curpage == $page) {$endatt_target = $endatt; $startatt_target = $startatt; } else { $endatt=$endatt_target; $startatt=$startatt_target; } $maxpages = $curpage; } else {$pagereport=false;} $minatt=($pagereport ? $startatt : 0); $maxatt=($pagereport ? $endatt : $numatt); if ((!$pagereport) || ($page == $maxpages)) {$endonepage = true;} // end a one page display // // // ALL PRELIMINARY STUFF DONE - MAKE THE MEAT OF THE PAGE // // if (!$onepage) { attendance_print_pagenav(); } // build the table for attendance roll // this is the wrapper table echo "". "
"; // this is the main table echo ""; if (isteacher($course->id)) { echo "\n"; } // $minpage=0;$maxpage=$numatt; // print the date headings at the top of the table // for each day of attendance for($k=$minatt;$k<$maxatt;$k++) { // put notes for the date in the date heading $notes = ($atts[$k]->attendance->notes != "") ? ":
".$atts[$k]->attendance->notes : ""; echo "\n"; } // if we're at the end of the report if ($maxatt==$numatt || !$pagereport) { echo "\n"; } echo "\n"; // print the second level headings with name and possibly hour numbers if (isteacher($course->id)) { echo "\n"; echo "\n"; echo "\n"; } // generate the headers for the attendance hours for($k=$minatt;$k<$maxatt;$k++) { if ($atts[$k]->attendance->hours > 1) { for($i=1;$i<=$atts[$k]->attendance->hours;$i++) { echo "\n"; } } else { echo "\n"; } } // if we're at the end of the report if ($maxatt==$numatt || !$pagereport) { echo ""; } echo "\n"; // get the list of students along with student ID field // get back array of stdclass objects in sorted order, with members: // id, username,firstname,lastname,maildisplay,mailformat,email,city,country, // lastaccess,lastlogin,picture (picture is null, 0, or 1), idnumber if (isstudent($course->id)) { $students[0] = get_user_info_from_db("id", $USER->id); } else { // must be a teacher $students = attendance_get_course_students($attendance->course, "u.lastname ASC"); } $i=0; $A = get_string("absentshort","attendance"); $T = get_string("tardyshort","attendance"); $P = get_string("presentshort","attendance"); foreach ($students as $student) { if (isteacher($course->id)) { echo "\n"; echo "\n"; $studentid=(($student->idnumber != "") ? $student->idnumber : " "); echo "\n"; } for($k=$minatt;$k<$maxatt;$k++) { // for eacj day of attendance for the student for($j=1;$j<=$atts[$k]->attendance->hours;$j++) { // set the attendance defaults for each student if ($atts[$k]->sroll[$student->id][$j]->status == 1) {$status=$T;} elseif ($atts[$k]->sroll[$student->id][$j]->status == 2) {$status=$A;} else {$status=$P;} echo "\n"; } /// for loop } if ($maxatt==$numatt || !$pagereport) { // tally total attendances for the students $abs=$tar=0; for($k=0;$k<$numatt;$k++) { // for eacj day of attendance for the student for($j=1;$j<=$atts[$k]->attendance->hours;$j++) { // set the attendance defaults for each student if ($atts[$k]->sroll[$student->id][$j]->status == 1) {;$tar++;} elseif ($atts[$k]->sroll[$student->id][$j]->status == 2) {;$abs++;} } /// for loop } // outer for for each day of attendance $tot=tally_overall_absences_fraction($abs,$tar); echo "\n"; } } // foreach /// doing the table manually now /// print_table($table); /// ending for the table echo "
". " attendance->hours. "\" nowrap class=\"generaltableheader\">". userdate($atts[$k]->attendance->day,"%m/%0d").$notes." 
Last NameFirst NameID".$i." total
".$student->lastname."".$student->firstname."".$studentid."".$status."".$tot."
\n"; if ($onepage) {$page++; echo "

\n"; } } // while loop for multipage/one page printing if (!$onepage) { attendance_print_pagenav(); } } else { error("There are no attendance rolls in this course.");} // for no attendance rolls /// Finish the page print_footer($course); function attendance_print_pagenav() { global $pagereport, $minatt, $maxatt, $course, $page, $numatt, $maxpages, $attendance,$scope,$id; if ($pagereport) { $of = get_string('of','attendance'); $pg = get_string('page'); $next = get_string('next'); $prev = get_string('previous', 'attendance'); echo "
". "
"; // this is the main table echo ""; echo ""; if ($minatt!=0) { echo "\n"; } echo "\n"; if ($maxatt!=$numatt) { echo ""; } echo "
". "$prev $pg". "$pg $page $of $maxpages". "$next $pg
\n"; } } ?>