Moodle Plugins directory: Restriction by enrolment method | Moodle.org
Restriction by enrolment method
Moodle availability plugin which lets users restrict resources, activities and sections based on enrolment methods
Requirements
This plugin requires Moodle 3.11+
Installation
Install the plugin like any other plugin to folder /availability/condition/enrolmentmethod
See http://docs.moodle.org/en/Installing_plugins for details on installing Moodle plugins
Usage
After installing the plugin, it is ready to use without the need for any configuration.
Teachers (and other users with editing rights) can add the "Enrolment method" availability condition to activities / resources / sections in their courses. While adding the condition, they have to define the enrolment method which students have to have in course context to access the activity / resource / section.
If you want to learn more about using availability plugins in Moodle, please see https://docs.moodle.org/en/Restrict_access.
How this plugin works
The availability plugin checks if the user has the given enrolment method and, if yes, grants access to the restricted activity.
However, there is the capability moodle/course:viewhiddenactivities (see https://docs.moodle.org/en/Capabilities/moodle/course:viewhiddenactivities) which is contained in the manager, teacher and non-editing teacher roles by default. If a user has a role which contains moodle/course:viewhiddenactivities, he is able to use an activity / resource / section even if the teacher has restricted it with availability_enrolmentmethod to some other role.
Because of that, availability_enrolmentmethod can't be used to hide activities / resources / sections from users who already are allowed to view hidden activities in the course. Use this availability restriction plugin wisely and explain to your teachers what is possible and what is not.
License
Licensed under the GNU GPL License.
The plugin is not working with Moodle version 4.0.4. It broke the access restrictions area and only showed plain text.
yourmoodle***/availability/condition/enrolmentmethod/yui/build/moodle-availability_enrolmentmethod-form/moodle-availability_enrolmentmethod-form.js
to
yourmoodle***/availability/condition/enrolmentmethod/yui/build/moodle-availability_enrolmentmethod-form/moodle-availability_enrolmentmethod-form-min.js
the minified js has some problem.
yourmoodle***/availability/condition/enrolmentmethod/classes/condition.php
line 124:
$name = self::description_format_string($enrolmentmethodnames[$this->enrolmentmethodid]);
I want to set up a course that has a few sections for free, then requires payment for the remaining sections.
In practice, I want one enrollment method to only work for the first few sections of a course, and another enrollment method to work for the entire course.
Is this possible with "Restriction by enrolment method". Any hints on implementing it for this purpose?