// checkup if (!empty($parent) && !forum_user_can_see_post($forum, $discussion, $post)) { error("You cannot reply to this post"); } if (empty($parent) && empty($edit) && !forum_user_can_post_discussion($forum)) { error("You cannot start a new discussion in this forum"); } if ($forum->type == 'qanda' && !has_capability('mod/forum:viewqandawithoutposting', $modcontext) && !empty($discussion->id) && !forum_user_has_posted($forum->id, $discussion->id, $USER->id)) { notify(get_string('qandanotify', 'forum')); } forum_check_throttling($forum); if (!empty($parent)) { forum_print_post($parent, $course->id, $ownpost = false, $reply = false, $link = false); if (empty($post->edit)) { if (forum_tp_can_track_forums($forum) && forum_tp_is_tracked($forum)) { $user_read_array = forum_tp_get_discussion_read_records($USER->id, $discussion->id); } else { $user_read_array = array(); } if ($forum->type != 'qanda' || forum_user_can_see_discussion($forum, $discussion, $modcontext)) { forum_print_posts_threaded($parent->id, $course->id, 0, false, false, $user_read_array, $discussion->forum, $modcontext); } } $heading = get_string("yourreply", "forum"); } else { $forum->intro = trim($forum->intro); if (!empty($forum->intro)) { print_box(format_text($forum->intro), 'generalbox', 'intro'); } if ($forum->type == 'qanda') { $heading = get_string('yournewquestion', 'forum');
/** * */ function forum_print_discussion($course, $forum, $discussion, $post, $mode, $canreply = NULL, $canrate = false) { global $USER, $CFG; if (!empty($USER->id)) { $ownpost = $USER->id == $post->userid; } else { $ownpost = false; } if ($canreply === NULL) { $reply = forum_user_can_post($forum); } else { $reply = $canreply; } $ratings = NULL; $ratingsmenuused = false; $ratingsformused = false; if ($forum->assessed and !empty($USER->id)) { if ($ratings->scale = make_grades_menu($forum->scale)) { $ratings->assesstimestart = $forum->assesstimestart; $ratings->assesstimefinish = $forum->assesstimefinish; $ratings->allow = $canrate; if ($ratings->allow) { echo '<form id="form" method="post" action="rate.php">'; echo '<div class="ratingform">'; echo '<input type="hidden" name="forumid" value="' . $forum->id . '" />'; $ratingsformused = true; } } } $post->forum = $forum->id; // Add the forum id to the post object, later used by forum_print_post $post->forumtype = $forum->type; $post->subject = format_string($post->subject); if (forum_tp_can_track_forums($forum)) { if ($forumtracked = forum_tp_is_tracked($forum)) { $user_read_array = forum_tp_get_discussion_read_records($USER->id, $post->discussion); } else { $user_read_array = array(); } } else { $forumtracked = false; $user_read_array = array(); } if (empty($post->modcontext)) { // Have to generate it, which is expensive! Should always be set. if (empty($post->forum)) { $discussion = get_record('forum_discussions', 'id', $post->discussion); $post->forum = $discussion->forum; } if (!($cm = get_coursemodule_from_instance('forum', $post->forum))) { error('Course Module ID was incorrect'); } $post->modcontext = get_context_instance(CONTEXT_MODULE, $cm->id); } if (forum_print_post($post, $course->id, $ownpost, $reply, $link = false, $ratings, '', '', !$forumtracked || isset($user_read_array[$post->id]) || forum_tp_is_post_old($post))) { $ratingsmenuused = true; } switch ($mode) { case FORUM_MODE_FLATOLDEST: case FORUM_MODE_FLATNEWEST: default: if (forum_print_posts_flat($post->discussion, $course->id, $mode, $ratings, $reply, $user_read_array, $post->forum, $post->modcontext)) { $ratingsmenuused = true; } break; case FORUM_MODE_THREADED: if (forum_print_posts_threaded($post->id, $course->id, 0, $ratings, $reply, $user_read_array, $post->forum, $post->modcontext)) { $ratingsmenuused = true; } break; case FORUM_MODE_NESTED: if (forum_print_posts_nested($post->id, $course->id, $ratings, $reply, $user_read_array, $post->forum, $post->modcontext)) { $ratingsmenuused = true; } break; } if ($ratingsformused) { if ($ratingsmenuused) { echo '<div class="ratingsubmit">'; echo '<input type="submit" value="' . get_string('sendinratings', 'forum') . '" />'; if ($forum->scale < 0) { if ($scale = get_record("scale", "id", abs($forum->scale))) { print_scale_menu_helpbutton($course->id, $scale); } } echo '</div>'; } echo '</div>'; echo '</form>'; } }