mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 17:36:38 +02:00
Merge branch 'MDL-39876-master' of git://github.com/sammarshallou/moodle
Conflicts: course/lib.php
This commit is contained in:
commit
6eee89bc8f
191 changed files with 280 additions and 274 deletions
|
@ -1428,27 +1428,25 @@ function get_local_override($roleid, $contextid, $capability) {
|
|||
* @return array of ($context, $course, $cm)
|
||||
*/
|
||||
function get_context_info_array($contextid) {
|
||||
global $DB;
|
||||
|
||||
$context = context::instance_by_id($contextid, MUST_EXIST);
|
||||
$course = null;
|
||||
$cm = null;
|
||||
|
||||
if ($context->contextlevel == CONTEXT_COURSE) {
|
||||
$course = $DB->get_record('course', array('id'=>$context->instanceid), '*', MUST_EXIST);
|
||||
$course = get_course($context->instanceid);
|
||||
|
||||
} else if ($context->contextlevel == CONTEXT_MODULE) {
|
||||
$cm = get_coursemodule_from_id('', $context->instanceid, 0, false, MUST_EXIST);
|
||||
$course = $DB->get_record('course', array('id'=>$cm->course), '*', MUST_EXIST);
|
||||
$course = get_course($cm->course);
|
||||
|
||||
} else if ($context->contextlevel == CONTEXT_BLOCK) {
|
||||
$parent = $context->get_parent_context();
|
||||
|
||||
if ($parent->contextlevel == CONTEXT_COURSE) {
|
||||
$course = $DB->get_record('course', array('id'=>$parent->instanceid), '*', MUST_EXIST);
|
||||
$course = get_course($parent->instanceid);
|
||||
} else if ($parent->contextlevel == CONTEXT_MODULE) {
|
||||
$cm = get_coursemodule_from_id('', $parent->instanceid, 0, false, MUST_EXIST);
|
||||
$course = $DB->get_record('course', array('id'=>$cm->course), '*', MUST_EXIST);
|
||||
$course = get_course($cm->course);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3578,7 +3578,7 @@ class admin_setting_sitesetselect extends admin_setting_configselect {
|
|||
* @return string empty or error message
|
||||
*/
|
||||
public function write_setting($data) {
|
||||
global $DB, $SITE, $COURSE;
|
||||
global $SITE, $COURSE;
|
||||
if (!in_array($data, array_keys($this->choices))) {
|
||||
return get_string('errorsetting', 'admin');
|
||||
}
|
||||
|
@ -3589,17 +3589,16 @@ class admin_setting_sitesetselect extends admin_setting_configselect {
|
|||
$record->timemodified = time();
|
||||
|
||||
course_get_format($SITE)->update_course_format_options($record);
|
||||
$DB->update_record('course', $record);
|
||||
update_course_record($record);
|
||||
|
||||
// Reset caches.
|
||||
$SITE = $DB->get_record('course', array('id'=>$SITE->id), '*', MUST_EXIST);
|
||||
$SITE = get_course($SITE->id);
|
||||
if ($SITE->id == $COURSE->id) {
|
||||
$COURSE = $SITE;
|
||||
}
|
||||
format_base::reset_course_cache($SITE->id);
|
||||
|
||||
return '';
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3781,22 +3780,21 @@ class admin_setting_sitesetcheckbox extends admin_setting_configcheckbox {
|
|||
* @return string empty string or error message
|
||||
*/
|
||||
public function write_setting($data) {
|
||||
global $DB, $SITE, $COURSE;
|
||||
global $SITE, $COURSE;
|
||||
$record = new stdClass();
|
||||
$record->id = $SITE->id;
|
||||
$record->{$this->name} = ($data == '1' ? 1 : 0);
|
||||
$record->timemodified = time();
|
||||
|
||||
course_get_format($SITE)->update_course_format_options($record);
|
||||
$DB->update_record('course', $record);
|
||||
update_course_record($record);
|
||||
|
||||
// Reset caches.
|
||||
$SITE = $DB->get_record('course', array('id'=>$SITE->id), '*', MUST_EXIST);
|
||||
$SITE = get_course($SITE->id);
|
||||
if ($SITE->id == $COURSE->id) {
|
||||
$COURSE = $SITE;
|
||||
}
|
||||
format_base::reset_course_cache($SITE->id);
|
||||
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
@ -3843,7 +3841,7 @@ class admin_setting_sitesettext extends admin_setting_configtext {
|
|||
* @return string empty or error message
|
||||
*/
|
||||
public function write_setting($data) {
|
||||
global $DB, $SITE, $COURSE;
|
||||
global $SITE, $COURSE;
|
||||
$data = trim($data);
|
||||
$validated = $this->validate($data);
|
||||
if ($validated !== true) {
|
||||
|
@ -3856,15 +3854,14 @@ class admin_setting_sitesettext extends admin_setting_configtext {
|
|||
$record->timemodified = time();
|
||||
|
||||
course_get_format($SITE)->update_course_format_options($record);
|
||||
$DB->update_record('course', $record);
|
||||
update_course_record($record);
|
||||
|
||||
// Reset caches.
|
||||
$SITE = $DB->get_record('course', array('id'=>$SITE->id), '*', MUST_EXIST);
|
||||
$SITE = get_course($SITE->id);
|
||||
if ($SITE->id == $COURSE->id) {
|
||||
$COURSE = $SITE;
|
||||
}
|
||||
format_base::reset_course_cache($SITE->id);
|
||||
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
@ -3907,7 +3904,7 @@ class admin_setting_special_frontpagedesc extends admin_setting {
|
|||
$record->timemodified = time();
|
||||
|
||||
course_get_format($SITE)->update_course_format_options($record);
|
||||
$DB->update_record('course', $record);
|
||||
update_course_record($record);
|
||||
|
||||
// Reset caches.
|
||||
$SITE = $DB->get_record('course', array('id'=>$SITE->id), '*', MUST_EXIST);
|
||||
|
|
|
@ -584,6 +584,27 @@ function get_course($courseid, $clone = true) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates a course record in database. If the update affects the global $COURSE
|
||||
* or $SITE, then these variables are also changed.
|
||||
*
|
||||
* @param stdClass $courserec Course record
|
||||
* @throws dml_exception If error updating database
|
||||
*/
|
||||
function update_course_record($courserec) {
|
||||
global $DB, $COURSE, $SITE;
|
||||
$DB->update_record('course', $courserec);
|
||||
if (!empty($COURSE->id) && $COURSE->id == $courserec->id) {
|
||||
foreach ((array)$courserec as $name => $value) {
|
||||
$COURSE->{$name} = $value;
|
||||
}
|
||||
} else if (!empty($SITE->id) && $SITE->id == $courserec->id) {
|
||||
foreach ((array)$courserec as $name => $value) {
|
||||
$SITE->{$name} = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns list of courses, for whole site, or category
|
||||
*
|
||||
|
|
|
@ -96,7 +96,7 @@ function xmldb_main_install() {
|
|||
}
|
||||
// Make sure site course context exists
|
||||
context_course::instance($SITE->id);
|
||||
// Update the global frontpage cache
|
||||
// Update the global frontpage cache from database.
|
||||
$SITE = $DB->get_record('course', array('id'=>$newsite->id), '*', MUST_EXIST);
|
||||
|
||||
|
||||
|
|
|
@ -247,7 +247,7 @@ class course_modinfo extends stdClass {
|
|||
// Check modinfo field is set. If not, build and load it.
|
||||
if (empty($course->modinfo) || empty($course->sectioncache)) {
|
||||
rebuild_course_cache($course->id);
|
||||
$course = $DB->get_record('course', array('id'=>$course->id), '*', MUST_EXIST);
|
||||
$course = get_course($course->id);
|
||||
}
|
||||
|
||||
// Set initial values
|
||||
|
@ -1468,19 +1468,16 @@ function rebuild_course_cache($courseid=0, $clearonly=false) {
|
|||
if ($clearonly) {
|
||||
if (empty($courseid)) {
|
||||
$DB->execute('UPDATE {course} set modinfo = ?, sectioncache = ?', array(null, null));
|
||||
// Clear the cached globals too.
|
||||
$COURSE->modinfo = null;
|
||||
$COURSE->sectioncache = null;
|
||||
$SITE->modinfo = null;
|
||||
$SITE->sectioncache = null;
|
||||
} else {
|
||||
// Clear both fields in one update
|
||||
$resetobj = (object)array('id' => $courseid, 'modinfo' => null, 'sectioncache' => null);
|
||||
$DB->update_record('course', $resetobj);
|
||||
}
|
||||
// update cached global COURSE too ;-)
|
||||
if ($courseid == $COURSE->id or empty($courseid)) {
|
||||
$COURSE->modinfo = null;
|
||||
$COURSE->sectioncache = null;
|
||||
}
|
||||
if ($courseid == $SITE->id) {
|
||||
$SITE->modinfo = null;
|
||||
$SITE->sectioncache = null;
|
||||
// Update course object including cached globals.
|
||||
update_course_record($resetobj);
|
||||
}
|
||||
// reset the fast modinfo cache
|
||||
get_fast_modinfo($courseid, 0, true);
|
||||
|
@ -1502,16 +1499,9 @@ function rebuild_course_cache($courseid=0, $clearonly=false) {
|
|||
$sectioncache = serialize(course_modinfo::build_section_cache($course->id));
|
||||
$updateobj = (object)array('id' => $course->id,
|
||||
'modinfo' => $modinfo, 'sectioncache' => $sectioncache);
|
||||
$DB->update_record("course", $updateobj);
|
||||
// update cached global COURSE too ;-)
|
||||
if ($course->id == $COURSE->id) {
|
||||
$COURSE->modinfo = $modinfo;
|
||||
$COURSE->sectioncache = $sectioncache;
|
||||
}
|
||||
if ($course->id == $SITE->id) {
|
||||
$SITE->modinfo = $modinfo;
|
||||
$SITE->sectioncache = $sectioncache;
|
||||
}
|
||||
|
||||
// Update course object including cached globals.
|
||||
update_course_record($updateobj);
|
||||
}
|
||||
$rs->close();
|
||||
// reset the fast modinfo cache
|
||||
|
|
|
@ -2887,7 +2887,7 @@ function require_login($courseorid = null, $autologinguest = true, $cm = null, $
|
|||
} else if ($courseorid == SITEID) {
|
||||
$course = clone($SITE);
|
||||
} else {
|
||||
$course = $DB->get_record('course', array('id' => $courseorid), '*', MUST_EXIST);
|
||||
$course = get_course($courseorid);
|
||||
}
|
||||
if ($cm) {
|
||||
if ($cm->course != $course->id) {
|
||||
|
@ -4912,7 +4912,7 @@ function remove_course_contents($courseid, $showfeedback = true, array $options
|
|||
// Some crazy wishlist of stuff we should skip during purging of course content.
|
||||
$options = (array)$options;
|
||||
|
||||
$course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
|
||||
$course = get_course($courseid);
|
||||
$coursecontext = context_course::instance($courseid);
|
||||
$fs = get_file_storage();
|
||||
|
||||
|
@ -5105,7 +5105,7 @@ function remove_course_contents($courseid, $showfeedback = true, array $options
|
|||
if (!empty($options['keep_groups_and_groupings'])) {
|
||||
$oldcourse->defaultgroupingid = 0;
|
||||
}
|
||||
$DB->update_record('course', $oldcourse);
|
||||
update_course_record($oldcourse);
|
||||
|
||||
// Delete course sections and availability options.
|
||||
$DB->delete_records_select('course_sections_availability',
|
||||
|
|
|
@ -2744,7 +2744,7 @@ class global_navigation_for_ajax extends global_navigation {
|
|||
$this->load_category($this->instanceid, self::TYPE_MY_CATEGORY);
|
||||
break;
|
||||
case self::TYPE_COURSE :
|
||||
$course = $DB->get_record('course', array('id' => $this->instanceid), '*', MUST_EXIST);
|
||||
$course = get_course($this->instanceid);
|
||||
require_course_login($course, true, null, false, true);
|
||||
$this->page->set_context(context_course::instance($course->id));
|
||||
$coursenode = $this->add_course($course);
|
||||
|
|
|
@ -950,7 +950,7 @@ class moodle_page {
|
|||
|
||||
if (!$this->_course || $this->_course->id != $cm->course) {
|
||||
if (!$course) {
|
||||
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
|
||||
$course = get_course($cm->course);
|
||||
}
|
||||
if ($course->id != $cm->course) {
|
||||
throw new coding_exception('The course you passed to $PAGE->set_cm does not correspond to the $cm.');
|
||||
|
|
|
@ -2120,8 +2120,8 @@ class core_accesslib_testcase extends advanced_testcase {
|
|||
$guestid = $CFG->siteguest;
|
||||
|
||||
// Enrol some users into some courses.
|
||||
$course1 = $DB->get_record('course', array('id'=>$testcourses[22]), '*', MUST_EXIST);
|
||||
$course2 = $DB->get_record('course', array('id'=>$testcourses[7]), '*', MUST_EXIST);
|
||||
$course1 = get_course($testcourses[22]);
|
||||
$course2 = get_course($testcourses[7]);
|
||||
$cms = $DB->get_records('course_modules', array('course'=>$course1->id), 'id');
|
||||
$cm1 = reset($cms);
|
||||
$blocks = $DB->get_records('block_instances', array('parentcontextid'=>context_module::instance($cm1->id)->id), 'id');
|
||||
|
@ -2433,7 +2433,7 @@ class core_accesslib_testcase extends advanced_testcase {
|
|||
$miscid = $DB->get_field_sql("SELECT MIN(id) FROM {course_categories}");
|
||||
$categorycontext = context_coursecat::instance($miscid);
|
||||
$course->category = $miscid;
|
||||
$DB->update_record('course', $course);
|
||||
update_course_record($course);
|
||||
$context->update_moved($categorycontext);
|
||||
|
||||
$context = context_course::instance($course->id);
|
||||
|
@ -2672,7 +2672,7 @@ class core_accesslib_testcase extends advanced_testcase {
|
|||
$miscid = $DB->get_field_sql("SELECT MIN(id) FROM {course_categories}");
|
||||
$categorycontext = context_coursecat::instance($miscid);
|
||||
$course->category = $miscid;
|
||||
$DB->update_record('course', $course);
|
||||
update_course_record($course);
|
||||
context_moved($context, $categorycontext);
|
||||
$this->assertDebuggingCalled('context_moved() is deprecated, please use context::update_moved() instead.', DEBUG_DEVELOPER);
|
||||
$context = context_course::instance($course->id);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue