xAPI Launch Link

Activities ::: mod_tincanlaunch
Maintained by David Pesce
Launch external xAPI (Tin Can) activities from Moodle and track on a Learning Record Store (LRS). Compatible with Storyline, Captivate, and others!
Latest release:
395 sites
49 fans
Current versions available: 1
This plugin allows the launching of xAPI activities from a Moodle course and tracks the resulting xAPI statements with an external Learning Record Store (LRS). This plugin is compatible with activities implementing the Rustici launch method. This includes content created with Articulate Storyline or Adobe Captivate (among others). 
Suggestions, bug reports, code reviews, and contributions are welcome! Please don't add comments or questions here. Use Github instead: https://github.com/davidpesce/moodle-mod_tincanlaunch/issues

Note: In an effort to focus our resources on this project, only supported Moodle and PHP versions will be developed and tested against. That is currently Moodle 3.5, 3.7, 3.8, and 3.9. For PHP that is 7.2-7.4. As support drops from the providers of these items, we will drop support as well.


This plugin is part of set Tin Can.


Screenshot #0
Screenshot #1
Screenshot #2


David Pesce (Lead maintainer)
Andrew Downes: ex-maintainer
Please login to view contributors details and/or to contact them

Comments RSS


  • MD shot of me from his iphone4
    Mon, Aug 12, 2013, 1:07 PM
    Hi Andrew,
    Thanks for submitting your plugin entry, i've just had a look through it and here's some feedback:
    - The Bug tracker link should preferably be able to handle multiple issues being created. This would mean it could either be under https://github.com/garemoko/MoodleLaunch/issues or under https://tracker.moodle.org/browse/CONTRIB (once requested). You could probably link to MDL-35433 from description or from your preferred issue tracker for posterity.

    - The Discussion link : https://moodle.org/mod/forum/discuss.php?d=233707 could perhaps be moved, if you desire, to general add-ons forum or a (ask Helen) and 'Discussion' link here updated to point to that. The discussion link seems to make sense pointing to the MDL for now but for the future its best to point it to a forum area as the MDL issue will likely be closed.

    - The repository name: we're following a convention for Moodle plugins in the form of moodle-{plugintype}_{pluginname} , mentioned at http://docs.moodle.org/dev/Guidelines_for_contributed_code#How_to_submit_code . In this case renaming from MoodleLaunch to moodle-mod_tincanlaunch would match up with your plugin's code.

    Based on that comment I've gone and added this into a TinCan set, you can mention this set in future to have them grouped into it.

    ps: The general plugin infrastructure seems to be working good and the installation went smoothly. I did try to set it up with a link to google.com but the new window wouldn't pop up, its probably setup incorrectly though.
  • Sat, Aug 31, 2013, 4:57 AM
    I've made the changes you suggested.


  • Anthony Borrow
    Tue, Sep 10, 2013, 5:37 AM
    Andrew - Many thanks taking care of the issues Aparup mentioned. I looked and the readme file seemed to be the generic one rather than something specific to the file. Perhaps you could update that so that it either contains the information on the documentation page or at least the URL pointing to it. Also, there were some validation warnings:

    Maturity information ($module->maturity) not found in version.php
    Release name ($module->release) not found in version.php

    that should be pretty easy to fix up. Peace - Anthony
  • Anthony Borrow
    Tue, Sep 10, 2013, 6:04 AM
    Andrew - Documentation could probably be improved to help folks get a quick start. In particular, the concept of endpoint and launch URL probably needs some explaining. Perhaps you could provide folks with an example they can play with a little. I'm going to go ahead and approve this entry so that folks can begin playing around with it and give you further feedback. Keep up the good work! Peace - Anthony
  • Wed, Sep 11, 2013, 3:38 AM
    Thanks Anthony. I'll raise these as issues on Github and get them fixed next time I get a chance to work on this project. Do you have any guidance on what the content of the maturity and release variables should be?
  • Thu, Sep 12, 2013, 4:13 AM
    Hi. I've added some installation and use instructions on the development branch. Let me know what you think:

  • MD shot of me from his iphone4
    Fri, Oct 4, 2013, 5:13 PM
    on "maturity and release variables"
    - Maturity can be : MATURITY_STABLE, MATURITY_APLHA, MATURITY_BETA, MATURITY_RC. They are defined in lib/setuplib.php in moodle.
    - Release can be whatever you want to call your release, be it a name or a number.
  • Wed, Jul 1, 2015, 6:59 PM
    Hi Andrew,
    you are writing "Tin Can activities from a Moodle course and then track them with any LRS": I understand that you're launching the tin can web-app which is connecting to an LRS - no communication with moodle at all ... right?

    Is it possible to set up moodle as a LRS or to keep track in some way like usage/results/progress ... ?

  • Wed, Jul 1, 2015, 7:09 PM
    There's not direct communication, but there is indirect communication in that Moodle will query the LRS for in order to calculate completion. Moodle can also query the LRS for other data. See for example the Tin Can Learner Stream plugin.
  • Tue, Jul 7, 2015, 10:08 PM
    I am trying to use this plugin with Learning Locker (which I already use successfully) but when trying to launch TinCan using this plugin to launch my Tin Can I get the following error:

    Warning: fopen(http://expertlms.training/learninglocker/public/data/xAPI/agents/profile?agent=%7B%22name%22%3A%22Super+User%22%2C%22mbox%22%3A%22mailto%3Arjephcote%40skynoodle.co.uk%22%2C%22objectType%22%3A%22Agent%22%7D&profileId=CMI5LearnerPreferences): failed to open stream: HTTP request failed! HTTP/1.1 409 Conflict in /var/www/vhosts/s18346665.onlinehome-server.info/httpdocs/moodle/mod/tincanlaunch/locallib.php on line 405

    Warning: stream_get_contents() expects parameter 1 to be resource, boolean given in /var/www/vhosts/s18346665.onlinehome-server.info/httpdocs/moodle/mod/tincanlaunch/locallib.php on line 408

    Warning: stream_get_meta_data() expects parameter 1 to be resource, boolean given in /var/www/vhosts/s18346665.onlinehome-server.info/httpdocs/moodle/mod/tincanlaunch/locallib.php on line 409
    The Learning Record Store is not available. Please contact a system administrator.

    Error attempting to set learner preferences to Agent Profile API.

    array(2) {
    ["contents"]=> bool(false)
    ["metadata"]=> NULL

    Any ideas what I'm doing wrong?
  • Tue, Jul 7, 2015, 11:07 PM
    Hi Rob,
    This error could be caused by the same user launching the content at exactly the same time. Or it could be a bug in either the plugin or learning locker.
    Are you using the latest code from https://github.com/garemoko/moodle-mod_tincanlaunch ? (I need to do another release here) Are you using the latest release of Learning Locker?

    If you answered yes to both questions, can you also test with SCORM Cloud LRS? https://cloud.scorm.com
  • Thu, Jul 30, 2015, 8:27 PM
    I have this working on a test install of Moodle 2.6, but using tincanlaunch version 2014072300. I installed the latest version of tincanlaunch (version 2015033100) on another test server running Moodle 2.6 and get the following error when trying to launch a tincan session:

    PHP Fatal error: Class 'core\\event\\course_module_viewed' not found in /var/www/moodle/mod/tincanlaunch/classes/event/course_module_viewed.php on line 3

    I looked at that class and it appears to be using something only available in Moodle 2.7 (@since Moodle 2.7). The module instructions indicate all I need is Moodle 2.5, so I'm unsure of how to get this to work with 2.6.
Please login to post comments