Skip to content

Commit

Permalink
MDL-32570 enrol_imsenterprise: don't hardcode default category id
Browse files Browse the repository at this point in the history
  • Loading branch information
danpoltawski committed Oct 1, 2013
1 parent d45e65c commit 259e7e6
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 2 deletions.
25 changes: 23 additions & 2 deletions enrol/imsenterprise/lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -415,10 +415,10 @@ function process_group_tag($tagcontents) {
} else {
// If not found and not allowed to create, stick with default
$this->log_line('Category '.$group->category.' not found in Moodle database, so using default category instead.');
$course->category = 1;
$course->category = $this->get_default_category_id();
}
} else {
$course->category = 1;
$course->category = $this->get_default_category_id();
}
$course->timecreated = time();
$course->startdate = time();
Expand Down Expand Up @@ -834,6 +834,27 @@ function enrol_imsenterprise_allow_group_member_remove($itemid, $groupid, $useri
}


/**
* Get the default category id (often known as 'Miscellaneous'),
* statically cached to avoid multiple DB lookups on big imports.
*
* @return int id of default category.
*/
private function get_default_category_id() {
global $CFG;
require_once($CFG->libdir.'/coursecatlib.php');

static $defaultcategoryid = null;

if ($defaultcategoryid === null) {
$category = coursecat::get_default();
$defaultcategoryid = $category->id;
}

return $defaultcategoryid;
}


} // end of class


26 changes: 26 additions & 0 deletions enrol/imsenterprise/tests/imsenterprise_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,32 @@ public function test_courses_add() {
$this->assertEquals(($prevncourses + 2), $DB->count_records('course'));
}

/**
* Add new course without a category.
*/
public function test_course_add_default_category() {
global $DB, $CFG;
require_once($CFG->libdir.'/coursecatlib.php');

$this->imsplugin->set_config('createnewcategories', false);

// Delete the default category, to ensure the plugin handles this gracefully.
$defaultcat = coursecat::get_default();
$defaultcat->delete_full(false);

// Create an course with the IMS plugin without a category.
$course1 = new stdClass();
$course1->idnumber = 'id1';
$course1->imsshort = 'id1';
$course1->category = '';
$this->set_xml_file(false, array($course1));
$this->imsplugin->cron();

// Check the course has been created.
$dbcourse = $DB->get_record('course', array('idnumber' => $course1->idnumber), '*', MUST_EXIST);
// Check that it belongs to a category which exists.
$this->assertTrue($DB->record_exists('course_categories', array('id' => $dbcourse->category)));
}

/**
* Course attributes mapping to IMS enterprise group description tags
Expand Down

0 comments on commit 259e7e6

Please sign in to comment.