moodle/course/view.php
defacer 9b4b78fd6a Da monster-commit of blocks version 2!
Code based on the work of Daryl Hawes for the blog module. Thanks, Daryl!

Please test the hell out of it as it's sure to have issues that need to be
ironed out.
2004-10-19 21:04:28 +00:00

138 lines
4.5 KiB
PHP

<?php // $Id$
// Display the course home page.
require_once('../config.php');
require_once('lib.php');
require_once($CFG->libdir.'/blocklib.php');
optional_variable($id);
optional_variable($name);
optional_param('blockaction');
optional_param('instanceid', 0, PARAM_INT);
optional_param('blockid', 0, PARAM_INT);
if (!$id and !$name) {
error("Must specify course id or short name");
}
if (!empty($_GET['name'])) {
if (! ($course = get_record("course", "shortname", $name)) ) {
error("That's an invalid short course name");
}
} else {
if (! ($course = get_record("course", "id", $id)) ) {
error("That's an invalid course id");
}
}
require_login($course->id);
require_once($CFG->dirroot.'/calendar/lib.php'); /// This is after login because it needs $USER
add_to_log($course->id, "course", "view", "view.php?id=$course->id", "$course->id");
if (!file_exists($CFG->dirroot.'/course/format/'.$course->format.'/format.php')) {
$course->format = 'weeks'; // Default format is weeks
}
$page = new stdClass;
$page->id = $course->id;
$page->type = MOODLE_PAGE_COURSE;
$pageblocks = blocks_get_by_page($page);
if (!isset($USER->editing)) {
$USER->editing = false;
}
$editing = false;
if (isteacheredit($course->id)) {
if (isset($edit)) {
if ($edit == "on") {
$USER->editing = true;
} else if ($edit == "off") {
$USER->editing = false;
}
}
$editing = $USER->editing;
if (isset($hide) && confirm_sesskey()) {
set_section_visible($course->id, $hide, '0');
}
if (isset($show) && confirm_sesskey()) {
set_section_visible($course->id, $show, '1');
}
if (!empty($blockaction) && confirm_sesskey()) {
if (!empty($blockid)) {
blocks_execute_action($page, $pageblocks, strtolower($blockaction), intval($blockid));
}
else if (!empty($instanceid)) {
$instance = blocks_find_instance($instanceid, $pageblocks);
blocks_execute_action($page, $pageblocks, strtolower($blockaction), $instance);
}
// This re-query could be eliminated by judicious programming in blocks_execute_action(),
// but I 'm not sure if it's worth the complexity increase...
$pageblocks = blocks_get_by_page($page);
}
$missingblocks = blocks_get_missing($page, $pageblocks);
if (!empty($section)) {
if (!empty($move) and confirm_sesskey()) {
if (!move_section($course, $section, $move)) {
notify("An error occurred while moving a section");
}
}
}
} else {
$USER->editing = false;
}
$SESSION->fromdiscussion = "$CFG->wwwroot/course/view.php?id=$course->id";
if ($course->id == SITEID) { // This course is not a real course.
redirect("$CFG->wwwroot/");
}
$strcourse = get_string("course");
$loggedinas = "<p class=\"logininfo\">".user_login_string($course, $USER)."</p>";
print_header("$strcourse: $course->fullname", "$course->fullname", "$course->shortname",
"", "", true, update_course_icon($course->id), $loggedinas);
get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused);
if (! $sections = get_all_sections($course->id)) { // No sections found
// Double-check to be extra sure
if (! $section = get_record("course_sections", "course", $course->id, "section", 0)) {
$section->course = $course->id; // Create a default section.
$section->section = 0;
$section->visible = 1;
$section->id = insert_record("course_sections", $section);
}
if (! $sections = get_all_sections($course->id) ) { // Try again
error("Error finding or creating section structures for this course");
}
}
if (empty($course->modinfo)) { // Course cache was never made
rebuild_course_cache($course->id);
if (! $course = get_record("course", "id", $course->id) ) {
error("That's an invalid course id");
}
}
require("$CFG->dirroot/course/format/$course->format/format.php"); // Include the actual course format
print_footer(NULL, $course);
?>