From ac9c42de1f93cff71633bbdbbcc0aa31d1675985 Mon Sep 17 00:00:00 2001 From: tjhunt Date: Thu, 13 Nov 2008 08:21:47 +0000 Subject: [PATCH] course settings: MDL-16327 when creating a course, the role renames were not saved. --- course/edit_form.php | 1 + course/lib.php | 77 +++++++++++++++++++++++--------------------- 2 files changed, 41 insertions(+), 37 deletions(-) diff --git a/course/edit_form.php b/course/edit_form.php index 8a1535a5cb5..2b6250cb809 100644 --- a/course/edit_form.php +++ b/course/edit_form.php @@ -387,6 +387,7 @@ class course_edit_form extends moodleform { if ($roles = get_records('role')) { foreach ($roles as $role) { $mform->addElement('text', 'role_'.$role->id, $role->name); + $mform->setType('role_'.$role->id, PARAM_TEXT); if ($coursecontext) { if ($rolename = get_record('role_names', 'roleid', $role->id, 'contextid', $coursecontext->id)) { $mform->setDefault('role_'.$role->id, $rolename->name); diff --git a/course/lib.php b/course/lib.php index 9fe5c2dcc9e..333b57f7812 100644 --- a/course/lib.php +++ b/course/lib.php @@ -3069,8 +3069,40 @@ function can_delete_course($courseid) { && has_capability('moodle/course:manageactivities', $context)) ); } +/** + * Save the Your name for 'Some role' strings. + * + * @param integer $courseid the id of this course. + * @param array $data the data that came from the course settings form. + */ +function save_local_role_names($courseid, $data) { + $context = get_context_instance(CONTEXT_COURSE, $courseid); -/* + foreach ($data as $fieldname => $value) { + if (!strstr($fieldname, 'role_')) { + continue; + } + list($ignored, $roleid) = explode('_', $fieldname); + + // make up our mind whether we want to delete, update or insert + if (!$value) { + delete_records('role_names', 'contextid', $context->id, 'roleid', $roleid); + + } else if ($rolename = get_record('role_names', 'contextid', $context->id, 'roleid', $roleid)) { + $rolename->name = $value; + update_record('role_names', $rolename); + + } else { + $rolename = new stdClass; + $rolename->contextid = $context->id; + $rolename->roleid = $roleid; + $rolename->name = $value; + insert_record('role_names', $rolename, false); + } + } +} + +/** * Create a course and either return a $course object or false * * @param object $data - all the data needed for an entry in the 'course' table @@ -3115,7 +3147,10 @@ function create_course($data) { add_to_log(SITEID, 'course', 'new', 'view.php?id='.$course->id, $data->fullname.' (ID '.$course->id.')'); - //trigger events + // Save any custom role names. + save_local_role_names($course->id, $data); + + // Trigger events events_trigger('course_created', $course); return $course; @@ -3124,7 +3159,6 @@ function create_course($data) { return false; // error } - /** * Update a course and return true or false * @@ -3176,41 +3210,10 @@ function update_course($data) { $page = page_create_object(PAGE_COURSE_VIEW, $course->id); blocks_remove_inappropriate($page); - // put custom role names into db - $context = get_context_instance(CONTEXT_COURSE, $course->id); + // Save any custom role names. + save_local_role_names($course->id, $data); - foreach ($data as $dname => $dvalue) { - - // is this the right param? - $dvalue = clean_param($dvalue, PARAM_NOTAGS); - - if (!strstr($dname, 'role_')) { - continue; - } - - $dt = explode('_', $dname); - $roleid = $dt[1]; - // make up our mind whether we want to delete, update or insert - - if (empty($dvalue)) { - - delete_records('role_names', 'contextid', $context->id, 'roleid', $roleid); - - } else if ($t = get_record('role_names', 'contextid', $context->id, 'roleid', $roleid)) { - - $t->name = $dvalue; - update_record('role_names', $t); - - } else { - - $t->contextid = $context->id; - $t->roleid = $roleid; - $t->name = $dvalue; - insert_record('role_names', $t); - } - - } - //trigger events + // Trigger events events_trigger('course_updated', $course); return true;