Skip to content

v5.1.0

Latest

Choose a tag to compare

@davidpesce davidpesce released this 21 Jul 03:32

v5.1.0

Adds Moodle 5.2 support, raises the minimum supported Moodle to 4.5, and
makes the Privacy API implementation functional.

Supported versions changed

Moodle 4.5 – 5.2 (previously 4.3 – 5.1).

Sites running Moodle 4.3 or 4.4 should stay on the 5.0.x line, which
includes the security fixes released in 5.0.3. Moodle 4.5 is the current
LTS.

Both ends of the new range are covered by CI across PostgreSQL and MariaDB.
Note that Moodle 5.2 itself requires PHP 8.3 and PostgreSQL 16 or MariaDB
10.11.

Privacy (GDPR) requests now include this plugin's data

The privacy provider previously declared that logstore_xapi_log and
logstore_xapi_failed_log hold personal data, but every export and deletion
method was an empty stub. In practice this meant:

  • a subject access (export) request returned nothing from these tables, and
  • a right-to-erasure request, or an ordinary user deletion, did not remove
    the user's rows.

Both are now implemented. Export and deletion cover both tables and run
through Moodle's standard log privacy handling in tool_log, the same path
logstore_standard uses.

If your site has processed erasure requests while running an earlier
version, rows for those users may still be present in these two tables.

They are not removed retroactively by upgrading. Re-running the deletion for
the affected users, or clearing the tables, is the way to reconcile that.

The declared metadata has also been corrected: it now lists the fields that
actually exist (userid, relateduserid, realuserid, ip, other) and
no longer names a moodleuserid field, which was never a column in either
table.

Fixed

  • Events no longer fail to transform when the standard log store's
    jsonformat setting is enabled.
    Transformers assumed the event other
    field was always PHP-serialized; with jsonformat on it is JSON, and
    historic events read from that table silently failed to convert. All
    decoding now handles both formats, matching how core reads the same field.

Changed

  • Deserialization of event data restricts allowed classes, matching the
    hardening core applies when reading the same field.
  • The report's filter column is validated against an allow-list before being
    used in a query. Both call sites already passed fixed values, so this
    closes a latent rather than live issue.
  • The route selection setting's "select all / deselect all" behaviour moved
    from an inline <script> to an AMD module, so the settings page works
    under a Content Security Policy that forbids inline script.

Upgrade notes

  • No database changes.
  • Requires Moodle 4.5 or later. Sites below that should remain on 5.0.3.
  • Review the privacy note above if your site has processed erasure requests.

Credits

Issues identified in an automated security review by
MDL Shield.