course)) { error("Course is misconfigured"); } if (! $attforblock = get_record('attforblock', 'id', $cm->instance)) { error("Course module is incorrect"); } require_login($course->id); 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'); } if ($view) set_current_view($course->id, $_GET['view']); else $view = get_current_view($course->id); if (!has_capability('mod/attforblock:manageattendances', $context) AND !has_capability('mod/attforblock:takeattendances', $context) AND !has_capability('mod/attforblock:changeattendances', $context)) { redirect("view.php?id=$cm->id"); } set_user_preference("attforblock_showendtime",$showendtime); //if teacher is coming from block, then check for a session exists for today if($from === 'block') { $today = time(); // because we compare with database, we don't need to use usertime() $sql = "SELECT id, groupid, lasttaken FROM {$CFG->prefix}attendance_sessions WHERE $today BETWEEN sessdate AND (sessdate + duration) AND courseid = $course->id AND attendanceid = $attforblock->id"; if($atts = get_records_sql($sql)) { $size = count($atts); if ($size == 1) { $att = reset($atts); if ((!$att->lasttaken and has_capability('mod/attforblock:takeattendances', $context)) or ($att->lasttaken and has_capability('mod/attforblock:changeattendances', $context))) { redirect('attendances.php?id='.$id.'&sessionid='.$att->id.'&grouptype='.$att->groupid); } } elseif ($size > 1) { $current = $today; //temporally set $view for single access to page from block $view = 'days'; } } } /// Print headers $navlinks[] = array('name' => $attforblock->name, 'link' => null, 'type' => 'activity'); $navigation = build_navigation($navlinks); print_header("$course->shortname: ".$attforblock->name, $course->fullname, $navigation, "", "", true, update_module_button($cm->id, $course->id, get_string('modulename', 'attforblock')), navmenu($course)); print_heading(get_string('attendanceforthecourse','attforblock').' :: ' .$course->fullname); if(!count_records_select('attendance_sessions', "courseid = $course->id AND attendanceid = $attforblock->id AND sessdate >= $course->startdate")) { // no session exists for this course show_tabs($cm, $context); print_heading(get_string('nosessionexists','attforblock')); $hiddensess = count_records_select('attendance_sessions', "courseid = $course->id AND attendanceid = $attforblock->id AND sessdate < $course->startdate"); echo '
'.helpbutton('hiddensessions', '', 'attforblock', true, true, '', true); echo get_string('hiddensessions', 'attforblock').': '.$hiddensess.'
'; } else { //sessions generated , display them add_to_log($course->id, 'attendance', 'manage attendances', 'mod/attforblock/manage.php?course='.$course->id, $user->lastname.' '.$user->firstname); show_tabs($cm, $context); print_sessions_list($course, $attforblock); } // require_once('lib.php'); // $t = attforblock_get_user_grades($attforblock); //////////////////////////////////////////// print_footer($course); function print_sessions_list($course, $attforblock) { global $CFG, $context, $cm, $current, $view, $id, $showendtime; $strhours = get_string('hours'); $strmins = get_string('min'); if ($current == 0) $current = get_current_date($course->id); else set_current_date ($course->id, $current); $ret = print_filter_controls("manage.php", $id, 0, NULL, SESSION_TYPE_SELECTOR); $startdate = $ret['startdate']; $enddate = $ret['enddate']; $currentgroup = $ret['currentgroup']; if ($startdate && $enddate) { $where = "courseid={$course->id} AND attendanceid = $attforblock->id AND sessdate >= $course->startdate AND sessdate >= $startdate AND sessdate < $enddate"; } else { $where = "courseid={$course->id} AND attendanceid = $attforblock->id AND sessdate >= $course->startdate"; } if ($currentgroup > -1) { $where .= " AND groupid=$currentgroup"; } $qry = get_records_select('attendance_sessions', $where, 'sessdate asc'); $i = 0; $table->width = '100%'; //$table->tablealign = 'center'; $table->head = array('#', get_string('sessiontypeshort', 'attforblock'), get_string('date'), get_string('from'), ($showendtime=='0') ? get_string('duration', 'attforblock') : get_string('to'), get_string('description','attforblock'), get_string('actions'), get_string('select')); $table->align = array('', '', '', 'right', 'left', 'center', 'center'); $table->size = array('1px', '', '1px', '1px', '1px', '*', '1px', '1px'); $allowtake = has_capability('mod/attforblock:takeattendances', $context); $allowchange = has_capability('mod/attforblock:changeattendances', $context); $allowmanage = has_capability('mod/attforblock:manageattendances', $context); $groups = groups_get_all_groups($course->id); if ($qry) { foreach($qry as $key=>$sessdata) { $i++; $actions = ''; // if ($allowtake) { if($sessdata->lasttaken > 0) //attendance has taken { if ($allowchange) { $desc = "id&sessionid={$sessdata->id}&grouptype={$sessdata->groupid}\">". ($sessdata->description ? $sessdata->description : get_string('nodescription', 'attforblock')). ''; } else { $desc = ''.(empty($sessdata->description) ? get_string('nodescription', 'attforblock') : $sessdata->description).''; } } else { $desc = empty($sessdata->description) ? get_string('nodescription', 'attforblock') : $sessdata->description; if ($allowtake) { $title = get_string('takeattendance','attforblock'); $actions = "id&sessionid={$sessdata->id}&grouptype={$sessdata->groupid}\">". "pixpath}/t/go.gif\" alt=\"$title\" /> "; } } // } if($allowmanage) { $title = get_string('editsession','attforblock'); $actions .= "id&sessionid={$sessdata->id}&action=update\">". "pixpath}/t/edit.gif\" alt=\"$title\" /> "; $title = get_string('deletesession','attforblock'); $actions .= "id&sessionid={$sessdata->id}&action=delete\">". "pixpath}/t/delete.gif\" alt=\"$title\" /> "; } $table->data[$sessdata->id][] = $i; $table->data[$sessdata->id][] = $sessdata->groupid ? $groups[$sessdata->groupid]->name : get_string('commonsession', 'attforblock'); $table->data[$sessdata->id][] = userdate($sessdata->sessdate, get_string('strftimedmyw', 'attforblock')); $table->data[$sessdata->id][] = userdate($sessdata->sessdate, get_string('strftimehm', 'attforblock')); $hours = floor($sessdata->duration / HOURSECS); $mins = floor(($sessdata->duration - $hours * HOURSECS) / MINSECS); $mins = $mins < 10 ? "0$mins" : "$mins"; $table->data[$sessdata->id][] = ($showendtime=='0') ? ($hours ? "{$hours} {$strhours} {$mins} {$strmins}" : "{$mins} {$strmins}") : userdate($sessdata->sessdate+$sessdata->duration, get_string('strftimehm', 'attforblock'));; $table->data[$sessdata->id][] = $desc; $table->data[$sessdata->id][] = $actions; $table->data[$sessdata->id][] = ''; unset($desc, $actions); } } echo '
'; echo "
id}\">"; //&sessionid={$sessdata->id} print_table($table); $hiddensess = count_records_select('attendance_sessions', "courseid = $course->id AND attendanceid = $attforblock->id AND sessdate < $course->startdate"); echo ''; echo '
'; echo '
'.helpbutton('hiddensessions', '', 'attforblock', true, true, '', true); echo get_string('hiddensessions', 'attforblock').': '.$hiddensess.'
'.get_string('selectall').' /'. ' '.get_string('deselectall').'

'; echo ''.get_string('withselected', 'quiz').': '; if ($allowmanage) { $actionlist = array('deleteselected' => get_string('delete'), 'changeduration' => get_string('changeduration', 'attforblock')); choose_from_menu($actionlist, 'action'); echo '\n"; } else { echo get_string('youcantdo', 'attforblock'); //You can't do anything } echo '
'.helpbutton ('sessions', get_string('help'), 'attforblock', true, true, '', true).'
'; echo '
'; echo '
'; } ?>