It was always a bit of a hack to use static methods on the
qbehaviour_whatever classes to return metadata about the behaviour. It
is better design to have real qbehaviour_whatever_type classes to report
that metadata, particularly now that we are planning to add more such.
For example, inheritance works better with real classes. See, for
example, the improvements in
question_engine::get_behaviour_unused_display_options().
This change has been implemented in a backwards-compatbile way. Old
behaviours will continue to work. There will just be some developer debug
output to prompt people to upgrade their code properly.
1. database upgrade to merge instructions into the questiontext field,
and remove the UNITDISPLAY option.
2. Changes to the validation in deferred feedback mode, so students
are warned about incomplete answers.
3. Using this to wark students if they enter an answer that is not
recognised as a number.