If a malformed value was passed, it may be that we can still display it.
We should not assume that, if a string is not passed, that we are
dealing with a promise.
This was supposed to be split into multiple commits to make it easier to understand
but I failed to do it properly. So this is the list of changes:
- New analytics_indicator_calc db table to store indicators calculations
- Reuse previous calculations during prediction/training; other models
previous calculations should also be reused as long as they belong to
the same sample (sampleid depends on sampleorigin), time range and indicator
- Allow bulk inserting of these calculations as this can hurt database performance
- Block the same analysable to be analysed for training and for prediction
- Use a new instance of the target and use it for is_valid_* functions
as using ::is_valid_sample can lead to problems if people
uses it to cache stuff
Shows a text warning in the manage files plugin window when an editor
has set the 'removeorphaneddrafts' option to true. The text tells the
user that unused files will be automatically deleted on save.
text areas can now specify $options['removeorphaneddrafts'] when saving
their data using file_postupdate_standard_editor(). If set to true,
this option clears all user drafts which are not referenced in the text
This was done for indicators, targets and time splitting methods so that we
can get the string identifier and component in order to display a help_icon.
The functions were also made abstract, removing the default implementation.
Indicators, targets and time splitting methods should define this function.
* We have duplicate input event handlers for the autocomplete element
which are both firing when the input element's value is being set.
In case an AJAX handler is defined for the autocomplete suggestions,
this causes the autocomplete suggestions so show "No suggestions" first
and then load the results from the AJAX handler a little bit later.
There are times, such as when viewing a user profile within a course,
when user_can_view_profile() should be passed a course to force it to
restrict its capability checks to only the supplied course. This change
makes sure that core_renderer->context_header() calls this correctly.