mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 20:50:21 +01:00
The original issue here was that each loop of the named values did not check for prototypal properties. As a result, if there were input fields with names such as 'sort', 'valueOf', 'constructor', etc. these would return their prototypal functions instead of a falsy value, and be treated as though they are array - hence the 'Cannot push to Function' type error. Following on from this I discovered that the data stores were being created as arrays, but used as objects. This can also cause issues with some form input names -- e.g. if they are numeric. These two issues were resolved together by correctly storing them in objects, and checking that those objects had real properties (hasOwnProperty). This itself has to use the prototypal function to cater for the potential of a field name called 'hasOwnProperty'. I also found that the instance value stores were being initialised in the prototype (and therefore shared), which meant that there were numerous issues if two forms were present on the same page, or one form replaced an existing one (e.g. forms initialised in JS). In addition, it also became apparant that several values were being used outside of scope, or in the wrong scope. This caused further issues when creating multiple forms on a page.
.-..-. _____ | || | /____/-.---_ .---. .---. .-.| || | .---. | | _ _ |/ _ \/ _ \/ _ || |/ __ \ * | | | | | || |_| || |_| || |_| || || |___/ |_| |_| |_|\_____/\_____/\_____||_|\_____) Moodle - the world's open source learning platform Moodle <https://moodle.org> is a learning platform designed to provide educators, administrators and learners with a single robust, secure and integrated system to create personalised learning environments. You can download Moodle <https://download.moodle.org> and run it on your own web server, ask one of our Moodle Partners <https://moodle.com/partners/> to assist you, or have a MoodleCloud site <https://moodle.com/cloud/> set up for you. Moodle is widely used around the world by universities, schools, companies and all manner of organisations and individuals. Moodle is provided freely as open source software, under the GNU General Public License <https://docs.moodle.org/dev/License>. Moodle is written in PHP and JavaScript and uses an SQL database for storing the data. See <https://docs.moodle.org> for details of Moodle's many features.
Description
Languages
PHP
78.1%
JavaScript
14.6%
Gherkin
3.5%
CSS
1.7%
Mustache
1.6%
Other
0.4%