Availability conditions: Restriction by course completion

Maintained by RenaatRenaat Debleu
Restrict module and section access based on course completion.
1483 sites
64 fans
Current versions available: 6

This availability condition makes it easy to show modules or sections only when a user completed a course. A course certificate is a good sample, but it can also be used to close discussion forums, hide quizzes or exams when a user finished a course.

Check the global documentation about conditional availability conditions : https://docs.moodle.org/en/Conditional_activities_settings


 1. Unpack the zip file into the availability/condition/ directory. A new directory will be created called coursecompleted.
 2. Go to Site administration > Notifications to complete the plugin installation.

Coverage Status moodle-availability_coursecompleted.svg?branch=master


Screenshot #0
Screenshot #1


Renaat Debleu (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Renaat
    Wed, Jul 13, 2016, 4:46 PM
    The string "Not available unless: You completed this course." has 2 parts : get_string('a list_root_and','availability') and get_string('getdescription', 'availability_coursecompleted').

    So technically, it is possible to modify those 2 strings using language customisation. But the change of the list_root_and string will reflect on ALL availability restrictions....
  • Picture of Briar Ang
    Thu, Jul 14, 2016, 7:56 AM
    Fantastic, thank you very much smile
  • Picture of Dan Bell
    Tue, Sep 26, 2017, 10:29 PM
    Can this plugin restrict access to "anything" in a course if ANOTHER course is not complete? If so, how?
    We need a behavior that prevent users from accessing anything in course two if course one is not complete.
    On a module, my Add Restriction popup has "Course Completed" with only a yes or no value. I was hoping in the Course completed options I could select another course that needs to be completed before any module in course two could be accessed.
  • Renaat
    Fri, Sep 29, 2017, 10:33 PM
    No, this plugin restricts access to modules upon the completion of the current course.

    For me, the best solution for your situation is to create a local or enrolment plugin that enrols users upon a core\event\course_completed event. The load on the server will be much smaller and people will not be part of a course where they cannot access anything...
  • Picture of Pingtao Ye
    Thu, Jan 4, 2018, 5:23 AM
    Hi, why this plugin is not available for MDL 3.0?
  • Renaat
    Thu, Jan 4, 2018, 4:46 PM
    Sorry about this, somewhere I forgot to include a Moodle 3.0 version. This problem should now be fixed.
  • Picture of Ryan Bernstein
    Mon, Feb 12, 2018, 10:24 PM
    Hi Renaat, Thanks for this great plugin. I didn't quite know where to post this, but we were wondering if there's ever been discussion of setting a restriction at the course level. This plugin lets us restrict activities/modules, but we want to restrict an entire course based upon the completion of another course. Hoping you can provide insight. Thanks! Ryan
  • Renaat
    Tue, Feb 13, 2018, 12:15 AM
    Hello Ryan,

    Restricting at course level is default for Moodle courses: as long as a person is not enrolled into a course, he/she does not have access to this course. So I do not understand your question as nobody can access your course as long as he/she is not enrolled.

    But it is possible to enroll someone only upon course completion: have a look a the course completed enrolment plugin. This plugin enrolls users who successfully complete course 1 into course 2. This way access to course 2 is restricted until participants complete course 1.
  • Picture of Ryan Bernstein
    Tue, Feb 13, 2018, 1:19 AM
    Thank you Renaat. I will check out the course completed enrolment plugin. We don't want to restrict enrollments, we want to restrict access to a course. Our Moodle syncs with our registration software, and we want students to be enrolled in classes they register for. We have created an online learning course that is a prerequisite for online courses. We don't students to have access to courses they've registered for until they complete the online learning course. I hope that makes sense. Thank you very much.
  • Ricardo Caiado
    Thu, Apr 19, 2018, 2:24 AM
    I got this error message when I try to upload...

    Downloading availability_coursecompleted ... OK
    Validating availability_coursecompleted ... Error
    [Error] Required Moodle version [2017111302]
    Installation aborted due to validation failure
  • Renaat
    Thu, Apr 19, 2018, 11:54 AM
    Sorry about this, I will downgrade the required Moodle version from 2017111302 to 2017111300 so the problem should disappear.
  • Picture of User Mens
    Mon, Nov 4, 2019, 12:53 AM
    Hi All
    I have 2 Course A and B Student Already Enroll Both course I need B course or B Course activity only access student must complete A course how to achieve this thing ? any Idea please help me
  • Renaat
    Mon, Nov 4, 2019, 1:15 AM
    Hi Shiraz,

    this plugin only restricts access to activities upon completion of this course. If you want to enrol a student when they complete a course, you can use the https://moodle.org/plugins/enrol_coursecompleted plugin.

    Course A: configure course completion
    Course B: add enrolment upon completion of course A
    => When a student completes course A, he/she is enrolled into course B
  • Picture of Tom Arild Sørli
    Mon, May 25, 2020, 5:08 PM
    I can't get this plugin to work..
    If I add the restriction "Course completed", I only get to choose "Yes" og "No".. There is no box to choose which course I want the student to have passed..
    I have moodle version 3.8
  • Renaat
    Tue, May 26, 2020, 12:26 AM
    Hi Tom,

    this plugin restricts access until or after THIS course is completed. If you want to restrict access upon another course, you will need another plugin: restrict access upon other course completion.

1 2
Please login to post comments