Merge branch 'wip-MDL-61163-33' of git://github.com/marinaglancy/moodle into MOODLE_33_STABLE

This commit is contained in:
Jake Dallimore
2018-04-05 10:37:46 +08:00
12 changed files with 42 additions and 14 deletions
+1 -1
View File
@@ -57,7 +57,7 @@ if (!$cm = get_coursemodule_from_instance('wiki', $wiki->id)) {
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
require_login($course, true, $cm);
require_course_login($course, true, $cm);
if (!wiki_user_can_view($subwiki, $wiki)) {
print_error('cannotviewpage', 'wiki');
+1
View File
@@ -44,6 +44,7 @@ $capabilities = array(
'contextlevel' => CONTEXT_MODULE,
'archetypes' => array(
'guest' => CAP_ALLOW,
'frontpage' => CAP_ALLOW,
'student' => CAP_ALLOW,
'teacher' => CAP_ALLOW,
'editingteacher' => CAP_ALLOW,
+1 -1
View File
@@ -66,7 +66,7 @@ if ($compare >= $comparewith) {
print_error('cannotcomparenewerversion', 'wiki');
}
require_login($course, true, $cm);
require_course_login($course, true, $cm);
if (!wiki_user_can_view($subwiki, $wiki)) {
print_error('cannotviewpage', 'wiki');
+1 -1
View File
@@ -77,7 +77,7 @@ $context = context_module::instance($cm->id);
$PAGE->set_url('/mod/wiki/files.php', array('pageid'=>$pageid));
require_login($course, true, $cm);
require_course_login($course, true, $cm);
if (!wiki_user_can_view($subwiki, $wiki)) {
print_error('cannotviewfiles', 'wiki');
+1 -1
View File
@@ -58,7 +58,7 @@ if (!$cm = get_coursemodule_from_instance('wiki', $wiki->id)) {
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
require_login($course, true, $cm);
require_course_login($course, true, $cm);
if (!wiki_user_can_view($subwiki, $wiki)) {
print_error('cannotviewpage', 'wiki');
+18 -1
View File
@@ -829,4 +829,21 @@ function mod_wiki_core_calendar_provide_event_action(calendar_event $event,
1,
true
);
}
}
/**
* Sets dynamic information about a course module
*
* This callback is called from cm_info when checking module availability (incl. $cm->uservisible)
*
* Main viewing capability in mod_wiki is 'mod/wiki:viewpage' instead of the expected standardised 'mod/wiki:view'.
* The method cm_info::is_user_access_restricted_by_capability() does not work for wiki, we need to implement
* this callback.
*
* @param cm_info $cm
*/
function wiki_cm_info_dynamic(cm_info $cm) {
if (!has_capability('mod/wiki:viewpage', $cm->context, $cm->get_modinfo()->get_user_id())) {
$cm->set_available(false);
}
}
+1 -1
View File
@@ -53,7 +53,7 @@ if (!$wiki = wiki_get_wiki($subwiki->wikiid)) {
print_error('incorrectwikiid', 'wiki');
}
require_login($course, true, $cm);
require_course_login($course, true, $cm);
if (!wiki_user_can_view($subwiki, $wiki)) {
print_error('cannotviewpage', 'wiki');
+1 -1
View File
@@ -84,7 +84,7 @@ abstract class page_wiki {
*/
protected $tabs_options = array();
/**
* @var object wiki renderer
* @var mod_wiki_renderer wiki renderer
*/
protected $wikioutput;
/**
+1 -1
View File
@@ -51,7 +51,7 @@ if (!$wiki = wiki_get_wiki($subwiki->wikiid)) {
print_error('incorrectwikiid', 'wiki');
}
require_login($course, true, $cm);
require_course_login($course, true, $cm);
if (!wiki_user_can_view($subwiki, $wiki)) {
print_error('cannotviewpage', 'wiki');
+12 -2
View File
@@ -255,17 +255,27 @@ class mod_wiki_external_testcase extends externallib_advanced_testcase {
// Now, prohibit capabilities.
$this->setUser($this->student);
$contextcourse1 = context_course::instance($this->course->id);
// Default student role allows to view wiki and create pages.
$wikis = mod_wiki_external::get_wikis_by_courses(array($this->course->id));
$wikis = external_api::clean_returnvalue(mod_wiki_external::get_wikis_by_courses_returns(), $wikis);
$this->assertEquals('Test wiki 1', $wikis['wikis'][0]['intro']);
$this->assertEquals(1, $wikis['wikis'][0]['cancreatepages']);
// Prohibit capability = mod:wiki:viewpage on Course1 for students.
assign_capability('mod/wiki:viewpage', CAP_PROHIBIT, $this->studentrole->id, $contextcourse1->id);
assign_capability('mod/wiki:viewpage', CAP_PROHIBIT, $this->studentrole->id, $contextcourse1->id, true);
accesslib_clear_all_caches_for_unit_testing();
course_modinfo::clear_instance_cache(null);
$wikis = mod_wiki_external::get_wikis_by_courses(array($this->course->id));
$wikis = external_api::clean_returnvalue(mod_wiki_external::get_wikis_by_courses_returns(), $wikis);
$this->assertFalse(isset($wikis['wikis'][0]['intro']));
$this->assertEquals(0, count($wikis['wikis']));
// Prohibit capability = mod:wiki:createpage on Course1 for students.
assign_capability('mod/wiki:viewpage', CAP_ALLOW, $this->studentrole->id, $contextcourse1->id, true);
assign_capability('mod/wiki:createpage', CAP_PROHIBIT, $this->studentrole->id, $contextcourse1->id);
accesslib_clear_all_caches_for_unit_testing();
course_modinfo::clear_instance_cache(null);
$wikis = mod_wiki_external::get_wikis_by_courses(array($this->course->id));
$wikis = external_api::clean_returnvalue(mod_wiki_external::get_wikis_by_courses_returns(), $wikis);
+3 -3
View File
@@ -70,7 +70,7 @@ if ($id) {
// Checking course instance
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
require_login($course, true, $cm);
require_course_login($course, true, $cm);
// Checking wiki instance
if (!$wiki = wiki_get_wiki($cm->instance)) {
@@ -142,7 +142,7 @@ if ($id) {
// Checking course instance
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
require_login($course, true, $cm);
require_course_login($course, true, $cm);
/*
* Case 2:
*
@@ -173,7 +173,7 @@ if ($id) {
// Checking course instance
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
require_login($course, true, $cm);
require_course_login($course, true, $cm);
$groupmode = groups_get_activity_groupmode($cm);
+1 -1
View File
@@ -58,7 +58,7 @@ if (!$cm = get_coursemodule_from_instance('wiki', $wiki->id)) {
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
require_login($course, true, $cm);
require_course_login($course, true, $cm);
if (!wiki_user_can_view($subwiki, $wiki)) {
print_error('cannotviewpage', 'wiki');