Moodle Plugins directory: Course checker | Moodle.org
Course checker
Course Checker 
A Moodle course checker plugin that improves the quality and eliminate human routine tasks in online courses
This plugin provides a framework that can check a course based on independent checkers. Each checker is an independent subplugin. It will help you find misconfiguration in your courses and follow your internal guidelines by displaying a structured report. The checkers can be triggered manually an will be executed by the Moodle AdHoc task system. A check can also be triggered via the companion plugin block_course_checker_info.
Note
This plugin is the official replacement for block_course_checker. When first installed, this plugin will import settings from block_course_checker. If the import of the settings is not wanted/needed, you can uninstall block_course_checker before installing the local_course_checker.
🚀 Features
- Import and adapt settings from deprecated
block_course_checker. - Automatic checks of course configurations (e.g., activity names, due dates, completion).
- Easily extendable via subplugins (
coursechecker_xyz). - Accordion-based display using Mustache templates and Bootstrap.
- Display a changes log since last check on top of the report.
- Adhoc tasks for parallel check execution.
- Notification when the course check is completed.
🧪 Available Checkers
| Checker | Integrated | Requires | Description |
|---|---|---|---|
| moodle-coursechecker_attendance | No, because of mod_attendance dependecy. | mod_attendance | This plugin checks whether a course contains exactly one visible attendance activity and that it does not contain any preconfigured sessions. It ensures consistent setup of attendance tracking across courses. |
| moodle-coursechecker_activedates | Yes | Nothing | This plugin checks whether a course has both a start date and an end date defined. It is designed to be part of a course quality assurance workflow, ensuring that all courses have clearly set temporal boundaries. |
| moodle-coursechecker_blocks | Yes | Nothing | This plugin compares the enabled blocks in a course against a reference course to ensure consistent block layout. It checks for missing or mismatched blocks and helps maintain a standardized course structure across the platform. |
| moodle-coursechecker_data | Yes | Nothing | This plugin checks all database activities in a course to ensure they contain at least one defined field. It helps prevent incomplete configurations by flagging empty database modules. |
| moodle-coursechecker_groups | Yes | Nothing | This plugin checks assignment activities in a course to ensure correct group submission configuration. It verifies that group mode is properly set, a valid grouping is assigned, and that the grouping contains at least two groups. |
| moodle-coursechecker_links | Yes | PHP extension curl |
This plugin scans course content (including summaries, modules, books, wikis, and URLs) for hyperlinks and checks their validity. It helps identify broken or unreachable links to ensure a reliable learning experience. |
| moodle-coursechecker_quiz | Yes | Nothing | This plugin checks whether each quiz's “Maximum grade” matches the “Total of marks” assigned to its questions. It helps prevent grading inconsistencies and ensures quizzes are correctly configured. |
| moodle-coursechecker_referencesettings | Yes | Nothing | This plugin compares general course settings (such as category, format, language, filters, and format options) of the current course with those of a reference course. It ensures consistency across courses, which is especially useful in standardized learning environments. |
| moodle-coursechecker_subheadings | Yes | Nothing | The Subheading Checker verifies that all **label resources** in a course follow consistent formatting standards. Specifically, it checks whether each label:
|
| moodle-coursechecker_userdata | Yes | Nothing | Checks course activities for residual user data such as submissions, forum posts, or logs. Helps ensure that no personal user content is left in template or duplicated courses. |
⚙️ Requirements
- Moodle 5.0 or higher
- PHP 8.3 or higher
- A working cron job
- PHP extension
curl(required for the Broken Links checker)
📁Installing via uploaded ZIP file
- Log in to your Moodle site as an admin and go to Site administration > Plugins > Install plugins.
- Upload the ZIP file with the plugin code. You should only be prompted to add extra details if your plugin type is not automatically detected.
- Check the plugin validation report and finish the installation.
📁Installing manually
The plugin can be also installed by putting the contents of this directory to
{your/moodle/dirroot}/local/course_checker
Afterwards, log in to your Moodle site as an admin and go to Site administration > Notifications_ to complete the installation.
Alternatively, you can run
php admin/cli/upgrade.php
to complete the installation from the command line.
📦 Installing via GitHub
Clone the plugin into your Moodle instance:
cd /path/to/moodle
git clone https://github.com/ffhs/moodle-local_course_checker.git local/course_checker
Run the upgrade script:
php admin/cli/upgrade.php
Or complete the installation via the Moodle web interface: Site administration > Notifications
Comments