PHP allows the specification of invalid values for `max_execution_time`,
including negative values. These should be normalised the same way that
an empty (unlimited) value is.
When a terminating SSL proxy is in use, the scheme and port received by
the web server may be different to the wwwroot.
When a reverse proxy is in use, the scheme, port, and host name received
by the web server may be different to the wwwroot.
In both of these cases the incoming request URI must be updated to use
the correct host scheme, and port. In the case of the reverse proxy,
the host name must also be updated.
In both cases the actual path is expected to be correct, and neither the
path nor query parameters should be modified.
The base bulk actions class supports deselecting all selected items but
lacks knowledge of the element types. To enhance flexibility and
maintain the class's generic nature, this change introduces a mechanism
that allows each subclass to explicitly define how to reset the
attributes indicating a selected state.
Updated ARIA handling code to not assume the presence of a .dropdown
element.
- Modified keypress event listener to match
`[role="menu"] [role="menuitem"]` directly.
- Changed keyboard navigation handling to avoid assuming `.dropdown`.
- Updated focus trapping to use `.dropdown-menu[role="dialog"]` selector
ensuring compatibility with `.dropup` and other variations.
- Ensured focus untrapping logic uses the same improved selector.
The order of bulk actions was not preserved when rendering the bulk
actions content due to asynchronous operations. This fix ensures that
the actions are added to the `data.actions` array in the correct order
by using a temporary array to store the promises and then processing
them sequentially.
Also improved the JSDoc for better clarity on what the function returns
and what it resolves to.
Continuing from the last commit, the code to restore question
bank entries, versions and questions, was not taking note of
whether the first stage had indentified questions that did not
need to be restored. This is tricky, but the mapping can only be
worked out for questions, but in the backup file, the questions are
inside the question_bank_entries, and versions, so we encounter
those first.
Now, the code just saves the QBE and QV when it encounters them,
and then does all the processing when it gets to the question,
correctly taking note of whether each question should be restored or not.
In cases where a particular question does not need to be restored,
we still set up the corresponding mappings.