From: skodak Date: Thu, 9 Nov 2006 21:29:31 +0000 (+0000) Subject: course/edit.php now uses new forms lib, the old one is gone; please report any proble... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=2378265e51685446815a72f341dc470ed16f91d4;p=moodle.git course/edit.php now uses new forms lib, the old one is gone; please report any problems in MDL-6949 --- diff --git a/course/edit.html b/course/edit.html deleted file mode 100644 index 766c3ef49a..0000000000 --- a/course/edit.html +++ /dev/null @@ -1,463 +0,0 @@ -showreports)) { - $form->showreports = 0; - } - if (!isset($form->maxbytes)) { - $form->maxbytes = 0; - } - if (!isset($form->hiddensections)) { - $form->hiddensections = 0; - } - if (!isset($form->lang)) { - $form->lang = ''; - } - if (!isset($form->theme)) { - $form->theme = ''; - } - if (!isset($form->enrol)) { - $form->enrol = ''; - } - if (!isset($form->enrollable)) { - $form->enrollable = 1; - } - if (!isset($form->enrolstartdate)) { - $form->enrolstartdate = 0; - } - if (!$form->enrolstartdate) { - $form->enrolstartdisabled = 1; - } - if (!isset($form->enrolenddate)) { - $form->enrolenddate = 0; - } - if (!$form->enrolenddate) { - $form->enrolenddisabled = 1; - } - if (!isset($form->enrolperiod)) { - $form->enrolperiod = 0; - } - if (!isset($form->expirynotify)) { - $form->expirynotify = 0; - } - if (!isset($form->notifystudents)) { - $form->notifystudents = 0; - } - if (!isset($form->expirythreshold)) { - $form->expirythreshold = 10 * 86400; - } - if (!isset($form->metacourse)) { - $form->metacourse = 0; - } - if(!isset($form->restrictmodules)) { - $form->restrictmodules = 0; - } - if(!isset($form->defaultrole)) { - $form->defaultrole = 0; // Use site default - } -?> -
- -category))) { ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -enrol), 'print_entry') && $course->enrol != 'manual') { -?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -allowcoursethemes)) { ?> - - - - - - - - - -requested) && $CFG->restrictmodulesfor == 'requested') || $CFG->restrictmodulesfor == 'all')) { ?> - - - - - - - - - - - -
:category", ""); - helpbutton("coursecategory", get_string("category")); - ?> -
:" /> - - -
:" /> - - -
:" /> - - -
:summary); - helpbutton("text", get_string("helptext")); - if (isset($err["summary"])) formerr($err["summary"]); - ?> -
:courseformats, "format", "$form->format", ""); - helpbutton("courseformats", get_string("courseformats")); - ?> -
:startdate); - helpbutton("coursestartdate", get_string("startdate")); - ?>
:enrol_plugins_enabled); - foreach ($modules as $module) { - $name = get_string("enrolname", "enrol_$module"); - $plugin = enrolment_factory::factory($module); - if (method_exists($plugin, 'print_entry')) { - $choices[$name] = $module; - } - } - asort($choices); - $choices = array_flip($choices); - $choices = array('' => get_string('sitedefault').' ('.get_string("enrolname", "enrol_$CFG->enrol").')') + $choices; - choose_from_menu ($choices, "enrol", "$form->enrol", ""); - helpbutton("courseenrolmentplugins", get_string("enrolmentplugins")); - ?>
:defaultrole && !isset($roles[$form->defaultrole])) { // Existing setting is one we can't choose - if ($coursedefaultrole = get_record('role', 'id', $form->defaultrole)) { - $choices[-1] = get_string('currentrole', 'role').' ('.$coursedefaultrole->name.')'; - } else { - $choices[-1] = get_string('currentrole', 'role'); - } - } - - if ($sitedefaultrole = get_record('role', 'id', $CFG->defaultcourseroleid)) { - $choices[0] = get_string('sitedefault').' ('.$sitedefaultrole->name.')'; - } else { - $choices[0] = get_string('sitedefault'); - } - - $choices = $choices + $roles; - - choose_from_menu ($choices, 'defaultrole', $form->defaultrole, ''); - helpbutton("coursedefaultrole", get_string("defaultrole")); - ?>
:enrollable", ""); - helpbutton("courseenrollable", get_string("enrollable")); - ?>
: - - - - - - - - - - - - -
: enrolstartdate); - print_string('disable'); - echo ': '; - print_checkbox('enrolstartdisabled', 1, "$form->enrolstartdisabled"); - ?>
: enrolenddate); - print_string('disable'); - echo ': '; - print_checkbox('enrolenddisabled', 1, "$form->enrolenddisabled"); - if (isset($err["enroldate"])) formerr($err["enroldate"]); - ?>
-
: - enrolperiod", ""); - helpbutton("enrolperiod", get_string("enrolperiod")); - ?> -
: - expirynotify", ""); - helpbutton("expirynotify", get_string("expirynotify")); - - echo '    '; - print_string('expirynotifystudents'); - echo ': '; - choose_from_menu ($choices, "notifystudents", "$form->notifystudents", ""); - helpbutton("expirynotifystudents", get_string("expirynotifystudents")); - - echo '    '; - print_string('expirythreshold'); - echo ': '; - for ($i=1; $i<=30; $i++) { - $seconds = $i * 86400; - $thresholdmenu[$seconds] = get_string('numdays', '', $i); - } - choose_from_menu ($thresholdmenu, "expirythreshold", "$form->expirythreshold", ""); - helpbutton("expirythreshold", get_string("expirythreshold")); - ?> -
:numsections", ""); - helpbutton("coursenumsections", get_string("numberweeks")); - ?>
:groupmode, ""); - helpbutton("groupmode", get_string("groupmode")); - - echo '    '; - print_string('force'); - echo ': '; - unset($choices); - $choices["0"] = get_string("no"); - $choices["1"] = get_string("yes"); - choose_from_menu ($choices, "groupmodeforce", $form->groupmodeforce, ""); - helpbutton("groupmodeforce", get_string("groupmodeforce")); ?> -
:visible, ""); - helpbutton("courseavailability", get_string("availability")); ?> -
:" /> - - -
:guest, ""); - helpbutton("guestaccess", get_string("opentoguests")); ?> -
:" /> - currency, ''); - helpbutton("cost", get_string("cost")); - ?> -
:hiddensections, ""); - helpbutton("coursehiddensections", get_string("hiddensections")); ?> -
: "0 $newsitems", - "1" => "1 $newsitem", - "2" => "2 $newsitems", - "3" => "3 $newsitems", - "4" => "4 $newsitems", - "5" => "5 $newsitems", - "6" => "6 $newsitems", - "7" => "7 $newsitems", - "8" => "8 $newsitems", - "9" => "9 $newsitems", - "10" => "10 $newsitems"); - choose_from_menu ($options, "newsitems", "$form->newsitems", ""); - helpbutton("coursenewsitems", get_string("newsitemsnumber")); - ?> -
:showgrades, ""); - helpbutton("coursegrades", get_string("grades")); ?> -
:showreports, ""); - helpbutton("coursereports", get_string("activityreport")); ?> -
:maxbytes); - choose_from_menu ($choices, "maxbytes", $form->maxbytes, ""); - helpbutton("courseuploadsize", get_string("maximumupload")); ?> -
: - lang, "", "", ""); - ?> -
: - theme, "", "", ""); - ?> -
: - metacourse,"","",""); - } else { - echo ((empty($form->metacourse)) ? get_string("no") : get_string("yes")); - echo " - $disable_meta "; - } - helpbutton("metacourse", get_string("metacourse"));?> -
:
- - restrictmodules,"","togglemodules(this.selectedIndex);",""); -?>     -
" />
-category))) { ?> - - - - -
diff --git a/course/edit.php b/course/edit.php index f4e9419100..8d0006aced 100644 --- a/course/edit.php +++ b/course/edit.php @@ -1,253 +1,93 @@ libdir/blocklib.php"); - require_once("$CFG->dirroot/enrol/enrol.class.php"); + require_once('../config.php'); + require_once($CFG->dirroot.'/enrol/enrol.class.php'); + require_once($CFG->libdir.'/blocklib.php'); + require_once($CFG->libdir.'/formslib.php'); + require_once('lib.php'); + require_once('edit_form.php'); - $id = optional_param('id', 0, PARAM_INT); // course id - $category = optional_param('category', 0, PARAM_INT); // possible default category - - // redirect to new form if testing as developer - if (!empty($CFG->use_new_forms)) { - redirect('edit2.php?id='.$id.'&category='.$category); - } + $id = optional_param('id', 0, PARAM_INT); // course id + $categoryid = optional_param('category', 0, PARAM_INT); // course category - can be changed in edit form require_login(); - - $disable_meta = false; - $focus = ""; - if ($id) { - if (! $course = get_record('course', 'id', $id)) { +/// basic access control checks + if ($id) { // editing course + if (!$course = get_record('course', 'id', $id)) { error('Course ID was incorrect'); } + $category = get_record('course_categories', 'id', $course->category); + require_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id)); - $context = get_context_instance(CONTEXT_COURSE, $course->id); - - if (!has_capability('moodle/course:update', $context)) { - error("You do not currently have editing privileges!"); + } else if ($categoryid) { // creating new course in this category + $course = null; + if (!$category = get_record('course_categories', 'id', $categoryid)) { + error('Category ID was incorrect'); } - - if (course_in_meta($course)) { - $disable_meta = get_string('metaalreadyinmeta'); + require_capability('moodle/course:create', get_context_instance(CONTEXT_COURSECAT, $category->id)); - } else if ($course->metacourse) { - if (count_records("course_meta","parent_course",$course->id) > 0) { - $disable_meta = get_string('metaalreadyhascourses'); - } + } else { + error('Either course id or category must be specified'); + } - } else { - $managers = count(get_users_by_capability($context, 'moodle/course:managemetacourse')); - $participants = count(get_users_by_capability($context, 'moodle/course:view')); - if ($participants > $managers) { - $disable_meta = get_string('metaalreadyhasenrolments'); +/// prepare course +if (!empty($course)) { + $allowedmods = array(); + if (!empty($course)) { + if ($am = get_records('course_allowed_modules','course',$course->id)) { + foreach ($am as $m) { + $allowedmods[] = $m->module; } + } else { + if (empty($course->restrictmodules)) { + $allowedmods = explode(',',$CFG->defaultallowedmodules); + } // it'll be greyed out but we want these by default anyway. } - } else { // Admin is creating a new course + $course->allowedmods = $allowedmods; - $context = get_context_instance(CONTEXT_SYSTEM, SITEID); - if (!has_capability('moodle/course:create',$context)) { - error("You do not currently have course creation privileges!"); + if ($course->enrolstartdate){ + $course->enrolstartdisabled = 0; } - $course = NULL; + if ($course->enrolenddate) { + $course->enrolenddisabled = 0; + } } - if (! $site = get_site()) { - redirect("$CFG->wwwroot/$CFG->admin/index.php"); - } +} -/// If data submitted, then process and store. +/// first create the form + $editform = new course_edit_form('edit.php', compact('course', 'category')); - if ($form = data_submitted() and confirm_sesskey()) { - $form->startdate = make_timestamp($form->startyear, $form->startmonth, $form->startday); - $form->category = clean_param($form->category, PARAM_INT); +/// process data if submitted + if ($data = $editform->data_submitted()) { - if (empty($form->enrolstartdisabled)) { - $form->enrolstartdate = make_timestamp($form->enrolstartyear, $form->enrolstartmonth, $form->enrolstartday); - } else { - $form->enrolstartdate = 0; + //preprocess data + if ($data->enrolstartdisabled){ + $data->enrolstartdate = 0; } - if (empty($form->enrolenddisabled)) { - $form->enrolenddate = make_timestamp($form->enrolendyear, $form->enrolendmonth, $form->enrolendday); - } else { - $form->enrolenddate = 0; + if ($data->enrolenddisabled) { + $data->enrolenddate = 0; } - $form->format = optional_param('format', 'social', PARAM_ALPHA); - - $form->defaultrole = optional_param('defaultrole', 0, PARAM_INT); - if ($form->defaultrole == -1) { // Just leave it however it is - unset($form->defaultrole); - } - - $err = array(); - validate_form($course, $form, $err); - - if (count($err) == 0) { + $data->timemodified = time(); - $allowedmods = array(); - if (!empty($form->allowedmods)) { - $allowedmods = $form->allowedmods; - unset($form->allowedmods); - } - - $form->timemodified = time(); - - if (!empty($course)) { - // Test for and remove blocks which aren't appropriate anymore - $page = page_create_object(PAGE_COURSE_VIEW, $course->id); - blocks_remove_inappropriate($page); - - // Update with the new data - if (update_record('course', $form)) { - add_to_log($course->id, "course", "update", "edit.php?id=$id", ""); - if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM, SITEID))) { - $course->restrictmodules = $form->restrictmodules; - update_restricted_mods($course,$allowedmods); - } - fix_course_sortorder(); - // everything ok, no need to display any message in redirect - redirect("view.php?id=$course->id"); - } else { - error("Serious Error! Could not update the course record! (id = $form->id)"); - } - } else { - $form->timecreated = time(); - - // place at beginning of category - fix_course_sortorder(); - $form->sortorder = get_field_sql("SELECT min(sortorder)-1 FROM {$CFG->prefix}course WHERE category=$form->category"); - if (empty($form->sortorder)) { - $form->sortorder = 100; - } - // fill in default teacher and student names to keep backwards compatibility - $form->teacher = addslashes(get_string('defaultcourseteacher')); - $form->teachers = addslashes(get_string('defaultcourseteachers')); - $form->student = addslashes(get_string('defaultcoursestudent')); - $form->students = addslashes(get_string('defaultcoursestudents')); - - if ($newcourseid = insert_record('course', $form)) { // Set up new course - - // Setup the blocks - $page = page_create_object(PAGE_COURSE_VIEW, $newcourseid); - blocks_repopulate_page($page); // Return value not checked because you can always edit later - - if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM, SITEID))) { - $course = get_record("course","id",$newcourseid); - update_restricted_mods($course,$allowedmods); - } - - $section = NULL; - $section->course = $newcourseid; // Create a default section. - $section->section = 0; - $section->id = insert_record("course_sections", $section); - - fix_course_sortorder(); - add_to_log(SITEID, "course", "new", "view.php?id=$newcourseid", "$form->fullname (ID $newcourseid)") ; - $context = get_context_instance(CONTEXT_COURSE, $newcourseid); - - if ($form->metacourse and has_capability('moodle/course:managemetacourse', $context)) { // Redirect users with metacourse capability to student import - redirect($CFG->wwwroot."/course/importstudents.php?id=$newcourseid"); - - } else if (has_capability('moodle/role:assign', $context)) { // Redirect users with assign capability to assign users to different roles - redirect($CFG->wwwroot."/$CFG->admin/roles/assign.php?contextid=$context->id"); - - } else { // Add current teacher and send to course - - // find a role with legacy:edittingteacher - if ($teacherroles = get_roles_with_capability('moodle/legacy:editingteacher', CAP_ALLOW, $context)) { - // assign the role to this user - $teachereditrole = array_shift($teacherroles); - role_assign($teachereditrole->id, $USER->id, 0, $context->id); - } - - redirect("view.php?id=$newcourseid"); - } - - } else { - error("Serious Error! Could not create the new course!"); - } - } - die; - } else { - foreach ($err as $key => $value) { - $focus = "form.$key"; - } - - } - } - -/// Otherwise fill and print the form. - - if (empty($form)) { - if (!empty($course)) { - $form = $course; + if (empty($course)) { + create_course($data); } else { - $form->startdate = time() + 3600 * 24; - $form->fullname = get_string("defaultcoursefullname"); - $form->shortname = get_string("defaultcourseshortname"); - $form->summary = get_string("defaultcoursesummary"); - $form->format = "weeks"; - $form->password = ""; - $form->guest = 0; - $form->numsections = 10; - $form->idnumber = ''; - $form->cost = ''; - $form->currency = empty($CFG->enrol_currency) ? 'USD' : $CFG->enrol_currency; - $form->newsitems = 5; - $form->showgrades = 1; - $form->groupmode = 0; - $form->groupmodeforce = 0; - $form->category = $category; - $form->id = ""; - $form->visible = 1; - + update_course($data); } - } else { - $form = stripslashes_safe($form); } - // !! no db access using data from $form beyond this point !! - $form->categories = get_records_select_menu("course_categories", "", "name", "id,name"); +///print the form - $courseformats = get_list_of_plugins("course/format"); - $form->courseformats = array(); - - foreach ($courseformats as $courseformat) { - $form->courseformats["$courseformat"] = get_string("format$courseformat"); - } - - if (empty($allowedmods)) { - $allowedmods = array(); - if (!empty($course)) { - if ($am = get_records("course_allowed_modules","course",$course->id)) { - foreach ($am as $m) { - $allowedmods[] = $m->module; - } - } else { - if (empty($course->restrictmodules)) { - $allowedmods = explode(',',$CFG->defaultallowedmodules); - } // it'll be greyed out but we want these by default anyway. - } - } else { - if ($CFG->restrictmodulesfor == 'all') { - $allowedmods = explode(',',$CFG->defaultallowedmodules); - if (!empty($CFG->restrictbydefault)) { - $form->restrictmodules = 1; - } - } - } - } - - - $usehtmleditor = can_use_html_editor(); + $site = get_site(); $streditcoursesettings = get_string("editcoursesettings"); $straddnewcourse = get_string("addnewcourse"); @@ -257,64 +97,127 @@ if (!empty($course)) { print_header($streditcoursesettings, "$course->fullname", "wwwroot/course/view.php?id=$course->id\">$course->shortname - -> $streditcoursesettings", $focus); + -> $streditcoursesettings", $editform->focus()); } else { print_header("$site->shortname: $straddnewcourse", "$site->fullname", - "admin/index.php\">$stradministration -> ". - "$strcategories -> $straddnewcourse", $focus); + "wwwroot/$CFG->admin/index.php\">$stradministration -> ". + "$strcategories -> $straddnewcourse", $editform->focus()); } - $form->sesskey = !empty($USER->id) ? $USER->sesskey : ''; - print_heading($streditcoursesettings); - print_simple_box_start("center"); - include("edit.html"); - print_simple_box_end(); + $editform->display(); + print_footer($course); - if ($usehtmleditor) { - use_html_editor("summary"); - } + die; - print_footer($course); - exit; +/// internal functions + +function create_course($data) { + global $CFG, $USER; -/// Functions ///////////////////////////////////////////////////////////////// + // preprocess allowed mods + $allowedmods = empty($data->allowedmods) ? array() : $data->allowedmods; + unset($data->allowedmods); + if (!has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { + if ($CFG->restrictmodulesfor == 'all') { + $data->restrictmodules = 1; + } else { + $data->restrictmodules = 0; + } + } -function validate_form($course, &$form, &$err) { - if (empty($form->enrolenddisabled) && $form->enrolenddate <= $form->enrolstartdate) { - $err["enroldate"] = get_string("enrolenddaterror"); + $data->timecreated = time(); + + // place at beginning of category + fix_course_sortorder(); + $data->sortorder = get_field_sql("SELECT min(sortorder)-1 FROM {$CFG->prefix}course WHERE category=$data->category"); + if (empty($data->sortorder)) { + $data->sortorder = 100; } - if (empty($form->fullname)) - $err["fullname"] = get_string("missingfullname"); + if ($newcourseid = insert_record('course', $data)) { // Set up new course + + $course = get_record('course', 'id', $newcourseid); - if (empty($form->shortname)) - $err["shortname"] = get_string("missingshortname"); + // Setup the blocks + $page = page_create_object(PAGE_COURSE_VIEW, $course->id); + blocks_repopulate_page($page); // Return value not checked because you can always edit later - if ($foundcourses = get_records("course", "shortname", $form->shortname)) { - if (!empty($course->id)) { - unset($foundcourses[$course->id]); + if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { + update_restricted_mods($course, $allowedmods); } - if (!empty($foundcourses)) { - foreach ($foundcourses as $foundcourse) { - $foundcoursenames[] = $foundcourse->fullname; - } - $foundcoursenamestring = addslashes(implode(',', $foundcoursenames)); - $err["shortname"] = get_string("shortnametaken", "", $foundcoursenamestring); + $section = new object(); + $section->course = $course->id; // Create a default section. + $section->section = 0; + $section->id = insert_record('course_sections', $section); + + fix_course_sortorder(); + add_to_log(SITEID, "course", "new", "view.php?id=$course->id", "$data->fullname (ID $course->id)") ; + $context = get_context_instance(CONTEXT_COURSE, $course->id); + + if ($data->metacourse and has_capability('moodle/course:managemetacourse', $context)) { // Redirect users with metacourse capability to student import + redirect($CFG->wwwroot."/course/importstudents.php?id=$course->id"); + + } else if (has_capability('moodle/role:assign', $context)) { // Redirect users with assign capability to assign users to different roles + redirect($CFG->wwwroot."/$CFG->admin/roles/assign.php?contextid=$context->id"); + + } else { // Add current teacher and send to course + // find a role with legacy:edittingteacher + if ($teacherroles = get_roles_with_capability('moodle/legacy:editingteacher', CAP_ALLOW, $context)) { + // assign the role to this user + $teachereditrole = array_shift($teacherroles); + role_assign($teachereditrole->id, $USER->id, 0, $context->id); + } + redirect($CFG->wwwroot."/course/view.php?id=$course->id"); } + + } else { + error("Serious Error! Could not create the new course!"); } + die; +} - if (empty($form->summary)) - $err["summary"] = get_string("missingsummary"); +function update_course($data) { + global $USER, $CFG; - if (! $form->category) - $err["category"] = get_string("missingcategory"); + // preprocess allowed mods + $allowedmods = empty($data->allowedmods) ? array() : $data->allowedmods; + unset($data->allowedmods); + if (!has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { + unset($data->restrictmodules); + } - return; -} + $oldcourse = get_record('course', 'id', $data->id); // should not fail, already tested above + if (!has_capability('moodle/course:create', get_context_instance(CONTEXT_COURSECAT, $oldcourse->category)) + or !has_capability('moodle/course:create', get_context_instance(CONTEXT_COURSECAT, $data->category))) { + // can not move to new category, keep the old one + unset($data->category); + } + // Update with the new data + if (update_record('course', $data)) { + + $course = get_record('course', 'id', $data->id); + + add_to_log($course->id, "course", "update", "edit.php?id=$course->id", ""); + if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { + update_restricted_mods($course, $allowedmods); + } + fix_course_sortorder(); + + // Test for and remove blocks which aren't appropriate anymore + $page = page_create_object(PAGE_COURSE_VIEW, $course->id); + blocks_remove_inappropriate($page); + + redirect($CFG->wwwroot."/course/view.php?id=$course->id"); + + } else { + error("Serious Error! Could not update the course record! (id = $form->id)"); + } + die; +} ?> diff --git a/course/edit2.php b/course/edit2.php deleted file mode 100644 index fd8492986d..0000000000 --- a/course/edit2.php +++ /dev/null @@ -1,223 +0,0 @@ -dirroot.'/enrol/enrol.class.php'); - require_once($CFG->libdir.'/blocklib.php'); - require_once($CFG->libdir.'/formslib.php'); - require_once('lib.php'); - require_once('edit_form.php'); - - $id = optional_param('id', 0, PARAM_INT); // course id - $categoryid = optional_param('category', 0, PARAM_INT); // course category - can be changed in edit form - - require_login(); - -/// basic access control checks - if ($id) { // editing course - if (!$course = get_record('course', 'id', $id)) { - error('Course ID was incorrect'); - } - $category = get_record('course_categories', 'id', $course->category); - require_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id)); - - } else if ($categoryid) { // creating new course in this category - $course = null; - if (!$category = get_record('course_categories', 'id', $categoryid)) { - error('Category ID was incorrect'); - } - require_capability('moodle/course:create', get_context_instance(CONTEXT_COURSECAT, $category->id)); - - } else { - error('Either course id or category must be specified'); - } - -/// prepare course -if (!empty($course)) { - $allowedmods = array(); - if (!empty($course)) { - if ($am = get_records('course_allowed_modules','course',$course->id)) { - foreach ($am as $m) { - $allowedmods[] = $m->module; - } - } else { - if (empty($course->restrictmodules)) { - $allowedmods = explode(',',$CFG->defaultallowedmodules); - } // it'll be greyed out but we want these by default anyway. - } - $course->allowedmods = $allowedmods; - - if ($course->enrolstartdate){ - $course->enrolstartdisabled = 0; - } - - if ($course->enrolenddate) { - $course->enrolenddisabled = 0; - } - } - -} - - -/// first create the form - $editform = new course_edit_form('edit2.php', compact('course', 'category')); - - -/// process data if submitted - if ($data = $editform->data_submitted()) { - - //preprocess data - if ($data->enrolstartdisabled){ - $data->enrolstartdate = 0; - } - - if ($data->enrolenddisabled) { - $data->enrolenddate = 0; - } - - $data->timemodified = time(); - - if (empty($course)) { - create_course($data); - } else { - update_course($data); - } - } - - -///print the form - - $site = get_site(); - - $streditcoursesettings = get_string("editcoursesettings"); - $straddnewcourse = get_string("addnewcourse"); - $stradministration = get_string("administration"); - $strcategories = get_string("categories"); - - if (!empty($course)) { - print_header($streditcoursesettings, "$course->fullname", - "wwwroot/course/view.php?id=$course->id\">$course->shortname - -> $streditcoursesettings", $editform->focus()); - } else { - print_header("$site->shortname: $straddnewcourse", "$site->fullname", - "wwwroot/$CFG->admin/index.php\">$stradministration -> ". - "$strcategories -> $straddnewcourse", $editform->focus()); - } - - print_heading($streditcoursesettings); - $editform->display(); - print_footer($course); - - die; - - -/// internal functions - -function create_course($data) { - global $CFG, $USER; - - // preprocess allowed mods - $allowedmods = empty($data->allowedmods) ? array() : $data->allowedmods; - unset($data->allowedmods); - if (!has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { - if ($CFG->restrictmodulesfor == 'all') { - $data->restrictmodules = 1; - } else { - $data->restrictmodules = 0; - } - } - - - $data->timecreated = time(); - - // place at beginning of category - fix_course_sortorder(); - $data->sortorder = get_field_sql("SELECT min(sortorder)-1 FROM {$CFG->prefix}course WHERE category=$data->category"); - if (empty($data->sortorder)) { - $data->sortorder = 100; - } - - if ($newcourseid = insert_record('course', $data)) { // Set up new course - - $course = get_record('course', 'id', $newcourseid); - - // Setup the blocks - $page = page_create_object(PAGE_COURSE_VIEW, $course->id); - blocks_repopulate_page($page); // Return value not checked because you can always edit later - - if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { - update_restricted_mods($course, $allowedmods); - } - - $section = new object(); - $section->course = $course->id; // Create a default section. - $section->section = 0; - $section->id = insert_record('course_sections', $section); - - fix_course_sortorder(); - add_to_log(SITEID, "course", "new", "view.php?id=$course->id", "$data->fullname (ID $course->id)") ; - $context = get_context_instance(CONTEXT_COURSE, $course->id); - - if ($data->metacourse and has_capability('moodle/course:managemetacourse', $context)) { // Redirect users with metacourse capability to student import - redirect($CFG->wwwroot."/course/importstudents.php?id=$course->id"); - - } else if (has_capability('moodle/role:assign', $context)) { // Redirect users with assign capability to assign users to different roles - redirect($CFG->wwwroot."/$CFG->admin/roles/assign.php?contextid=$context->id"); - - } else { // Add current teacher and send to course - // find a role with legacy:edittingteacher - if ($teacherroles = get_roles_with_capability('moodle/legacy:editingteacher', CAP_ALLOW, $context)) { - // assign the role to this user - $teachereditrole = array_shift($teacherroles); - role_assign($teachereditrole->id, $USER->id, 0, $context->id); - } - redirect($CFG->wwwroot."/course/view.php?id=$course->id"); - } - - } else { - error("Serious Error! Could not create the new course!"); - } - die; -} - -function update_course($data) { - global $USER, $CFG; - - // preprocess allowed mods - $allowedmods = empty($data->allowedmods) ? array() : $data->allowedmods; - unset($data->allowedmods); - if (!has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { - unset($data->restrictmodules); - } - - $oldcourse = get_record('course', 'id', $data->id); // should not fail, already tested above - if (!has_capability('moodle/course:create', get_context_instance(CONTEXT_COURSECAT, $oldcourse->category)) - or !has_capability('moodle/course:create', get_context_instance(CONTEXT_COURSECAT, $data->category))) { - // can not move to new category, keep the old one - unset($data->category); - } - - // Update with the new data - if (update_record('course', $data)) { - - $course = get_record('course', 'id', $data->id); - - add_to_log($course->id, "course", "update", "edit.php?id=$course->id", ""); - if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { - update_restricted_mods($course, $allowedmods); - } - fix_course_sortorder(); - - // Test for and remove blocks which aren't appropriate anymore - $page = page_create_object(PAGE_COURSE_VIEW, $course->id); - blocks_remove_inappropriate($page); - - redirect($CFG->wwwroot."/course/view.php?id=$course->id"); - - } else { - error("Serious Error! Could not update the course record! (id = $form->id)"); - } - die; -} - -?>