From dc0cabb48888c05eadf1e21e489db9e2107cfdd9 Mon Sep 17 00:00:00 2001 From: Mayank Gupta Date: Fri, 8 Apr 2011 23:40:36 +0530 Subject: [PATCH] MDL-27037, wiki does not support visiblegroups functionality --- mod/wiki/locallib.php | 2 +- mod/wiki/pagelib.php | 14 ++++++++++++++ mod/wiki/view.php | 13 +++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/mod/wiki/locallib.php b/mod/wiki/locallib.php index 12e939a50c3..db4bf8c02e5 100644 --- a/mod/wiki/locallib.php +++ b/mod/wiki/locallib.php @@ -899,7 +899,7 @@ function wiki_user_can_edit($subwiki) { // There is one wiki per group. // // Only members of subwiki group could edit that wiki - if ($subwiki->groupid == groups_get_activity_group($cm)) { + if (groups_is_member($subwiki->groupid)) { // Only edit capability needed return has_capability('mod/wiki:editpage', $context); } else { // User is not part of that group diff --git a/mod/wiki/pagelib.php b/mod/wiki/pagelib.php index 4e19f57bee9..0f6da3c9f9f 100644 --- a/mod/wiki/pagelib.php +++ b/mod/wiki/pagelib.php @@ -155,6 +155,7 @@ abstract class page_wiki { */ protected function setup_tabs($options = array()) { global $CFG, $PAGE; + $groupmode = groups_get_activity_groupmode($PAGE->cm); if (empty($CFG->usecomments) || !has_capability('mod/wiki:viewcomment', $PAGE->context)){ unset($this->tabs['comments']); @@ -164,6 +165,19 @@ abstract class page_wiki { unset($this->tabs['edit']); } + if ($groupmode and $groupmode == VISIBLEGROUPS) { + $currentgroup = groups_get_activity_group($PAGE->cm); + $manage = has_capability('mod/wiki:managewiki', $PAGE->cm->context); + $edit = has_capability('mod/wiki:editpage', $PAGE->context); + if (!$manage and !($edit and groups_is_member($currentgroup))) { + unset($this->tabs['edit']); + } + } else { + if (!has_capability('mod/wiki:editpage', $PAGE->context)) { + unset($this->tabs['edit']); + } + } + if (empty($options)) { $this->tabs_options = array('activetab' => substr(get_class($this), 10)); diff --git a/mod/wiki/view.php b/mod/wiki/view.php index ae1c4d5def5..c29bfeccada 100644 --- a/mod/wiki/view.php +++ b/mod/wiki/view.php @@ -189,6 +189,19 @@ if ($id) { // Getting subwiki instance. If it does not exists, redirect to create page if (!$subwiki = wiki_get_subwiki_by_group($wiki->id, $gid, $uid)) { + $context = get_context_instance(CONTEXT_MODULE, $cm->id); + + $modeanduser = $wiki->wikimode == 'individual' && $uid != $USER->id; + $modeandgroupmember = $wiki->wikimode == 'collaborative' && !groups_is_member($gid); + + $manage = has_capability('mod/wiki:managewiki', $context); + $edit = has_capability('mod/wiki:editpage', $context); + $manageandedit = $manage && $edit; + + if ($groupmode == VISIBLEGROUPS and ($modeanduser || $modeandgroupmember) and !$manageandedit) { + print_error('nocontent','wiki'); + } + $params = array('wid' => $wiki->id, 'gid' => $gid, 'uid' => $uid, 'title' => $title); $url = new moodle_url('/mod/wiki/create.php', $params); redirect($url);