Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-67734

Create basic skeleton for a global xAPI library needed for H5P content


      A basic xAPI LRS support is needed In order to get statements from H5P content.

      This first issue will cover the following needs:

      • Have a "lib/xAPI" library for the main LRS access point
      • A generic Moodle webservice layer which wraps a xAPI statement processing
      • xAPI handler base classes which every plugin can extend to use xAPI on their code
      • xAPI statement class to generate xAPI statements with all related classes for handling actors (user, group), objects and verbs (the rest of xAPI properties would be compatible but validations will be responsibility of every plugin for now).
      • PHPUnit test
      • Null privacy provider

      The web service for processing a xAPI statement will delegate part of the process to specific plugins like the future mod_h5p.

      xAPI generic webservice (component, statement)

      The web service receive a frankenstyle component responsible to handle part of the statement and a xAPI statement structure.

      xAPI Statement generic processing method will:

      1. xAPI checks the statement structure, if any check fails, it returns an error. That means:
        1. Check that only supported xAPI attributes are used
        2. Check all users and groups are created in the LMS
      2. xAPI checks if the component has a xAPI handling class implementation. Otherwise it returns an error.
      3. For every statement:
        1. xAPI asks again the plugin to you convert into a standard event. In case the plugin could not convert some statement into an event, this statement will be marked as “rejected” and xAPI continue to the next statement.
        2. xAPI handler will trigger all the generated events
      4. Once all statements are processed:
        1. If ALL statements are marked as “not processed” it returns an error.
        2. If some statement could be processed, returns an array containing “true” if the statement is processed and “false" otherwise.


            tusefomal Ferran Recio
            tusefomal Ferran Recio
            Carlos Escobedo Carlos Escobedo
            Andrew Lyons Andrew Lyons
            CiBoT CiBoT
            2 Vote for this issue
            11 Start watching this issue


                Original Estimate - 0 minutes
                Remaining Estimate - 0 minutes
                Time Spent - 4 weeks, 6 hours, 12 minutes
                4w 6h 12m

                  Error rendering 'clockify-timesheets-time-tracking-reports:timer-sidebar'. Please contact your Jira administrators.