/**
 * Create grade item for given scheduler
 *
 * @param object $scheduler object
 * @param mixed optional array/object of grade(s); 'reset' means reset grades in gradebook
 * @return int 0 if ok, error code otherwise
 */
function scheduler_grade_item_update($scheduler, $grades = null)
{
    global $CFG, $DB;
    require_once $CFG->libdir . '/gradelib.php';
    if (!isset($scheduler->courseid)) {
        $scheduler->courseid = $scheduler->course;
    }
    $moduleid = $DB->get_field('modules', 'id', array('name' => 'scheduler'));
    $cmid = $DB->get_field('course_modules', 'id', array('module' => $moduleid, 'instance' => $scheduler->id));
    if ($scheduler->scale == 0) {
        // Delete any grade item.
        scheduler_grade_item_delete($scheduler);
        return 0;
    } else {
        $params = array('itemname' => $scheduler->name, 'idnumber' => $cmid);
        if ($scheduler->scale > 0) {
            $params['gradetype'] = GRADE_TYPE_VALUE;
            $params['grademax'] = $scheduler->scale;
            $params['grademin'] = 0;
        } else {
            if ($scheduler->scale < 0) {
                $params['gradetype'] = GRADE_TYPE_SCALE;
                $params['scaleid'] = -$scheduler->scale;
            } else {
                $params['gradetype'] = GRADE_TYPE_TEXT;
                // Allow text comments only.
            }
        }
        if ($grades === 'reset') {
            $params['reset'] = true;
            $grades = null;
        }
        return grade_update('mod/scheduler', $scheduler->courseid, 'mod', 'scheduler', $scheduler->id, 0, $grades, $params);
    }
}
 /**
  * Delete the scheduler
  */
 public function delete()
 {
     $this->slots->delete_children();
     scheduler_grade_item_delete($this);
     parent::delete();
 }