From ce459060fe7bc55aba755a8706eccd4a3bf69a7e Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Thu, 14 Oct 2010 19:36:19 +0000 Subject: [PATCH] MDL-14627 new mod/resource:view capability --- mod/resource/db/access.php | 9 +++++++++ mod/resource/lang/en/resource.php | 1 + mod/resource/lib.php | 3 +++ mod/resource/version.php | 2 +- mod/resource/view.php | 1 + 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/mod/resource/db/access.php b/mod/resource/db/access.php index 8ad80439eea..5abde1965cb 100644 --- a/mod/resource/db/access.php +++ b/mod/resource/db/access.php @@ -27,6 +27,15 @@ defined('MOODLE_INTERNAL') || die; $capabilities = array( + 'mod/resource:view' => array( + 'captype' => 'read', + 'contextlevel' => CONTEXT_MODULE, + 'archetypes' => array( + 'guest' => CAP_ALLOW, + 'user' => CAP_ALLOW, + ) + ), + /* TODO: review public portfolio API first! 'mod/resource:portfolioexport' => array( diff --git a/mod/resource/lang/en/resource.php b/mod/resource/lang/en/resource.php index a9641de49c3..7bbd821d95c 100644 --- a/mod/resource/lang/en/resource.php +++ b/mod/resource/lang/en/resource.php @@ -82,5 +82,6 @@ $string['printintro'] = 'Display resource description'; $string['printintroexplain'] = 'Display resource description bellow content? Some display types may not display description even if enabled.'; $string['resourcecontent'] = 'Files and subfolders'; $string['resource:exportresource'] = 'Export resource'; +$string['resource:view'] = 'View resource files'; $string['resource:view'] = 'View resource'; $string['selectmainfile'] = 'Please select the main file by clicking the icon next to file name.'; diff --git a/mod/resource/lib.php b/mod/resource/lib.php index 024ddfbbc85..997ffdf3e10 100644 --- a/mod/resource/lib.php +++ b/mod/resource/lib.php @@ -373,6 +373,9 @@ function resource_pluginfile($course, $cm, $context, $filearea, $args, $forcedow } require_course_login($course, true, $cm); + if (!has_capability('mod/resource:view', $context)) { + return false; + } if ($filearea !== 'content') { // intro is handled automatically in pluginfile.php diff --git a/mod/resource/version.php b/mod/resource/version.php index 58b5f68a66c..18c3accf3ab 100644 --- a/mod/resource/version.php +++ b/mod/resource/version.php @@ -26,7 +26,7 @@ defined('MOODLE_INTERNAL') || die; -$module->version = 2010083000; +$module->version = 2010101400; $module->requires = 2010080300; // Requires this Moodle version $module->cron = 0; diff --git a/mod/resource/view.php b/mod/resource/view.php index 67d0551b36e..457da90e214 100644 --- a/mod/resource/view.php +++ b/mod/resource/view.php @@ -50,6 +50,7 @@ $course = $DB->get_record('course', array('id'=>$cm->course), '*', MUST_EXIST); require_course_login($course, true, $cm); $context = get_context_instance(CONTEXT_MODULE, $cm->id); +require_capability('mod/resource:view', $context); add_to_log($course->id, 'resource', 'view', 'view.php?id='.$cm->id, $resource->id, $cm->id);