MDL-62947 mod_feedback: fix feedback so it correctly uses forms API
authorJake Dallimore <jake@moodle.com>
Thu, 26 Jul 2018 01:56:00 +0000 (09:56 +0800)
committerJun Pataleta <jun@moodle.com>
Wed, 5 Sep 2018 04:12:20 +0000 (12:12 +0800)
commitc96c9601af41f9fe05b7a5259bc1590b8df17d9b
tree3500eab8cac236ca7006f12a9c3785d713e75bc6
parentc87010baca251ae1ccb39c4afb4de6595ee0b560
MDL-62947 mod_feedback: fix feedback so it correctly uses forms API

Feedback code was doing the following, which is incompatible with the
sec-patched quickforms lib:
- appending '[0]' to non-group element names, meaning type checks in
getCleanType() were falling back to PARAM_RAW instead of PARAM_INT,
and meaning _findValue() was comparing elements it thought to be arrays
with scalar submit values (worked with eval() implementation as the 0th
element of a string was the character, but not working when patched).
- external unit tests incorrectly testing multichoice questions in the
process_page tests - patched lib highlighted failures.

It was also doing the following:
- actively setting null as default element values instead of 0 for
radio buttons and dropdowns (for 'not selected'). This is incompatible
with more recent quickforms lib (see MDL-63070).
- creating groups using addElement instead of addGroup - not recommended

This patch addresses the above.
mod/feedback/classes/complete_form.php
mod/feedback/item/multichoice/lib.php
mod/feedback/tests/external_test.php