3.9, 3.11.9, 4.1, 4.2
MOODLE_311_STABLE, MOODLE_39_STABLE, MOODLE_401_STABLE, MOODLE_402_STABLE
Covered by behat and PHPUnit tests.
Some smoke tests can be done to confirm all the content types supporting state are saved as expected:
Covered by behat and PHPUnit tests. Some smoke tests can be done to confirm all the content types supporting state are saved as expected: Restore the attached course backup-moodle-course-savestate-20230214-1831-nu.mbz . Enrol a student on the course. Login as the student. Answer the H5P activities in the course (without completing them). Access again to the activities and check the answers given have been saved.
- Restore the attached course backup-moodle-course-savestate-20230214-1831-nu.mbz.
- Enrol a student on the course.
- Login as the student.
- Answer the H5P activities in the course (without completing them).
- Access again to the activities and check the answers given have been saved.
HQ 2023 Sprint i1.2 Moppies
Add an option to save the current H5P content state (to recover it later) for the H5P activities.
This implementation requires:
- Add support to xAPI State in core_xapi, in order to save the content state.
- Implement/override the required classes/functions to use xAPI state get/post/delete inside mod_h5p.
- Add support for state saving and restoration from the H5P player.
- Behat tests for saving and restoring states inside an H5P activity
Things to consider:
- Reset the state when the H5P activity content is changed
- Implement methods from the framework related to the save content feature. That is:
- resetContentUserData (called from saveContent)
- deleteContentData (called from deletePackage)
- Setting to let admins define the frequency to save the user content (saveFreq). The saveFreq H5P setting is also used to trigger the methods required to save the content state.
- A mechanism to clean old entries in the xapi_states table (based on an admin setting to let them define how long should these entries be stored).
- General information about xAPI state: https://learningpool.com/xapi-state-api/ and https://xapi.com/blog/deep-dive-state-activity/
- xAPI specification: https://github.com/adlnet/xAPI-Spec/blob/master/xAPI-Communication.md#23-state-resource
- Query example xAPI state: https://www.xapijs.dev/xapi-wrapper-library/state-resource
- Information about statements: https://xapi.com/statements-101/
- H5P doesn't support State API: https://h5p.org/node/468797