Merge branch 'MDL-44065-m25' of https://github.com/sammarshallou/moodle into MOODLE_25_STABLE

This commit is contained in:
Dan Poltawski
2014-03-05 10:52:50 +08:00
+14 -3
View File
@@ -83,6 +83,9 @@ function add_moduleinfo($moduleinfo, $course, $mform = null) {
$newcm->showdescription = 0;
}
// From this point we make database changes, so start transaction.
$transaction = $DB->start_delegated_transaction();
if (!$moduleinfo->coursemodule = add_course_module($newcm)) {
print_error('cannotaddcoursemodule');
}
@@ -95,14 +98,21 @@ function add_moduleinfo($moduleinfo, $course, $mform = null) {
}
$addinstancefunction = $moduleinfo->modulename."_add_instance";
$returnfromfunc = $addinstancefunction($moduleinfo, $mform);
try {
$returnfromfunc = $addinstancefunction($moduleinfo, $mform);
} catch (moodle_exception $e) {
$returnfromfunc = $e;
}
if (!$returnfromfunc or !is_number($returnfromfunc)) {
// Undo everything we can.
// Undo everything we can. This is not necessary for databases which
// support transactions, but improves consistency for other databases.
$modcontext = context_module::instance($moduleinfo->coursemodule);
delete_context(CONTEXT_MODULE, $moduleinfo->coursemodule);
$DB->delete_records('course_modules', array('id'=>$moduleinfo->coursemodule));
if (!is_number($returnfromfunc)) {
if ($e instanceof moodle_exception) {
throw $e;
} else if (!is_number($returnfromfunc)) {
print_error('invalidfunction', '', course_get_url($course, $cw->section));
} else {
print_error('cannotaddnewmodule', '', course_get_url($course, $cw->section), $moduleinfo->modulename);
@@ -150,6 +160,7 @@ function add_moduleinfo($moduleinfo, $course, $mform = null) {
"$moduleinfo->instance", $moduleinfo->coursemodule);
$moduleinfo = edit_module_post_actions($moduleinfo, $course, 'mod_created');
$transaction->allow_commit();
return $moduleinfo;
}