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");
    }
    
    //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";
        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 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 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);
	}
//	require_once('lib.php');
//	$t = attforblock_get_user_grades($attforblock); ////////////////////////////////////////////
	print_footer($course);
	
	
function print_sessions_list($course) {
	global $CFG, $context, $cm, $current, $view, $id;
	
        $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 sessdate >= $course->startdate AND sessdate >= $startdate AND sessdate < $enddate";
        } else {
            $where = "courseid={$course->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('time'), get_string('duration', 'attforblock'), 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/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/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][] = $hours ? "{$hours} {$strhours} {$mins} {$strmins}" : "{$mins} {$strmins}";
                $table->data[$sessdata->id][] = $desc;
                $table->data[$sessdata->id][] = $actions;
                $table->data[$sessdata->id][] = '';
                unset($desc, $actions);
            }
        }
        echo '';
			
}
?>
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][] = $hours ? "{$hours} {$strhours} {$mins} {$strmins}" : "{$mins} {$strmins}";
                $table->data[$sessdata->id][] = $desc;
                $table->data[$sessdata->id][] = $actions;
                $table->data[$sessdata->id][] = '';
                unset($desc, $actions);
            }
        }
        echo '';
			
}
?>