mirror of
https://github.com/moodle/moodle.git
synced 2025-02-13 03:45:49 +01:00
There is an edge case in the conversion from old collapse/expand settings (stored as user preference) to the new ones that can lead to notices / warnings / errors. Before PHP 8, they weren't being detected, but now they are. Basically, if some of the expected components of the preferences are missing, then some array (array_diff(), array_intersect()..) operations now are failing, because now those parameter functions do require to be arrays (so empty strings or nulls aren't allowed). Also, there were some cases where the old preference was not being removed ever, so its removal has been moved to a common place at the end of the function, where it's always evaluated in case the preference still exists but is empty of contents. I've tried to cover all the cases I've been able to imagine with unit tests (empty information, some component not set, all components not set...), have moved it to a new unit test because the one already performing some tests with those old preferences was already too long to add more cases.