Example #1
0
function elluminate_update_instance($elluminate)
{
    global $CFG;
    global $USER;
    global $DB;
    $update_id = $elluminate->update;
    $meeting = $DB->get_record('elluminate', array('id' => $elluminate->instance));
    $elluminate->creator = $meeting->creator;
    $elluminate->chairlist = $meeting->chairlist;
    $timenow = time();
    /// The start and end times don't make sense.
    if ($elluminate->timestart > $elluminate->timeend) {
        $a = new stdClass();
        $a->timestart = userdate($elluminate->timestart);
        $a->timeend = userdate($elluminate->timeend);
        redirect($CFG->wwwroot . '/course/modedit.php?update=' . $elluminate->coursemodule . '&return=1', get_string('invalidsessiontimes', 'elluminate', $a), 5);
    }
    if ($elluminate->timestart == $elluminate->timeend) {
        $a = new stdClass();
        $a->timestart = userdate($elluminate->timestart);
        $a->timeend = userdate($elluminate->timeend);
        redirect($CFG->wwwroot . '/course/modedit.php?update=' . $elluminate->coursemodule . '&return=1', get_string('samesessiontimes', 'elluminate', $a), 5);
    }
    //If the start time has changed, check that it's  not before now
    if ($elluminate->timestart != $meeting->timestart) {
        if ($elluminate->timestart < $timenow) {
            $a = new stdClass();
            $a->timestart = userdate($elluminate->timestart);
            $a->timeend = userdate($elluminate->timeend);
            redirect($CFG->wwwroot . '/course/mod.php?id=' . $elluminate->course . '&amp;section=' . $elluminate->section . '&amp;sesskey=' . $USER->sesskey . '&amp;add=elluminate', get_string('starttimebeforenow', 'elluminate', $a), 5);
        }
    }
    $yearinseconds = 31536000;
    $timedif = $elluminate->timeend - $elluminate->timestart;
    if ($timedif > $yearinseconds) {
        $a = new stdClass();
        $a->timestart = userdate($elluminate->timestart);
        $a->timeend = userdate($elluminate->timeend);
        redirect($CFG->wwwroot . '/course/modedit.php?update=' . $elluminate->coursemodule . '&amp;return=1', get_string('meetinglessthanyear', 'elluminate', $a), 5);
    }
    $year_later = $timenow + $yearinseconds;
    if ($elluminate->timestart > $year_later) {
        $a = new stdClass();
        $a->timestart = userdate($elluminate->timestart);
        $a->timeend = userdate($elluminate->timeend);
        redirect($CFG->wwwroot . '/course/mod.php?id=' . $elluminate->course . '&amp;section=' . $elluminate->section . '&amp;sesskey=' . $USER->sesskey . '&amp;add=elluminate', get_string('meetingstartoverayear', 'elluminate', $a), 5);
    }
    $elluminate->timemodified = time();
    $elluminate->id = $elluminate->instance;
    if (empty($elluminate->groupparentid)) {
        $elluminate->groupparentid = $meeting->groupparentid;
    }
    if (empty($elluminate->customdescription)) {
        $elluminate->customdescription = $meeting->customdescription;
    }
    if (!empty($elluminate->edit_groupmode)) {
        $elluminate->groupmode = $elluminate->edit_groupmode;
    }
    if (empty($elluminate->sessiontype)) {
        $elluminate->sessiontype = $meeting->sessiontype;
    }
    if ($elluminate->sessiontype == 3) {
        $elluminate->groupingid = $elluminate->grouping_id;
    }
    /// The start and end times don't make sense.
    if ($elluminate->timestart > $elluminate->timeend) {
        /// Get the course module ID for this instance.
        $sql = "SELECT cm.id\n                FROM {modules} m,\n                {course_modules} cm\n                WHERE m.name = 'elluminate'\n                AND cm.module = m.id\n                AND cm.instance = :instanceid";
        $sql_params = array('instanceid' => $elluminate->id);
        if (!($cmid = get_field_sql($sql, $sql_params))) {
            redirect($CFG->wwwroot . '/mod/elluminate/view.php?id=' . $elluminate->id, 'The meeting start time of ' . userdate($elluminate->timestart) . ' is after the meeting end time of ' . userdate($elluminate->timeend), 5);
        }
        redirect($CFG->wwwroot . '/course/mod.php?update=' . $cmid . '&amp;return=true&amp;' . 'sesskey=' . $USER->sesskey, 'The meeting start time of ' . userdate($elluminate->timestart) . ' is after the meeting end time of ' . userdate($elluminate->timeend), 5);
    }
    /// If the grade value for attendance has changed, modify any existing attendance records.
    if ($elluminate->grade != $meeting->grade) {
        $attendance = $DB->get_records('elluminate_attendance', array('elluminateid' => $meeting->id));
        foreach ($attendance as $attendee) {
            if ($attendee->grade > 0) {
                /// We're using a scale.
                if ($elluminate->grade < 0) {
                    $grades = make_grades_menu($elluminate->grade);
                    $attendee->grade = key($grades);
                    /// We're using a numerical value.
                } else {
                    $attendee->grade = $elluminate->grade;
                }
                $DB->update_record('elluminate_attendance', $attendee);
                elluminate_update_grades($elluminate, $attendee->userid);
            }
        }
    }
    if (empty($elluminate->boundarytimedisplay)) {
        $elluminate->boundarytimedisplay = 0;
    }
    if (empty($elluminate->maxtalkers)) {
        $elluminate->maxtalkers = 1;
    }
    $elluminate->seats = 0;
    $search = array("<", "&", "\"", "#", "%");
    $replace = '';
    $elluminate->sessionname = str_replace($search, $replace, $elluminate->name);
    if (empty($elluminate->sessionname)) {
        redirect($CFG->wwwroot . '/course/modedit.php?update=' . $update_id . '&amp;return=1', get_string('meetingnameempty', 'elluminate'), 5);
    }
    if (!empty($meeting->meetingid)) {
        $create_result = elluminate_update_meeting($meeting->meetingid, $elluminate->timestart, $elluminate->timeend, $elluminate->sessionname, '', '', $elluminate->sessiontype, $elluminate->seats, $elluminate->boundarytime, $elluminate->maxtalkers, $elluminate->recordingmode, '', $elluminate->id);
        if ($create_result->DefaultAdapterMeetingResponseShort->meetingId > 0) {
        } else {
            print_error($create_result->message);
        }
    }
    $DB->update_record('elluminate', $elluminate);
    elluminate_grade_item_update($elluminate);
    elluminate_check_for_new_groups($elluminate);
    if ($elluminate->sessiontype == '2' || $elluminate->sessiontype == '3') {
        if ($elluminate->groupmode != 0) {
            elluminate_update_group_records($elluminate);
        } else {
            elluminate_update_events($meeting);
        }
    } else {
        elluminate_update_events($meeting);
    }
    $meeting = $DB->get_record('elluminate', array('id' => $elluminate->instance));
    return true;
}
function elluminate_update_instance($elluminate)
{
    global $CFG;
    global $USER;
    $update_id = $elluminate->update;
    $meeting = get_record('elluminate', 'id', $elluminate->instance);
    $elluminate->creator = $meeting->creator;
    $elluminate->chairlist = $meeting->chairlist;
    /// The start and end times don't make sense.
    if ($elluminate->timestart > $elluminate->timeend) {
        $a = new stdClass();
        $a->timestart = userdate($elluminate->timestart);
        $a->timeend = userdate($elluminate->timeend);
        redirect($CFG->wwwroot . '/course/modedit.php?update=' . $elluminate->coursemodule . '&amp;return=1', get_string('invalidsessiontimes', 'elluminate', $a), 5);
    }
    if ($elluminate->timestart == $elluminate->timeend) {
        $a = new stdClass();
        $a->timestart = userdate($elluminate->timestart);
        $a->timeend = userdate($elluminate->timeend);
        redirect($CFG->wwwroot . '/course/modedit.php?update=' . $elluminate->coursemodule . '&amp;return=1', get_string('samesessiontimes', 'elluminate', $a), 5);
    }
    $timenow = time();
    $yearinseconds = 31536000;
    $timedif = $elluminate->timeend - $elluminate->timestart;
    if ($timedif > $yearinseconds) {
        $a = new stdClass();
        $a->timestart = userdate($elluminate->timestart);
        $a->timeend = userdate($elluminate->timeend);
        redirect($CFG->wwwroot . '/course/modedit.php?update=' . $elluminate->coursemodule . '&amp;return=1', get_string('meetinglessthanyear', 'elluminate', $a), 5);
    }
    $year_later = $timenow + $yearinseconds;
    if ($elluminate->timestart > $year_later) {
        $a = new stdClass();
        $a->timestart = userdate($elluminate->timestart);
        $a->timeend = userdate($elluminate->timeend);
        redirect($CFG->wwwroot . '/course/mod.php?id=' . $elluminate->course . '&amp;section=' . $elluminate->section . '&amp;sesskey=' . $USER->sesskey . '&amp;add=elluminate', get_string('meetingstartoverayear', 'elluminate', $a), 5);
    }
    $elluminate->timemodified = time();
    $elluminate->id = $elluminate->instance;
    /// The start and end times don't make sense.
    if ($elluminate->timestart > $elluminate->timeend) {
        /// Get the course module ID for this instance.
        $sql = "SELECT cm.id\n\t\t\t\t\t\t                    FROM {$CFG->prefix}modules m,\n\t\t\t\t\t\t                    {$CFG->prefix}course_modules cm\n\t\t\t\t\t\t                    WHERE m.name = 'elluminate'\n\t\t\t\t\t\t                    AND cm.module = m.id\n\t\t\t\t\t\t                    AND cm.instance = '{$elluminate->id}'";
        if (!($cmid = get_field_sql($sql))) {
            redirect($CFG->wwwroot . '/mod/elluminate/view.php?id=' . $elluminate->id, 'The meeting start time of ' . userdate($elluminate->timestart) . ' is after the meeting end time of ' . userdate($end), 5);
        }
        redirect($CFG->wwwroot . '/course/mod.php?update=' . $cmid . '&amp;return=true&amp;' . 'sesskey=' . $USER->sesskey, 'The meeting start time of ' . userdate($elluminate->timestart) . ' is after the meeting end time of ' . userdate($end), 5);
    }
    /// If the grade value for attendance has changed, modify any existing attendance records.
    if ($elluminate->grade != $meeting->grade) {
        if ($attendance = get_records('elluminate_attendance', 'elluminateid', $meeting->id)) {
            foreach ($attendance as $attendee) {
                if ($attendee->grade > 0) {
                    /// We're using a scale.
                    if ($elluminate->grade < 0) {
                        $grades = make_grades_menu($elluminate->grade);
                        $attendee->grade = key($grades);
                        /// We're using a numerical value.
                    } else {
                        $attendee->grade = $elluminate->grade;
                    }
                    update_record('elluminate_attendance', $attendee);
                    elluminate_update_grades($elluminate, $attendee->userid);
                }
            }
        }
    }
    if (empty($elluminate->boundarytimedisplay)) {
        $elluminate->boundarytimedisplay = 0;
    }
    $elluminate->seats = 0;
    //$elluminate->sessionname = $elluminate->name;
    $search = array("<", ">", "&", "#", "%", "\"", "\\", "|");
    $replace = '';
    $databasesafe = array("'");
    $replacedb = '\\\'';
    $elluminate->sessionname = str_replace($search, $replace, $elluminate->sessionname);
    $elluminate->sessionname = str_replace($databasesafe, $replacedb, $elluminate->sessionname);
    $elluminate->description = addslashes($elluminate->description);
    if (empty($elluminate->sessionname)) {
        redirect($CFG->wwwroot . '/course/modedit.php?update=' . $update_id . '&amp;return=1', get_string('meetingnameempty', 'elluminate'), 5);
    } else {
        if (!ctype_alnum(substr($elluminate->sessionname, 0, 1))) {
            redirect($CFG->wwwroot . '/course/modedit.php?update=' . $update_id . '&amp;return=1', get_string('meetingnamemustbeginwithalphanumeric', 'elluminate'), 5);
        }
    }
    if (!empty($meeting->meetingid)) {
        if (!($create_result = elluminate_update_meeting($meeting->meetingid, $elluminate->timestart, $elluminate->timeend, $elluminate->sessionname, '', '', $elluminate->private, $elluminate->seats, $elluminate->boundarytime, $elluminate->recordingmode, '', $elluminate->id))) {
            return false;
        }
    }
    $elluminate->name = htmlentities($elluminate->name);
    update_record('elluminate', $elluminate);
    elluminate_grade_item_update($elluminate);
    elluminate_check_for_new_groups($elluminate);
    if ($elluminate->sessiontype == '2' || $elluminate->sessiontype == '3') {
        if ($elluminate->groupmode != 0) {
            elluminate_update_group_records($elluminate);
        }
    }
    return true;
}