Course checker

Local plugins ::: local_course_checker
Maintained by FFHS (Fernfachhochschule Schweiz), Stefan Dani, Simon Gisler
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.
Latest release:
11 sites
44 downloads
2 fans
Current versions available: 2

Course Checker Moodle Plugin CI

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:
  • Begins with an <h4> heading (configurable in code).
  • Includes a FontAwesome icon (e.g., [icon fa-book]) in the heading.
  • Is not whitelisted (certain labels can be excluded via configuration).
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

  1. Log in to your Moodle site as an admin and go to Site administration > Plugins > Install plugins.
  2. 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.
  3. 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

Potential privacy issues

The report page shows what changed in the course (Example: added activity, changed title, etc.) since the last check and who made that change. When the check is rerun, the changelog clears. These informations are also exported via privacy export.

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3

Contributors

FFHS (Fernfachhochschule Schweiz) (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments

Show comments
Please login to post comments