The OBv2.0 specification includes a field "Criteria" for
BadgeClass. Until now, this field was filled using the
URL of the badge assertion, but that is causing some issues
in Badgr because it linked to the badge assertion of the
first user sending this badge to the Badgr backpack (so then,
the following users linked to the first user assertion page
too).
This patch adds a new page, badgeclass.php which will be
used from now to display any badge information which is
not related to any assertion (like happens with the criteria
in BadgeClass).
This implementation will introduct changes to
the mod_quiz to implement the new qbank api
for view. Major changes are introduced in
the custom view and also all the legacy points
to the old qbank are changed to qbank plugins
where needed. It also deprecated and deletes
classes and scripts which were kept not to
break mod_quiz for the new api implementation.
This implementation will introduce a qbank plugin "managecategories"
which will add the question categories feature in the question bank view
by replacing the core classes. Having this plugin will give users
the flexibility of enabling or disabling the category tab.
- `notifylevel` will change what gets sent as part of the antivirus
notification emails based on the scan type. For example if set on
SCAN_RESULT_FOUND, it will not notify for any detections, if set to
SCAN_RESULT_ERROR, it will notify for both detections and errors.
- `threshold` will determine how far the lookback is when displaying the
status of the /reports/status (System Status) page. It will display as
an ERROR state if there has been scanner issues within this certain
threshold period
- As part of the above, scanner errors will now trigger a new event
which will be logged as antivirus_scan_data_error or
antivirus_scan_file_error. Due to the nature of it reading from the
logs table, it only works currently for the "Standard logging"
logstore.
Ref: https://php.watch/versions/8.0/final-private-function#final-private
This applies #712 from upstream libraries.
Unrelated: I've also changed a occurrence of "private final"
by the correct (PSR-12) "final private" in the constructor
(the final&private combination is allowed in constructors)
in lib/classes/event/base.php, because it's the unique case
in core and phpcs was really insisting.
The message_contact_blocked and message_contact_unblocked
events were deprecated. The reason being that you will be
able to block and unblock any user, regardless if they are
a contact or not. This information is also now stored in a
separate DB table.
It's possible the '\core\message\message' object has a null value
for the 'courseid' which is used in \core\message\manager::send_message().
Make sure we compensate for this.