/**
 * Update grades by firing grade_updated event
 *
 * @param object $attforblock null means all attforblocks
 * @param int $userid specific user only, 0 mean all
 */
function attforblock_update_grades($attforblock = null, $userid = 0, $nullifnone = true)
{
    global $CFG;
    if (!function_exists('grade_update')) {
        //workaround for buggy PHP versions
        require_once $CFG->libdir . '/gradelib.php';
    }
    if ($attforblock != null) {
        if ($grades = attforblock_get_user_grades($attforblock, $userid)) {
            foreach ($grades as $k => $v) {
                if ($v->rawgrade == -1) {
                    $grades[$k]->rawgrade = null;
                }
            }
            attforblock_grade_item_update($attforblock, $grades);
        } else {
            attforblock_grade_item_update($attforblock);
        }
    } else {
        $sql = "SELECT a.*, cm.idnumber as cmidnumber, a.course as courseid\n                  FROM {$CFG->prefix}attforblock a, {$CFG->prefix}course_modules cm, {$CFG->prefix}modules m\n                 WHERE m.name='attforblock' AND m.id=cm.module AND cm.instance=a.id";
        if ($rs = get_recordset_sql($sql)) {
            while ($attforblock = rs_fetch_next_record($rs)) {
                //                if ($attforblock->grade != 0) {
                attforblock_update_grades($attforblock);
                //                } else {
                //                    attforblock_grade_item_update($attforblock);
                //                }
            }
            rs_close($rs);
        }
    }
}
            $i++;
        }
    }
    $attforblockrecord = $DB->get_record('attforblock', array('course' => $course->id));
    foreach ($students as $student) {
        if ($log = $DB->get_record('attendance_log', array('sessionid' => $sessionid, 'studentid' => $student->studentid))) {
            $student->id = $log->id;
            // this is id of log
            $DB->update_record('attendance_log', $student);
        } else {
            $DB->insert_record('attendance_log', $student);
        }
    }
    $DB->set_field('attendance_sessions', 'lasttaken', $now, array('id' => $sessionid));
    $DB->set_field('attendance_sessions', 'lasttakenby', $USER->id, array('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');
print_header("{$course->shortname}: " . $attforblock->name . ' - ' . get_string('update', 'attforblock'), $course->fullname, $navlinks, "", "", true, " ", navmenu($course));
//check for hack
if (!($sessdata = $DB->get_record('attendance_sessions', array('id' => $sessionid)))) {
    print_error("Required Information is missing", "manage.php?id=" . $id);
}
$help = $OUTPUT->help_icon('updateattendance', 'attforblock', '');
$update = $DB->count_records('attendance_log', array('sessionid' => $sessionid));
if ($update) {
function config_save()
{
    global $course, $user, $attforblockrecord;
    $sessiontitle = required_param('sessiontitle');
    foreach ($sessiontitle as $id => $v) {
        $rec = get_record('attendance_sessiontitles', 'id', $id);
        $rec->sessiontitle = $sessiontitle[$id];
        update_record('attendance_sessiontitles', $rec);
        add_to_log($course->id, 'attforblock', 'sessiontitles updated', 'addtitles.php?course=' . $course->id, $user->lastname . ' ' . $user->firstname);
    }
    attforblock_update_grades($attforblockrecord);
}
function config_save()
{
    global $course, $user, $attforblockrecord, $DB;
    $acronym = required_param('acronym', PARAM_RAW);
    $description = required_param('description', PARAM_RAW);
    $grade = required_param('grade', PARAM_INT);
    foreach ($acronym as $id => $v) {
        $rec = $DB->get_record('attendance_statuses', array('id' => $id));
        $rec->acronym = $acronym[$id];
        $rec->description = $description[$id];
        $rec->grade = $grade[$id];
        $DB->update_record('attendance_statuses', $rec);
        add_to_log($course->id, 'attendance', 'settings updated', 'mod/attforblock/attsettings.php?course=' . $course->id, $user->lastname . ' ' . $user->firstname);
    }
    attforblock_update_grades($attforblockrecord);
}
function config_save()
{
    global $course, $user, $attforblockrecord;
    $teacher = required_param('teacher');
    foreach ($teacher as $id => $v) {
        $rec = get_record('attendance_teachers', 'id', $id);
        $rec->teacher = $teacher[$id];
        update_record('attendance_teachers', $rec);
        add_to_log($course->id, 'attforblock', 'teachers updated', 'addteachers.php?course=' . $course->id, $user->lastname . ' ' . $user->firstname);
    }
    attforblock_update_grades($attforblockrecord);
}
function config_save()
{
    global $course, $user, $attforblockrecord;
    $acronym = required_param('acronym');
    $description = required_param('description');
    $grade = required_param('grade', PARAM_INT);
    $makeupnote = required_param('makeupnote', PARAM_MULTILANG);
    $sicknote = required_param('sicknote', PARAM_MULTILANG);
    $startlogic = required_param('startlogic', PARAM_MULTILANG);
    $afterstart = required_param('afterstart', PARAM_INT);
    $finishlogic = required_param('finishlogic', PARAM_MULTILANG);
    $beforefinish = required_param('beforefinish', PARAM_INT);
    $percentageattended = required_param('percentageattended', PARAM_INT);
    $logicoperator = required_param('logicoperator', PARAM_MULTILANG);
    foreach ($acronym as $id => $v) {
        $rec = get_record('attendance_statuses', 'id', $id);
        $rec->acronym = $acronym[$id];
        $rec->description = $description[$id];
        $rec->grade = $grade[$id];
        $rec->makeupnote = $makeupnote[$id];
        $rec->sicknote = $sicknote[$id];
        $rec->finishlogic = $finishlogic[$id];
        $rec->beforefinish = $beforefinish[$id];
        $rec->logicoperator = $logicoperator[$id];
        $rec->startlogic = $startlogic[$id];
        $rec->afterstart = $afterstart[$id];
        $rec->percentageattended = $percentageattended[$id];
        update_record('attendance_statuses', $rec);
        add_to_log($course->id, 'attforblock', 'settings updated', 'attsettings.php?course=' . $course->id, $user->lastname . ' ' . $user->firstname);
    }
    attforblock_update_grades($attforblockrecord);
}