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.
If all assessments for the given submission have zero weight, the grading
evaluation plugin "Comparison with the best assessment" is unable to decide on
the average assessment as it ignores those with zero weight. In such rare case,
it makes sense to set the grading grade to null and prevent the coding
exception.
In a pretty rare case of zero variance of received assessments, the "distance"
of the evaluated assessment from the referential ("best") one was not increased
regardless it's actual value. This led to higher grades for assessments in
certain situations (see the tracker for a particular example).
From now on, the evaluator's method get_settings_form() should return a
subclass of workshop_evaluation_settings_form. The evaluation subplugins
are expected to use the define_sub() method to add their own fields into
the base form, although they can override the main define() method, too.
The former interface workshop_evaluation has been refactored into a
superclass with abstract methods which seems to be more robust.
Oh, by the way, I'm in Perth - yay!
AMOS BEGIN
MOV [settings,workshopeval_best],[evaluationsettings,mod_workshop]
AMOS END
This seems to be over-desing-patternized. Methods needed by standard
eval plugins (ie part of standard distribution) are part of strategy
API. Contributed eval methods will have to patch strategy plugins if
they need some other data from them.