/**
 * Update grades by firing grade_updated event
 *
 * @param object $elluminate null means all elluminates
 * @param int $userid specific user only, 0 mean all
 */
function elluminate_update_grades($elluminate = null, $userid = 0, $nullifnone = true)
{
    global $CFG;
    if (!function_exists('grade_update')) {
        //workaround for buggy PHP versions
        require_once $CFG->libdir . '/gradelib.php';
    }
    if ($elluminate != null) {
        if ($grades = elluminate_get_user_grades($elluminate, $userid)) {
            foreach ($grades as $k => $v) {
                if ($v->rawgrade == -1) {
                    $grades[$k]->rawgrade = null;
                }
            }
            elluminate_grade_item_update($elluminate, $grades);
        } else {
            elluminate_grade_item_update($elluminate);
        }
    } else {
        /*$sql = "SELECT a.*, cm.idnumber as cmidnumber, a.course as courseid
          FROM {elluminate} a
          INNER JOIN {course_modules} cm ON cm.instance = a.id
          INNER JOIN {modules} m ON m.id = cm.module
          WHERE m.name='elluminate'";*/
        $params = array('a.id', 'cm.module', 'elluminate');
        $sql = "SELECT a.*, cm.idnumber as cmidnumber, a.course as courseid\n\t\t\tFROM {elluminate} a\n\t\t\tINNER JOIN {course_modules} cm ON cm.instance = ?\n\t\t\tINNER JOIN {modules} m ON m.id = ?\n\t\t\tWHERE m.name=?";
        $rs = $DB->get_recordset_sql($sql, $params);
        foreach ($rs as $elluminate) {
            if ($elluminate->grade != 0) {
                elluminate_update_grades($elluminate);
            } else {
                elluminate_grade_item_update($elluminate);
            }
        }
        $rs->close();
    }
}
/**
 * Update grades by firing grade_updated event
 *
 * @param object $elluminate null means all elluminates
 * @param int $userid specific user only, 0 mean all
 */
function elluminate_update_grades($elluminate = null, $userid = 0, $nullifnone = true)
{
    global $CFG;
    if (!function_exists('grade_update')) {
        //workaround for buggy PHP versions
        require_once $CFG->libdir . '/gradelib.php';
    }
    if ($elluminate != null) {
        if ($grades = elluminate_get_user_grades($elluminate, $userid)) {
            foreach ($grades as $k => $v) {
                if ($v->rawgrade == -1) {
                    $grades[$k]->rawgrade = null;
                }
            }
            elluminate_grade_item_update($elluminate, $grades);
        } else {
            elluminate_grade_item_update($elluminate);
        }
    } else {
        $sql = "SELECT a.*, cm.idnumber as cmidnumber, a.course as courseid\n\t\t\t\t\t\t\t\t                      FROM {$CFG->prefix}elluminate a\n\t\t\t\t\t\t\t\t                      INNER JOIN {$CFG->prefix}course_modules cm ON cm.instance = a.id\n\t\t\t\t\t\t\t\t\t                  INNER JOIN {$CFG->prefix}modules m ON m.id = cm.module\n\t\t\t\t\t\t\t\t\t                  WHERE m.name='elluminate'";
        if ($rs = get_recordset_sql($sql)) {
            while ($elluminate = rs_fetch_next_record($rs)) {
                if ($elluminate->grade != 0) {
                    elluminate_update_grades($elluminate);
                } else {
                    elluminate_grade_item_update($elluminate);
                }
            }
            rs_close($rs);
        }
    }
}