diff --git a/blocks/myoverview/classes/output/main.php b/blocks/myoverview/classes/output/main.php index c1f147cbd83..16473569c4c 100644 --- a/blocks/myoverview/classes/output/main.php +++ b/blocks/myoverview/classes/output/main.php @@ -412,7 +412,7 @@ class main implements renderable, templatable { $newcourseurl = ''; $coursecat = \core_course_category::user_top(); - if ($category = \core_course_category::get_nearest_editable_subcategory($coursecat, ['create'])) { + if ($coursecat && ($category = \core_course_category::get_nearest_editable_subcategory($coursecat, ['create']))) { $newcourseurl = new \moodle_url('/course/edit.php', ['category' => $category->id]); } diff --git a/my/courses.php b/my/courses.php index 2e4268f8453..c9ae46e0b86 100644 --- a/my/courses.php +++ b/my/courses.php @@ -64,11 +64,11 @@ $PAGE->theme->addblockposition = BLOCK_ADDBLOCK_POSITION_CUSTOM; // Add course management if the user has the capabilities for it. $coursecat = core_course_category::user_top(); $coursemanagemenu = []; -if ($category = core_course_category::get_nearest_editable_subcategory($coursecat, ['create'])) { +if ($coursecat && ($category = core_course_category::get_nearest_editable_subcategory($coursecat, ['create']))) { // The user has the capability to create course. $coursemanagemenu['newcourseurl'] = new moodle_url('/course/edit.php', ['category' => $category->id]); } -if ($category = core_course_category::get_nearest_editable_subcategory($coursecat, ['manage'])) { +if ($coursecat && ($category = core_course_category::get_nearest_editable_subcategory($coursecat, ['manage']))) { // The user has the capability to manage the course category. $coursemanagemenu['manageurl'] = new moodle_url('/course/management.php', ['categoryid' => $category->id]); } diff --git a/my/tests/behat/my_courses.feature b/my/tests/behat/my_courses.feature index 1ce8b577a2d..9e59f09828f 100644 --- a/my/tests/behat/my_courses.feature +++ b/my/tests/behat/my_courses.feature @@ -30,6 +30,13 @@ Feature: Run tests over my courses. Given I am on the "My courses" page logged in as "user1" Then "Course management options" "link" should not exist + Scenario: User without capability to browse courses cannot see any link + Given the following "permission overrides" exist: + | capability | permission | role | contextlevel | reference | + | moodle/category:viewcourselist | Prevent | user | System | | + Given I am on the "My courses" page logged in as "user1" + Then "Course management options" "link" should not exist + @javascript Scenario: User with creating a course permission can see the Create course link only Given the following "permission overrides" exist: