This class would belong more appropriately within the 'user' API
(core_user) instead of within the 'core' API, since it is
directly related to user data.
Since the class has only just been added to Moodle, now is a good
time to move it.
In all cases changes have been kept to a minimum while not making
the code completely horrible. For example, there are many instances
where it would probably be better to rewrite a query entirely, but
I have not done that (in order to reduce the risk of changes).
dirname() is a slow function compared with __DIR__ and using
'/../'. Moodle has a large number of legacy files that are included
each time a page loads and is not able to use an autoloader as it is
functional code. This allows those required includes to perform as
best as possible in this situation.
The protected method get_allocations_recordset() is a relict from
earlier development phases of Workshop module. Removing it as it
confuses recent Eloy's recordset usage detection tool.
Getting a context from instance is very cheap and I can actually do it
just once when constructing the workshop API class. In the future, I
will get rid of all $PAGE->context which is actually meant for things
like blocks etc.
DB columns userid renamed to authorid or reviewerid to make the value
clear. Improved manual allocation UI. Raw grades are stored as numeric
values from 0.00000 to 100.00000 (instead of the current 0 to 1) to be
more precise. Started to work on the Grading report (it est the overall
report of all grades form submission and grades for assessments).