mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 06:18:28 +01:00
c2cb45451f
OK, some big changes here to the front end, particularly in course categories and course display. Course categories can now be nested (to any level). Courses and course categories can now be manually sorted any way required. There is a groovy front end for managing these, and a better range of options for formatting the front page. It all still needs some polishing, which I'll be doing over the next couple of days, including better auto-sorting. I would not use this on production systems just yet.
201 lines
6.4 KiB
PHP
201 lines
6.4 KiB
PHP
<?PHP // $Id$
|
|
// Edit course settings
|
|
|
|
require_once("../config.php");
|
|
require_once("lib.php");
|
|
|
|
optional_variable($id, 0); // course id
|
|
|
|
require_login();
|
|
|
|
if ($id) {
|
|
if (! $course = get_record("course", "id", $id)) {
|
|
error("Course ID was incorrect");
|
|
}
|
|
|
|
if (!isteacher($course->id)) {
|
|
error("Only teachers can edit the course!");
|
|
}
|
|
} else { // Admin is creating a new course
|
|
|
|
if (!iscreator()) {
|
|
error("Only administrators and teachers can use this page");
|
|
}
|
|
|
|
$course = NULL;
|
|
}
|
|
|
|
if (! $site = get_site()) {
|
|
redirect("$CFG->wwwroot/$CFG->admin/index.php");
|
|
}
|
|
|
|
|
|
|
|
|
|
/// If data submitted, then process and store.
|
|
|
|
if ($form = data_submitted()) {
|
|
|
|
$form->startdate = make_timestamp($form->startyear, $form->startmonth, $form->startday);
|
|
|
|
validate_form($course, $form, $err);
|
|
|
|
if (count($err) == 0) {
|
|
|
|
$form->timemodified = time();
|
|
|
|
fix_category_courses($form->category);
|
|
|
|
if (!empty($course)) {
|
|
if (update_record("course", $form)) {
|
|
add_to_log($course->id, "course", "update", "edit.php?id=$id", "");
|
|
redirect("view.php?id=$course->id", get_string("changessaved"));
|
|
} else {
|
|
error("Serious Error! Could not update the course record! (id = $form->id)");
|
|
}
|
|
} else {
|
|
$form->timecreated = time();
|
|
|
|
if ($newcourseid = insert_record("course", $form)) { // Set up new course
|
|
$section = NULL;
|
|
$section->course = $newcourseid; // Create a default section.
|
|
$section->section = 0;
|
|
$section->id = insert_record("course_sections", $section);
|
|
|
|
add_to_log($newcourseid, "course", "new", "view.php?id=$newcourseid", "");
|
|
|
|
if (isadmin()) { // Redirect admin to add teachers
|
|
redirect("../$CFG->admin/teacher.php?id=$newcourseid", get_string("changessaved"));
|
|
|
|
} else { // Add current teacher and send to course
|
|
|
|
$newteacher = NULL;
|
|
$newteacher->userid = $USER->id;
|
|
$newteacher->course = $newcourseid;
|
|
$newteacher->authority = 1; // First teacher is the main teacher
|
|
|
|
if (!$newteacher->id = insert_record("user_teachers", $newteacher)) {
|
|
error("Could not add you to this new course!");
|
|
}
|
|
|
|
$USER->teacher[$newcourseid] = true;
|
|
|
|
redirect("view.php?id=$newcourseid", get_string("changessaved"));
|
|
}
|
|
|
|
} 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;
|
|
} else {
|
|
$form->startdate = time() + 3600 * 24;
|
|
$form->fullname = get_string("defaultcoursefullname");
|
|
$form->shortname = get_string("defaultcourseshortname");
|
|
$form->teacher = get_string("defaultcourseteacher");
|
|
$form->teachers = get_string("defaultcourseteachers");
|
|
$form->student = get_string("defaultcoursestudent");
|
|
$form->students = get_string("defaultcoursestudents");
|
|
$form->summary = get_string("defaultcoursesummary");
|
|
$form->format = "weeks";
|
|
$form->password = "";
|
|
$form->guest = 0;
|
|
$form->numsections = 10;
|
|
$form->newsitems = 5;
|
|
$form->showrecent = 1;
|
|
$form->category = 1;
|
|
$form->id = "";
|
|
$form->visible = 1;
|
|
}
|
|
}
|
|
|
|
if (empty($focus)) {
|
|
$focus = "";
|
|
}
|
|
|
|
$form->categories = get_records_select_menu("course_categories", "", "name", "id,name");
|
|
|
|
$form->courseformats = array (
|
|
"weeks" => get_string("formatweeks"),
|
|
"social" => get_string("formatsocial"),
|
|
"topics" => get_string("formattopics")
|
|
);
|
|
|
|
$streditcoursesettings = get_string("editcoursesettings");
|
|
$straddnewcourse = get_string("addnewcourse");
|
|
$stradministration = get_string("administration");
|
|
|
|
if (!empty($course)) {
|
|
print_header($streditcoursesettings, "$course->fullname",
|
|
"<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A>
|
|
-> $streditcoursesettings", $focus);
|
|
} else {
|
|
print_header("$site->shortname: $straddnewcourse", "$site->fullname",
|
|
"<A HREF=\"../$CFG->admin/index.php\">$stradministration</A>
|
|
-> $straddnewcourse", $focus);
|
|
}
|
|
|
|
print_heading($streditcoursesettings);
|
|
print_simple_box_start("center", "", "$THEME->cellheading");
|
|
include("edit.html");
|
|
print_simple_box_end();
|
|
|
|
print_footer($course);
|
|
|
|
exit;
|
|
|
|
/// Functions /////////////////////////////////////////////////////////////////
|
|
|
|
function validate_form($course, &$form, &$err) {
|
|
|
|
if (empty($form->fullname))
|
|
$err["fullname"] = get_string("missingfullname");
|
|
|
|
if (empty($form->shortname))
|
|
$err["shortname"] = get_string("missingshortname");
|
|
|
|
if ($foundcourses = get_records("course", "shortname", $form->shortname)) {
|
|
if (!empty($course->id)) {
|
|
unset($foundcourses[$course->id]);
|
|
}
|
|
if (!empty($foundcourses)) {
|
|
foreach ($foundcourses as $foundcourse) {
|
|
$foundcoursenames[] = $foundcourse->fullname;
|
|
}
|
|
$foundcoursenamestring = addslashes(implode(',', $foundcoursenames));
|
|
|
|
$err["shortname"] = get_string("shortnametaken", "", $foundcoursenamestring);
|
|
}
|
|
}
|
|
|
|
if (empty($form->summary))
|
|
$err["summary"] = get_string("missingsummary");
|
|
|
|
if (empty($form->teacher))
|
|
$err["teacher"] = get_string("missingteacher");
|
|
|
|
if (empty($form->student))
|
|
$err["student"] = get_string("missingstudent");
|
|
|
|
if (! $form->category)
|
|
$err["category"] = get_string("missingcategory");
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
?>
|