$grade->grade = $ugrade;
        $grade->timemodified = time();
        $DB->insert_record('elluminate_attendance', $grade);
        elluminate_update_grades($elluminate, $USER->id);
    } else {
        $grade->attended = $ugrade;
        $DB->update_record('elluminate_attendance', $grade);
        elluminate_update_grades($elluminate, $USER->id);
    }
}
if (!empty($cm)) {
    $cmid = $cm->id;
} else {
    $cmid = 0;
}
add_to_log($elluminate->course, 'elluminate', 'view meeting', 'loadmeeting.php?id=' . $elluminate->id, $elluminate->id, $cmid, $USER->id);
if (empty($elluminate->meetingid)) {
    elluminate_group_instance_check($elluminate, $cm->id);
}
$modinsession = false;
if ($ismoderator) {
    $modinsession = elluminate_is_participant($elluminate->id, $USER->id, true);
}
/// Load the meeting.
if (!empty($elluminate->meetingid)) {
    if (!elluminate_build_meeting_jnlp($elluminate->meetingid, $USER->id, $elluminate->sessiontype, $modinsession)) {
        print_error('Could not launch Blackboard Collaborate meeting.');
    }
} else {
    print_error('Could not launch Blackboard Collaborate meeting.  Error in initialization.');
}
/**
 * Add a user as a participant to a given meeting.
 *
 * @param int $meetingid The Blackboard Collaborate meeting ID.
 * @param int $userid The Blackboard Collaborate user ID.
 * @param boolean $moderator Is the user being added as a moderator? (default False)
 * @return boolean True on success, False otherwise.
 */
function elluminate_add_participant($id, $userid, $moderator = false)
{
    global $DB;
    /// Make sure this user is not already a participant or moderator for this meeting.
    if (elluminate_is_participant($id, $userid)) {
        return true;
    }
    /// Make sure any existing participants are included in the list.
    $participants = elluminate_list_participants($id);
    $moderatoruserlist = '';
    $participantuserlist = '';
    $moderatorusercount = 0;
    $participantusercount = 0;
    if (!empty($participants)) {
        foreach ($participants as $participant) {
            if (ELLUMINATELIVE_ROLE_MODERATOR == $participant['role']) {
                if ($moderatorusercount > 0) {
                    $moderatoruserlist .= ',';
                }
                $moderatoruserlist .= $participant['user'];
                $moderatorusercount++;
            } else {
                if ($participantusercount) {
                    $participantuserlist .= ',';
                }
                $participantuserlist .= $participant['user'];
                $participantusercount++;
            }
        }
    }
    /// Append the new user we're adding.
    if ($moderator) {
        if ($moderatorusercount) {
            $moderatoruserlist .= ',';
        }
        $moderatoruserlist .= $userid;
    } else {
        if ($participantusercount) {
            $participantuserlist .= ',';
        }
        $participantuserlist .= $userid;
    }
    $elluminate->chairlist = $moderatoruserlist;
    $elluminate->nonchairlist = $participantuserlist;
    $DB->set_field('elluminate', 'chairlist', $moderatoruserlist, array('id' => $id));
    $DB->set_field('elluminate', 'nonchairlist', $participantuserlist, array('id' => $id));
    return true;
}
/**
 * Get a list of recent recorded meetings based upon the user's system authority:
 *  - admins can see all recent meeting recordings
 *  - teachers see recent recordings in their courses
 *  - students see recent recordings they participated in
 *
 * The return array is of the format where each entry is an object that consists
 * of the following information:
 *
 *  $entry->name        = meeting name
 *  $entry->recordingid = recording ID
 *
 * @uses $USER
 * @param none
 * @return array An array of recorded meeting information.
 */
function elluminate_recent_recordings()
{
    global $USER;
    /*
        if (!$elmuser = get_record('elluminate_users', 'userid', $USER->id)) {
            return NULL;
        }
    */
    /// Get the five most recent recordings.
    if (!($recordings = get_records('elluminate_recordings', '', '', 'created DESC', '*', '', 5))) {
        return NULL;
    }
    $return = array();
    $type = 'student';
    if (isadmin($USER->id)) {
        $type = 'admin';
    } else {
        if (isteacherinanycourse($USER->id, false)) {
            $type = 'teacher';
        }
    }
    $rids = array();
    foreach ($recordings as $recording) {
        $meeting = get_record('elluminate', 'meetingid', $recording->meetingid);
        $meeting->name = stripslashes($meeting->name);
        if (in_array($meeting->id, $rids)) {
            continue;
        }
        if ($meeting->private == false) {
            $return[] = createRecordingEntry($meeting, $recording);
        } else {
            // ## REFACTOR THIS MESS!!!!
            switch ($type) {
                case 'admin':
                    $return[] = createRecordingEntry($meeting, $recording);
                    break;
                case 'teacher':
                    if (isteacher($meeting->course, $USER->id, false)) {
                        $return[] = createRecordingEntry($meeting, $recording);
                    }
                    break;
                case 'student':
                    if (elluminate_is_participant($recording->meetingid, $USER->id)) {
                        $return[] = createRecordingEntry($meeting, $recording);
                    }
                    break;
                default:
                    break;
            }
        }
    }
    return $return;
}