Add a function to the groups lib to filter a list of users down
to the ones who can see the module. Required because calling
groups_course_module_visible() for a list of users is too slow
and we shouldn't spread group logic outside of grouplib.php.
Using it in the assign grading table reduces DB queries from 6198/1 to 256/3.
This is 12secs down to 2.5secs.
There are numerous bugs with this new module to do with showing the currently selected date,
random changes in the selected dates, showing multiple selected dates and css errors.
This reverts commit 1d128663f6.
This reverts commit 4a521e6596.
The method context::insert_context_record() sets the context::$id to
an int, while when we create an instance, the $id is often read from
a DB $record object, and is a string. The ID should always be an int.
The sequence of questions that made up a quiz used to be stored as a
comma-separated list in quiz.questions. Now the same information is
stored in the rows in the quiz_slots table. This is not just 'better' in
a database design sense, but it allows for the future changes we will
need as we enhance the quiz in the MDL-40987 epic.
Having changed the database structure, all the rest of the code needs to
be changed to account for it, and that is done here.
Note that there are not many unit tests for the changed bit. That is
because as part of MDL-40987 we will be changing the code further, and
we will add unit tests then.
Only MySQL is allowed to run Moodle instances without
(with an empty) database prefix. The rationale is that
"user" is a reserved word in every RDBMS but MySQL.
Before this patch, installation was breaking badly, when
the "user" CREATE TABLE statement was issued. With this
patch the error is shown earlier (on connection) preventing
any advance/use of the database.
This check is present in all the drivers, just sqlsrv was missing it.
The previous behaviour delegates the responsability
of overwriting the 3 public methods to the child
classes, now the field type or moodleform field is
guessed earlier in the execution flow.
Other changes introduced here:
- Fix wrong moodleform detection when there is a form
in the page but the field we are dealing with is
not inside it.
- Updating the last week feature files to these new
step definitions.
- Some coding style changes.