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 . '&section=' . $elluminate->section . '&sesskey=' . $USER->sesskey . '&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 . '&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 . '&section=' . $elluminate->section . '&sesskey=' . $USER->sesskey . '&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 . '&return=true&' . '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 . '&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 . '&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); } $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 . '&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 . '&section=' . $elluminate->section . '&sesskey=' . $USER->sesskey . '&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 . '&return=true&' . '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 . '&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 . '&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; }