diff --git a/mod/forum/backuplib.php b/mod/forum/backuplib.php index 06f4f51dc01..7bf899599cd 100644 --- a/mod/forum/backuplib.php +++ b/mod/forum/backuplib.php @@ -71,9 +71,7 @@ fwrite ($bf,full_tag("TYPE",4,false,$forum->type)); fwrite ($bf,full_tag("NAME",4,false,$forum->name)); fwrite ($bf,full_tag("INTRO",4,false,$forum->intro)); - fwrite ($bf,full_tag("OPEN",4,false,$forum->open)); fwrite ($bf,full_tag("ASSESSED",4,false,$forum->assessed)); - fwrite ($bf,full_tag("ASSESSPUBLIC",4,false,$forum->assesspublic)); fwrite ($bf,full_tag("ASSESSTIMESTART",4,false,$forum->assesstimestart)); fwrite ($bf,full_tag("ASSESSTIMEFINISH",4,false,$forum->assesstimefinish)); fwrite ($bf,full_tag("MAXBYTES",4,false,$forum->maxbytes)); diff --git a/mod/forum/db/mysql.php b/mod/forum/db/mysql.php index 9d638ef4164..7ec65aee11c 100644 --- a/mod/forum/db/mysql.php +++ b/mod/forum/db/mysql.php @@ -229,12 +229,10 @@ function forum_upgrade($oldversion) { } - /* - // Upgrades for new roles and capabilities support. if ($oldversion < 2006081800) { + // Upgrades for new roles and capabilities support. $forummodid = get_record('modules', 'name', 'forum'); - if ($forums = get_records('forum')) { if (!$studentroles = get_roles_with_capability('moodle/legacy:student', CAP_ALLOW)) { @@ -247,9 +245,11 @@ function forum_upgrade($oldversion) { foreach ($forums as $forum) { if ($forum->type == 'teacher') { + // Teacher forums should be converted to normal forums that // use the Roles System to implement the old behavior. - + require_once($CFG->dirroot.'/course/lib.php'); + // Delete empty teacher forums. if (count_records('forum_discussions', 'forum', $forum->id) == 0) { delete_records('forum', 'id', $forum->id); @@ -356,10 +356,11 @@ function forum_upgrade($oldversion) { break; } // Drop column forum.open. - modify_database('','ALTER TABLE prefix_forum DROP COLUMN open;'); + modify_database('', 'ALTER TABLE prefix_forum DROP COLUMN open;'); - // $forum->assessed defines who can rate posts: + // $forum->assessed defines whether forum rating is turned + // on (1 or 2) and who can rate posts: // 1 = Everyone can rate posts // 2 = Only teachers can rate posts switch ($forum->assessed) { @@ -389,12 +390,12 @@ function forum_upgrade($oldversion) { break; } // Drop column forum.assesspublic. - modify_database('','ALTER TABLE prefix_forum DROP COLUMN assesspublic;'); + modify_database('', 'ALTER TABLE prefix_forum DROP COLUMN assesspublic;'); } } // End foreach $teacherforums. } // End if. } - */ + return true; diff --git a/mod/forum/index.php b/mod/forum/index.php index c62d4005774..77d4b2402ab 100644 --- a/mod/forum/index.php +++ b/mod/forum/index.php @@ -4,8 +4,8 @@ require_once("lib.php"); require_once("$CFG->libdir/rsslib.php"); - $id = optional_param('id',0,PARAM_INT); // course - $subscribe = optional_param('subscribe',null,PARAM_INT); // Subscribe/Unsubscribe all forums + $id = optional_param('id', 0, PARAM_INT); // Course id + $subscribe = optional_param('subscribe', null, PARAM_INT); // Subscribe/Unsubscribe all forums if ($id) { if (! $course = get_record("course", "id", $id)) { @@ -89,10 +89,18 @@ } foreach ($forums as $forum) { + + $cm = get_coursemodule_from_instance("forum", $forum->id, $course->id); + $context = get_context_instance(CONTEXT_MODULE, $cm->id); + + if (!has_capability('mod/forum:viewforum', $context)) { + if (isset($forum->keyreference)) { + unset($learningforums[$forum->keyreference]); + } + continue; + } if (!isset($forum->visible)) { $forum->visible = instance_is_visible("forum", $forum); - $cm = get_coursemodule_from_instance("forum", $forum->id, $course->id); - $context = get_context_instance(CONTEXT_MODULE, $cm->id); if (!$forum->visible and !has_capability('moodle/course:viewhiddenactivities', $context)) { if (isset($forum->keyreference)) { unset($learningforums[$forum->keyreference]); @@ -468,4 +476,4 @@ print_footer($course); -?> +?> \ No newline at end of file diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 4c65e3af1d3..087bb68c3c4 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -94,10 +94,10 @@ function forum_add_instance($forum) { $forum->timemodified = time(); - if (!$forum->userating) { + if (!$forum->assessed) { $forum->assessed = 0; } - + if (!empty($forum->ratingtime)) { $forum->assesstimestart = make_timestamp($forum->startyear, $forum->startmonth, $forum->startday, $forum->starthour, $forum->startminute, 0); @@ -145,10 +145,10 @@ function forum_update_instance($forum) { $forum->timemodified = time(); $forum->id = $forum->instance; - if (empty($forum->userating)) { + if (empty($forum->assessed)) { $forum->assessed = 0; } - + if (!empty($forum->ratingtime)) { $forum->assesstimestart = make_timestamp($forum->startyear, $forum->startmonth, $forum->startday, $forum->starthour, $forum->startminute, 0); @@ -1583,7 +1583,6 @@ function forum_get_course_forum($courseid, $type) { $forum->name = addslashes(get_string("namenews", "forum")); $forum->intro = addslashes(get_string("intronews", "forum")); $forum->forcesubscribe = FORUM_FORCESUBSCRIBE; - $forum->open = 1; // 0 - no, 1 - posts only, 2 - discuss and post $forum->assessed = 0; if ($courseid == SITEID) { $forum->name = get_string("sitenews"); @@ -1593,14 +1592,12 @@ function forum_get_course_forum($courseid, $type) { case "social": $forum->name = addslashes(get_string("namesocial", "forum")); $forum->intro = addslashes(get_string("introsocial", "forum")); - $forum->open = 2; // 0 - no, 1 - posts only, 2 - discuss and post $forum->assessed = 0; $forum->forcesubscribe = 0; break; case "teacher": $forum->name = addslashes(get_string("nameteacher", "forum")); $forum->intro = addslashes(get_string("introteacher", "forum")); - $forum->open = 2; // 0 - no, 1 - posts only, 2 - discuss and post $forum->assessed = 0; $forum->forcesubscribe = 0; break; @@ -1984,7 +1981,7 @@ function forum_print_post(&$post, $courseid, $ownpost=false, $reply=false, $link $canviewallratings = has_capability('mod/forum:viewanyrating', $modcontext); - if (($canviewallratings or $ratings->assesspublic) and !$mypost) { + if ($canviewallratings and !$mypost) { forum_print_ratings_mean($post->id, $ratings->scale, $canviewallratings); if (!empty($ratings->allow)) { echo ' '; @@ -2095,7 +2092,7 @@ function forum_print_discussion_header(&$post, $forum, $group=-1, $datestring="" echo "\n"; } - if ($forum->open or $forum->type == 'teacher') { // Show the column with replies + if (has_capability('mod/forum:viewdiscussion', $modcontext)) { // Show the column with replies echo ''; echo ''; echo $post->replies.''; @@ -2794,14 +2791,14 @@ function forum_user_can_post_discussion($forum, $currentgroup=false, $groupmode= return (!forum_user_has_posted_discussion($forum->id, $USER->id)); } else if ($currentgroup) { return (has_capability('moodle/site:accessallgroups', $context) - or (ismember($currentgroup) and $forum->open == 2)); + or ismember($currentgroup)); } else { //else it might be group 0 in visible mode if ($groupmode == VISIBLEGROUPS){ - return ($forum->open == 2 and ismember($currentgroup)); + return (ismember($currentgroup)); } else { - return ($forum->open == 2); + return true; } } } @@ -2815,11 +2812,6 @@ function forum_user_can_post_discussion($forum, $currentgroup=false, $groupmode= */ function forum_user_can_post($forum, $user=NULL) { - if (!$forum->open) { - // No point doing the more expensive has_capability checks. - return false; - } - if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $forum->course)) { error('Course Module ID was incorrect'); } @@ -3084,7 +3076,7 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions=5, $dis if ($groupmode > 0) { echo ''.get_string('group').''; } - if ($forum->open or $forum->type == 'teacher') { + if (has_capability('mod/forum:viewdiscussion', $context)) { echo ''.get_string('replies', 'forum').''; /// If the forum can be tracked, display the unread column. if ($cantrack) { @@ -3208,7 +3200,6 @@ function forum_print_discussion($course, $forum, $discussion, $post, $mode, $can $ratingsmenuused = false; if ($forum->assessed and !empty($USER->id)) { if ($ratings->scale = make_grades_menu($forum->scale)) { - $ratings->assesspublic = $forum->assesspublic; $ratings->assesstimestart = $forum->assesstimestart; $ratings->assesstimefinish = $forum->assesstimefinish; $ratings->allow = $canrate; diff --git a/mod/forum/mod.html b/mod/forum/mod.html index 5c5a2a5b74f..15afffc8c87 100644 --- a/mod/forum/mod.html +++ b/mod/forum/mod.html @@ -14,10 +14,7 @@ $form->open = 2; } if (!isset($form->assessed)) { - $form->assessed = 1; - } - if (!isset($form->assesspublic)) { - $form->assesspublic = 1; + $form->assessed = 0; } if (!isset($form->forcesubscribe)) { $form->forcesubscribe = 0; @@ -105,6 +102,17 @@ intro); ?> + + + student")) ?>: + + open, ''); + helpbutton('allowdiscussions', get_string('allowdiscussions', + 'forum', moodle_strtolower("$course->student")), 'forum'); + ?> + + : @@ -149,7 +157,8 @@ enablerssfeeds - && isset($CFG->forum_enablerssfeeds) && $CFG->forum_enablerssfeeds) { + && isset($CFG->forum_enablerssfeeds) + && $CFG->forum_enablerssfeeds) { echo ''; echo ''.get_string('rsstype').':'; echo ''; @@ -195,13 +204,14 @@ echo ''; - echo 'assessed) { echo ' checked="checked" '; } @@ -257,7 +267,7 @@ echo ''; echo ''; if (empty($form->ratingtime)) { diff --git a/mod/forum/restorelib.php b/mod/forum/restorelib.php index 463aca3d426..c7c7d99e66d 100644 --- a/mod/forum/restorelib.php +++ b/mod/forum/restorelib.php @@ -53,9 +53,7 @@ $forum->type = backup_todb($info['MOD']['#']['TYPE']['0']['#']); $forum->name = backup_todb($info['MOD']['#']['NAME']['0']['#']); $forum->intro = backup_todb($info['MOD']['#']['INTRO']['0']['#']); - $forum->open = backup_todb($info['MOD']['#']['OPEN']['0']['#']); $forum->assessed = backup_todb($info['MOD']['#']['ASSESSED']['0']['#']); - $forum->assesspublic = backup_todb($info['MOD']['#']['ASSESSPUBLIC']['0']['#']); $forum->assesstimestart = backup_todb($info['MOD']['#']['ASSESSTIMESTART']['0']['#']); $forum->assesstimefinish = backup_todb($info['MOD']['#']['ASSESSTIMEFINISH']['0']['#']); $forum->maxbytes = backup_todb($info['MOD']['#']['MAXBYTES']['0']['#']); diff --git a/mod/forum/version.php b/mod/forum/version.php index 1e54d56e09a..ce44c5255d7 100644 --- a/mod/forum/version.php +++ b/mod/forum/version.php @@ -5,7 +5,7 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2006080900; +$module->version = 2006081800; $module->requires = 2006080900; // Requires this Moodle version $module->cron = 60; diff --git a/mod/forum/view.php b/mod/forum/view.php index 0519a308981..9b6c0f5d9bf 100644 --- a/mod/forum/view.php +++ b/mod/forum/view.php @@ -61,14 +61,13 @@ $navigation = "id\">$strforums ->"; -/// Check whether the should be able to view this forum. +/// Check whether the user should be able to view this forum. $context = get_context_instance(CONTEXT_MODULE, $cm->id); if (!has_capability('mod/forum:viewforum', $context)) { error('You do not have the permission to view this forum'); } - if ($cm->id) { add_to_log($course->id, "forum", "view forum", "view.php?id=$cm->id", "$forum->id", $cm->id); } else { @@ -78,7 +77,7 @@ print_header_simple(format_string($forum->name), "", "$navigation ".format_string($forum->name), "", "", true, $buttontext, navmenu($course, $cm)); - if (empty($cm->visible) and !has_capability('moodle/course:manageactivities', $context)) { + if (empty($cm->visible) and !has_capability('moodle/course:viewhiddenactivities', $context)) { notice(get_string("activityiscurrentlyhidden")); }