From 0595d1d5a954a6a0f2529bc77e2673af645bc463 Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Tue, 4 Jun 2013 10:39:56 +0800 Subject: [PATCH 1/2] MDL-39865 navigation: 'Profile settings for ...' always displayed Before this patch, 'Profile settings for X' would only be displayed if X can access the course, which means that if the course is hidden the node would be hidden as well. We changed this so that the user needs to be enrolled in the course. --- lib/navigationlib.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/navigationlib.php b/lib/navigationlib.php index 7e1576bf112..e2e873e449c 100644 --- a/lib/navigationlib.php +++ b/lib/navigationlib.php @@ -3906,10 +3906,11 @@ class settings_navigation extends navigation_node { } } else { $canviewusercourse = has_capability('moodle/user:viewdetails', $coursecontext); - $canaccessallgroups = has_capability('moodle/site:accessallgroups', $coursecontext); - if ((!$canviewusercourse && !$canviewuser) || !can_access_course($course, $user->id)) { + $userisenrolled = is_enrolled($coursecontext, $user->id); + if ((!$canviewusercourse && !$canviewuser) || !$userisenrolled) { return false; } + $canaccessallgroups = has_capability('moodle/site:accessallgroups', $coursecontext); if (!$canaccessallgroups && groups_get_course_groupmode($course) == SEPARATEGROUPS) { // If groups are in use, make sure we can see that group return false; From 89f9dce0f7f323e658b243423e751531c05f5b7d Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Tue, 4 Jun 2013 10:46:31 +0800 Subject: [PATCH 2/2] MDL-39865 navigation: Removed unaccessible repositories node A user is not allowed to edit another user's repositories, in any circumstances. The repositories node under 'Profile setting for X' does not make sense under those conditions. --- lib/navigationlib.php | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/lib/navigationlib.php b/lib/navigationlib.php index e2e873e449c..006c2a9df40 100644 --- a/lib/navigationlib.php +++ b/lib/navigationlib.php @@ -4031,23 +4031,6 @@ class settings_navigation extends navigation_node { $usersetting->add(get_string('securitykeys', 'webservice'), $url, self::TYPE_SETTING); } - // Repository - if (!$currentuser && $usercontext->contextlevel == CONTEXT_USER) { - if (!$this->cache->cached('contexthasrepos'.$usercontext->id)) { - require_once($CFG->dirroot . '/repository/lib.php'); - $editabletypes = repository::get_editable_types($usercontext); - $haseditabletypes = !empty($editabletypes); - unset($editabletypes); - $this->cache->set('contexthasrepos'.$usercontext->id, $haseditabletypes); - } else { - $haseditabletypes = $this->cache->{'contexthasrepos'.$usercontext->id}; - } - if ($haseditabletypes) { - $url = new moodle_url('/repository/manage_instances.php', array('contextid'=>$usercontext->id)); - $usersetting->add(get_string('repositories', 'repository'), $url, self::TYPE_SETTING); - } - } - // Messaging if (($currentuser && has_capability('moodle/user:editownmessageprofile', $systemcontext)) || (!isguestuser($user) && has_capability('moodle/user:editmessageprofile', $usercontext) && !is_primary_admin($user->id))) { $url = new moodle_url('/message/edit.php', array('id'=>$user->id));