From aa423bd0e6a7b6c1f6cee4f95b46300e412551b4 Mon Sep 17 00:00:00 2001 From: Jason Fowler Date: Thu, 1 Dec 2011 13:47:59 +0800 Subject: [PATCH] MDL-30482 - Glossary - Adding capability to other areas using glossary --- .../glossary_random/block_glossary_random.php | 4 ++++ filter/glossary/filter.php | 2 +- mod/glossary/db/access.php | 4 ++-- mod/glossary/lang/en/glossary.php | 2 +- mod/glossary/lib.php | 17 +++++++++++------ mod/glossary/rsslib.php | 2 +- mod/glossary/version.php | 2 +- mod/glossary/view.php | 2 +- 8 files changed, 22 insertions(+), 13 deletions(-) diff --git a/blocks/glossary_random/block_glossary_random.php b/blocks/glossary_random/block_glossary_random.php index 72fc75bcffe..8479e81c3d6 100644 --- a/blocks/glossary_random/block_glossary_random.php +++ b/blocks/glossary_random/block_glossary_random.php @@ -118,6 +118,10 @@ class block_glossary_random extends block_base { function get_content() { global $USER, $CFG, $DB; + if (!has_capability('mod/glossary:view', $this->context)) { + return ""; + } + if (empty($this->config->glossary)) { $this->content->text = get_string('notyetconfigured','block_glossary_random'); $this->content->footer = ''; diff --git a/filter/glossary/filter.php b/filter/glossary/filter.php index 85926269440..20879d9f363 100644 --- a/filter/glossary/filter.php +++ b/filter/glossary/filter.php @@ -57,7 +57,7 @@ class filter_glossary extends moodle_text_filter { $nothingtodo = false; } - if ($nothingtodo === true) { + if (($nothingtodo === true) || (!has_capability('mod/glossary:view', $this->context))) { return $text; } diff --git a/mod/glossary/db/access.php b/mod/glossary/db/access.php index 5d276c41151..ecd21b21de5 100644 --- a/mod/glossary/db/access.php +++ b/mod/glossary/db/access.php @@ -30,7 +30,7 @@ $capabilities = array( - 'mod/glossary:read' => array( + 'mod/glossary:view' => array( 'captype' => 'read', 'contextlevel' => CONTEXT_MODULE, @@ -41,7 +41,7 @@ $capabilities = array( 'editingteacher' => CAP_ALLOW, 'manager' => CAP_ALLOW ) - ), + ), 'mod/glossary:write' => array( diff --git a/mod/glossary/lang/en/glossary.php b/mod/glossary/lang/en/glossary.php index 4c4827c8b23..4926d033cd6 100644 --- a/mod/glossary/lang/en/glossary.php +++ b/mod/glossary/lang/en/glossary.php @@ -178,7 +178,7 @@ $string['glossary:managecategories'] = 'Manage categories'; $string['glossary:managecomments'] = 'Manage comments'; $string['glossary:manageentries'] = 'Manage entries'; $string['glossary:rate'] = 'Rate entries'; -$string['glossary:read'] = 'Read entries'; +$string['glossary:view'] = 'View entries'; $string['glossarytype'] = 'Glossary type'; $string['glossarytype_help'] = 'A main glossary is a glossary in which entries from secondary glossaries can be imported. There can only be one main glossary in a course. if glossary entry import is not required, all glossaries in the course can be secondary glossaries.'; $string['glossary:view'] = 'View glossary'; diff --git a/mod/glossary/lib.php b/mod/glossary/lib.php index 2c4ac782749..40d0c7f9b28 100644 --- a/mod/glossary/lib.php +++ b/mod/glossary/lib.php @@ -323,7 +323,7 @@ function glossary_user_complete($course, $user, $mod, $glossary) { * @return bool */ function glossary_print_recent_activity($course, $viewfullnames, $timestart) { - global $CFG, $USER, $DB, $OUTPUT; + global $CFG, $USER, $DB, $OUTPUT, $PAGE; //TODO: use timestamp in approved field instead of changing timemodified when approving in 2.0 if (!defined('GLOSSARY_RECENT_ACTIVITY_LIMIT')) { @@ -351,6 +351,9 @@ function glossary_print_recent_activity($course, $viewfullnames, $timestart) { $approvals = array(); foreach ($ids as $glinstanceid => $glcmid) { $context = get_context_instance(CONTEXT_MODULE, $glcmid); + if (!has_capability('mod/glossary:view', $context)) { + continue; + } // get records glossary entries that are approved if user has no capability to approve entries. if (has_capability('mod/glossary:approve', $context)) { $approvals[] = ' ge.glossaryid = :glsid'.$glinstanceid.' '; @@ -358,6 +361,7 @@ function glossary_print_recent_activity($course, $viewfullnames, $timestart) { $approvals[] = ' (ge.approved = 1 AND ge.glossaryid = :glsid'.$glinstanceid.') '; } $params['glsid'.$glinstanceid] = $glinstanceid; + } $selectsql = 'SELECT ge.id, ge.concept, ge.approved, ge.timemodified, ge.glossaryid, @@ -369,11 +373,12 @@ function glossary_print_recent_activity($course, $viewfullnames, $timestart) { $fromsql = implode($joins, "\n"); $params['timestart'] = $timestart; - $clausesql = ' WHERE ge.timemodified > :timestart AND ('; - $approvalsql = implode($approvals, ' OR '); - - $ordersql = ') ORDER BY ge.timemodified ASC'; + $clausesql = ' WHERE ge.timemodified > :timestart '; + if (count($approval) > 0) { + $approvalsql = 'AND ('. implode($approvals, ' OR ') .') '; + } + $ordersql = 'ORDER BY ge.timemodified ASC'; $entries = $DB->get_records_sql($selectsql.$fromsql.$clausesql.$approvalsql.$ordersql, $params, 0, (GLOSSARY_RECENT_ACTIVITY_LIMIT+1)); if (empty($entries)) { @@ -2771,7 +2776,7 @@ function glossary_extend_settings_navigation(settings_navigation $settings, navi $glossary = $DB->get_record('glossary', array("id" => $PAGE->cm->instance)); - if (!empty($CFG->enablerssfeeds) && !empty($CFG->glossary_enablerssfeeds) && $glossary->rsstype && $glossary->rssarticles && can_access_course($PAGE->course, $USER)) { + if (!empty($CFG->enablerssfeeds) && !empty($CFG->glossary_enablerssfeeds) && $glossary->rsstype && $glossary->rssarticles && has_capability('mod/glossary:view', $PAGE->cm->context)) { require_once("$CFG->libdir/rsslib.php"); $string = get_string('rsstype','forum'); diff --git a/mod/glossary/rsslib.php b/mod/glossary/rsslib.php index bb84a6ddfcc..7b9aa6b2cd0 100644 --- a/mod/glossary/rsslib.php +++ b/mod/glossary/rsslib.php @@ -23,7 +23,7 @@ $course = $DB->get_record('course', array('id'=>$cm->course), '*', MUST_EXIST); } //context id from db should match the submitted one - if ($context->id != $modcontext->id || !has_capability('mod/glossary:read', $modcontext)) { + if ($context->id != $modcontext->id || !has_capability('mod/glossary:view', $modcontext)) { return null; } } diff --git a/mod/glossary/version.php b/mod/glossary/version.php index 250d9373837..31438c5377f 100644 --- a/mod/glossary/version.php +++ b/mod/glossary/version.php @@ -25,7 +25,7 @@ defined('MOODLE_INTERNAL') || die(); -$module->version = 2011112900; // The current module version (Date: YYYYMMDDXX) +$module->version = 2011121400; // The current module version (Date: YYYYMMDDXX) $module->requires = 2011112900; // Requires this Moodle version $module->component = 'mod_glossary'; // Full name of the plugin (used for diagnostics) $module->cron = 0; diff --git a/mod/glossary/view.php b/mod/glossary/view.php index 420d6048ec7..70c49a4cd58 100644 --- a/mod/glossary/view.php +++ b/mod/glossary/view.php @@ -49,7 +49,7 @@ if (!empty($id)) { require_course_login($course->id, true, $cm); $context = get_context_instance(CONTEXT_MODULE, $cm->id); -require_capability('mod/glossary:read', $context); +require_capability('mod/glossary:view', $context); // Prepare format_string/text options $fmtoptions = array( -- 2.43.0