}
$canreply = false;
- if (has_capability($capname, $modcontext)) {
+ if (isguestuser() or !isloggedin()) {
+ // allow guests and not-logged-in to see the link - they are prompted to log in after clicking the link
+ $canreply = ($forum->type != 'news'); // no reply in news forums
+
+ } else if (has_capability($capname, $modcontext)) {
$groupmode = groups_get_activity_groupmode($cm);
if ($groupmode) {
if (has_capability('moodle/site:accessallgroups', $modcontext)) {
} else {
$canreply = true;
}
- } else { // allow guests to see the link
- $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
- if (has_capability('moodle/legacy:guest', $coursecontext, NULL, false)) {
- // User is a guest here ! guests are prompted to login later if try to reply
- $canreply = true;
- }
}
/// Print the controls across the top
// $forum is an object
global $USER, $SESSION, $COURSE;
- if (!$cm) {
- debugging('missing cm', DEBUG_DEVELOPER);
- if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $forum->course)) {
- error('Course Module ID was incorrect');
- }
+ // shortcut - guest and not-logged-in users can not post
+ if (isguestuser() or !isloggedin()) {
+ return false;
}
+
if (!$context) {
+ if (!$cm) {
+ debugging('missing cm', DEBUG_DEVELOPER);
+ if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $forum->course)) {
+ error('Course Module ID was incorrect');
+ }
+ }
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
}
+ // normal users with temporary guest access can not add discussions
+ if (has_capability('moodle/legacy:guest', $context, $USER->id, false)) {
+ return false;
+ }
+
if ($currentgroup == -1) {
$currentgroup = get_current_group($cm->course);
}
* @param $user - user object
*/
function forum_user_can_post($forum, $user=NULL, $cm=NULL, $context=NULL) {
+ global $USER;
+ if (empty($user)) {
+ $user = $USER;
+ }
+
+ // shortcut - guest and not-logged-in users can not post
+ if (isguestuser($user) or empty($user->id)) {
+ return false;
+ }
if (!$context) {
if (!$cm) {
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
}
+ // normal users with temporary guest access can not post
+ if (has_capability('moodle/legacy:guest', $context, $user->id, false)) {
+ return false;
+ }
+
if ($forum->type == 'news') {
$capname = 'mod/forum:replynews';
} else {
$capname = 'mod/forum:replypost';
}
- if (!empty($user)) {
- $canreply = has_capability($capname, $context, $user->id, false)
- && !has_capability('moodle/legacy:guest', $context, $user->id, false);
- } else {
- $canreply = has_capability($capname, $context, NULL, false)
- && !has_capability('moodle/legacy:guest', $context, NULL, false);
- }
-
- return $canreply;
+ return has_capability($capname, $context, $user->id, false);
}
// and the current user is a guest.
if (forum_user_can_post_discussion($forum, $currentgroup, $groupmode, $cm, $context) ||
- ($forum->type != 'news' && has_capability('moodle/legacy:guest', $context, NULL, false)) ) {
+ ($forum->type != 'news' and (isguestuser() or !isloggedin())) ) {
echo '<div class="singlebutton forumaddnew">';
echo "<form id=\"newdiscussionform\" method=\"get\" action=\"$CFG->wwwroot/mod/forum/post.php\">";