libdir.'/blocklib.php'); require_once('locallib.php'); require_once('lib.php'); if (!function_exists('grade_update')) { //workaround for buggy PHP versions require_once($CFG->libdir.'/gradelib.php'); } $id = required_param('id', PARAM_INT); $sessionid = required_param('sessionid', PARAM_INT); $grouptype = required_param('grouptype', PARAM_INT); $group = optional_param('group', -1, PARAM_INT); // Group to show $sort = optional_param('sort','lastname', PARAM_ALPHA); if (! $cm = get_record('course_modules', 'id', $id)) { error('Course Module ID was incorrect'); } if (! $course = get_record('course', 'id', $cm->course)) { error('Course is misconfigured'); } require_login($course->id); if (! $attforblock = get_record('attforblock', 'id', $cm->instance)) { error("Course module is incorrect"); } if (! $user = get_record('user', 'id', $USER->id) ) { error("No such user in this course"); } if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { print_error('badcontext'); } $statlist = implode(',', array_keys( (array)get_statuses($attforblock->id) )); if ($form = data_submitted()) { $students = array(); // stores students ids $formarr = (array)$form; $i = 0; $now = time(); foreach($formarr as $key => $value) { if(substr($key,0,7) == 'student' && $value !== '') { $students[$i] = new Object(); $sid = substr($key,7); // gets studeent id from radiobutton name $students[$i]->studentid = $sid; $students[$i]->statusid = $value; $students[$i]->statusset = $statlist; $students[$i]->remarks = array_key_exists('remarks'.$sid, $formarr) ? $formarr['remarks'.$sid] : ''; $students[$i]->sessionid = $sessionid; $students[$i]->timetaken = $now; $students[$i]->takenby = $USER->id; $i++; } } $attforblockrecord = get_record('attforblock', 'id', $cm->instance);//'course', $course->id); foreach($students as $student) { if ($log = get_record('attendance_log', 'sessionid', $sessionid, 'studentid', $student->studentid)) { $student->id = $log->id; // this is id of log update_record('attendance_log', $student); } else { insert_record('attendance_log', $student); } } set_field('attendance_sessions', 'lasttaken', $now, 'id', $sessionid); set_field('attendance_sessions', 'lasttakenby', $USER->id, 'id', $sessionid); attforblock_update_grades($attforblockrecord); add_to_log($course->id, 'attendance', 'updated', 'mod/attforblock/report.php?id='.$id, $user->lastname.' '.$user->firstname); redirect('manage.php?id='.$id, get_string('attendancesuccess','attforblock'), 3); exit(); } /// Print headers $navlinks[] = array('name' => $attforblock->name, 'link' => "view.php?id=$id", 'type' => 'activity'); $navlinks[] = array('name' => get_string('update', 'attforblock'), 'link' => null, 'type' => 'activityinstance'); $navigation = build_navigation($navlinks); print_header("$course->shortname: ".$attforblock->name.' - ' .get_string('update','attforblock'), $course->fullname, $navigation, "", "", true, " ", navmenu($course)); //check for hack if (!$sessdata = get_record('attendance_sessions', 'id', $sessionid)) { error("Required Information is missing", "manage.php?id=".$id); } $help = helpbutton ('updateattendance', get_string('help'), 'attforblock', true, false, '', true); $update = count_records('attendance_log', 'sessionid', $sessionid); if ($update) { require_capability('mod/attforblock:changeattendances', $context); print_heading(get_string('update','attforblock').' ' .get_string('attendanceforthecourse','attforblock').' :: ' .$course->fullname.$help); } else { require_capability('mod/attforblock:takeattendances', $context); print_heading(get_string('attendanceforthecourse','attforblock').' :: ' .$course->fullname.$help); } /// find out current groups mode $groupmode = groups_get_activity_groupmode($cm); $currentgroup = groups_get_activity_group($cm, true); // get the viewmode & grid columns (default is set in module settings) $attforblockrecord = get_record('attforblock', 'id', $cm->instance);//'course', $course->id);'course', $course->id); $view = optional_param('view', get_user_preferences("attforblock_viewmode", SORTEDLISTVIEW), PARAM_INT); $gridcols = optional_param('gridcols', get_user_preferences("attforblock_gridcolumns",5), PARAM_INT); echo '
"; foreach($sessions as $sessdatarow) { $optionssessions[$sessdatarow->id] = userdate($sessdatarow->sessdate, get_string('strftimehm', 'attforblock')) . "-" . userdate($sessdatarow->sessdate+$sessdata->duration, get_string('strftimehm', 'attforblock')); } popup_form("$data&sessionid=", $optionssessions, 'fastsessionmenu', $sessionid, ''); echo " | ||
"; popup_form("$data&view=", $options, 'viewmenu', $view, ''); if ($view == SORTEDGRIDVIEW) { set_user_preference("attforblock_viewmode", $view); set_user_preference("attforblock_gridcolumns", $gridcols); $options = array (1 => '1 '.get_string('column','attforblock'),'2 '.get_string('columns','attforblock'),'3 '.get_string('columns','attforblock'), '4 '.get_string('columns','attforblock'),'5 '.get_string('columns','attforblock'),'6 '.get_string('columns','attforblock'), '7 '.get_string('columns','attforblock'),'8 '.get_string('columns','attforblock'),'9 '.get_string('columns','attforblock'), '10 '.get_string('columns','attforblock')); $data = "attendances.php?id=$id&sessionid=$sessionid&grouptype=$grouptype&view=$view"; if ($group!=-1) { $data = $data . "&group=$group"; } popup_form("$data&gridcols=", $options, 'colsmenu', $gridcols, ''); } echo ' |