MDL-49605 navigation: Permissions updated for blog preferences.
authorAdrian Greeve <adrian@moodle.com>
Thu, 26 Mar 2015 06:51:12 +0000 (14:51 +0800)
committerAdrian Greeve <adrian@moodle.com>
Fri, 10 Apr 2015 09:17:08 +0000 (17:17 +0800)
Permissions are now being checked before displaying a link to blog
preference pages.

Part of MDL-45774.

lib/navigationlib.php

index 9354ead..089e70f 100644 (file)
@@ -4438,14 +4438,18 @@ class settings_navigation extends navigation_node {
         // Blogs.
         if ($currentuser && !empty($CFG->enableblogs)) {
             $blog = $usersetting->add(get_string('blogs', 'blog'), null, navigation_node::TYPE_CONTAINER, null, 'blogs');
-            $blog->add(get_string('preferences', 'blog'), new moodle_url('/blog/preferences.php'), navigation_node::TYPE_SETTING);
+            if (has_capability('moodle/blog:view', $systemcontext)) {
+                $blog->add(get_string('preferences', 'blog'), new moodle_url('/blog/preferences.php'), navigation_node::TYPE_SETTING);
+            }
             if (!empty($CFG->useexternalblogs) && $CFG->maxexternalblogsperuser > 0 &&
-                    has_capability('moodle/blog:manageexternal', context_system::instance())) {
+                    has_capability('moodle/blog:manageexternal', $systemcontext)) {
                 $blog->add(get_string('externalblogs', 'blog'), new moodle_url('/blog/external_blogs.php'),
                         navigation_node::TYPE_SETTING);
                 $blog->add(get_string('addnewexternalblog', 'blog'), new moodle_url('/blog/external_blog_edit.php'),
                         navigation_node::TYPE_SETTING);
             }
+            // Remove the blog node if empty.
+            $blog->trim_if_empty();
         }
 
         // Badges.