From 46453565f34fb6a0df7197c675d7c90be04d1be6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20S=CC=8Ckoda?= Date: Wed, 14 Nov 2012 19:03:07 +0100 Subject: [PATCH] MDL-36547 do not use modinfo when creating new modules, improve coding style --- course/lib.php | 20 +++++++++++++------- lib/phpunit/classes/module_generator.php | 1 + 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/course/lib.php b/course/lib.php index 7d2ed99bfa2..15c7efceb07 100644 --- a/course/lib.php +++ b/course/lib.php @@ -2759,7 +2759,7 @@ function course_create_sections_if_missing($courseorid, $sections) { * Updates both tables {course_sections} and {course_modules} * * @param int|stdClass $courseorid course id or course object - * @param int $modid id of the module already existing in course_modules table + * @param int $cmid id of the module already existing in course_modules table * @param int $sectionnum relative number of the section (field course_sections.section) * If section does not exist it will be created * @param int|stdClass $beforemod id or object with field id corresponding to the module @@ -2767,25 +2767,31 @@ function course_create_sections_if_missing($courseorid, $sections) { * end of the section * @return int The course_sections ID where the module is inserted */ -function course_add_cm_to_section($courseorid, $modid, $sectionnum, $beforemod = null) { +function course_add_cm_to_section($courseorid, $cmid, $sectionnum, $beforemod = null) { global $DB, $COURSE; if (is_object($beforemod)) { $beforemod = $beforemod->id; } + if (is_object($courseorid)) { + $courseid = $courseorid->id; + } else { + $courseid = $courseorid; + } course_create_sections_if_missing($courseorid, $sectionnum); - $section = get_fast_modinfo($courseorid)->get_section_info($sectionnum); + // Do not try to use modinfo here, there is no guarantee it is valid! + $section = $DB->get_record('course_sections', array('course'=>$courseid, 'section'=>$sectionnum), '*', MUST_EXIST); $modarray = explode(",", trim($section->sequence)); if (empty($section->sequence)) { - $newsequence = "$modid"; + $newsequence = "$cmid"; } else if ($beforemod && ($key = array_keys($modarray, $beforemod))) { - $insertarray = array($modid, $beforemod); + $insertarray = array($cmid, $beforemod); array_splice($modarray, $key[0], 1, $insertarray); $newsequence = implode(",", $modarray); } else { - $newsequence = "$section->sequence,$modid"; + $newsequence = "$section->sequence,$cmid"; } $DB->set_field("course_sections", "sequence", $newsequence, array("id" => $section->id)); - $DB->set_field('course_modules', 'section', $section->id, array('id' => $modid)); + $DB->set_field('course_modules', 'section', $section->id, array('id' => $cmid)); if (is_object($courseorid)) { rebuild_course_cache($courseorid->id, true); } else { diff --git a/lib/phpunit/classes/module_generator.php b/lib/phpunit/classes/module_generator.php index aae6919e322..ffa20f9724b 100644 --- a/lib/phpunit/classes/module_generator.php +++ b/lib/phpunit/classes/module_generator.php @@ -83,6 +83,7 @@ abstract class phpunit_module_generator { $modulename = $this->get_modulename(); $sectionnum = isset($options['section']) ? $options['section'] : 0; + unset($options['section']); // Prevent confusion, it would be overridden later in course_add_cm_to_section() anyway. $cm = new stdClass(); $cm->course = $courseid;