Skip to content

Commit

Permalink
MDL-10990 5) eliminated reply related cap queries for guests and not-…
Browse files Browse the repository at this point in the history
…logged-in users because they can not post anyway, removed reply link for guests from news posts, they did not see Add discussion link already; merged from MOODLE_19_STABLE
  • Loading branch information
skodak committed Feb 26, 2008
1 parent 2d2b6de commit 525041d
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 23 deletions.
12 changes: 5 additions & 7 deletions mod/forum/discuss.php
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,11 @@
}

$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)) {
Expand Down Expand Up @@ -181,12 +185,6 @@
} 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
Expand Down
46 changes: 31 additions & 15 deletions mod/forum/lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -3823,16 +3823,26 @@ function forum_user_can_post_discussion($forum, $currentgroup=-1, $groupmode=-1,
// $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);
}
Expand Down Expand Up @@ -3881,6 +3891,15 @@ function forum_user_can_post_discussion($forum, $currentgroup=-1, $groupmode=-1,
* @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) {
Expand All @@ -3892,21 +3911,18 @@ function forum_user_can_post($forum, $user=NULL, $cm=NULL, $context=NULL) {
$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);
}


Expand Down Expand Up @@ -4093,7 +4109,7 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions=5, $dis
// 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\">";
Expand Down
2 changes: 1 addition & 1 deletion mod/forum/view.php
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@
print_box(format_text($forum->intro), 'generalbox', 'intro');
}
echo '<p align="center">';
if (forum_user_can_post_discussion($forum)) {
if (forum_user_can_post_discussion($forum, -1, -1, $cm)) {
print_string("allowsdiscussions", "forum");
} else {
echo '&nbsp;';
Expand Down

0 comments on commit 525041d

Please sign in to comment.