Thomas Korner
Lead maintainer
Admin Cockpit gives Moodle administrators a single page instead of half a
dozen: user and course metrics, data-hygiene and infrastructure health
signals, and shortcuts to the admin pages you end up needing most.
Metrics. Global and per-"school" (or department/faculty - the label is
configurable) user and course counts, split into total/active/new-in-period,
computed live at request time rather than from a stored snapshot history.
Health signals with a click-target. Every signal is a number you can act
on, not a bare statistic: the core security overview traffic light, cron
status (last run, failed tasks in the last 24h), duplicate email addresses,
and courses without an end date each link straight through to fix or
investigate the underlying issue.
Navigation shortcuts. A configurable, grouped set of links to the admin
pages administrators actually use day to day (user upload, cohorts, course
management, reports, scheduled tasks, and more), so the dashboard also
doubles as a jumping-off point.
How "schools" are matched. A "school" (the term is a configurable label,
not a fixed concept) is two independently maintained Moodle objects sharing
one code: a system-wide cohort and a top-level course category, matched
purely by their idnumber, never by display name. Codes with only one side
present show up as a warning on the settings page instead of being silently
ignored.
Built on core APIs, not reinvented. The security overview signal reuses
the same core\check\manager API the core Security overview report uses;
cron status reads the same config/task-log data core's own scheduled-tasks
UI does; subcategory-inclusive course counts use core's own category-path
matching technique. No third-party JS/CSS libraries, no additional PHP
dependencies beyond Moodle core, and no database schema of its own - every
number is computed live.
Targets Moodle 5.1 and 5.2 on PHP 8.3/8.4, tested via GitHub Actions across
that full matrix on both MariaDB and PostgreSQL (PHP lint, Moodle coding
style, PHPUnit, Behat).