General plugins (Local): LTI Provider

Maintained by Picture of Juan LeyvaJuan Leyva
This is a local plugin for making Moodle a LTI provider tool. It can be use to provide access to full courses or activities from remote systems (other Moodle installations, Sakai, any LMS LTI consumer compliant)
358 sites
19 fans
Current versions available: 4

Note: There is no need to install this plugin in Moodle 3.1 onwards, since LTI-provider functionality is included as standard. Please see the documentation Publish as LTI tool for details.

About this plugin
This is a local plugin for making Moodle a LTI provider tool.
It can be use to provide access to full courses or activities from remote systems (other Moodle installations, Sakai, any LMS LTI consumer compliant)
Please note that since Moodle 2.2 there is a core activity plugin called "External tool" that is a LTI consumer.

Why this plugin
This plugin allow remote systems users (LTI consumers) access to Moodle courses or Moodle activities inside a course.
Moodle (version 2.2 and onwards) is a LTI consumer tool also.
You can use this plugin to share activities and courses between Moodle installations without configuring a Moodle network.
You can also share activities and courses with other LTI consumer tools like Sakai

You have an excelent review of this plugin here

Main features

  • Provide access to full courses or single activities.
  • Single sign on
  • Change the navigation block of a course or activity for displaying information and links only regarding to your current course.
  • Send backs course or activity final grades to the LTI consumer tool
  • Modify the course or activity page for hiding the header, footer and left or right blocks

Default installation instructions for plugins in category General plugins (Local)

  1. Make sure you have all the required versions.
  2. Download and unpack the module.
  3. Place the folder (eg "mylocal") in the "local" subdirectory.
  4. Visit to finish the installation


This plugin uses code developed by IMS licensed as MIT

Fore more information:


Please, visit the help forum post


Picture of Juan Leyva
Juan Leyva (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS


  • Picture of Mark Palkhivala
    Tue, Oct 2, 2012, 6:05 AM
    Juan, first off, excellent work on this! does this plugin *always* create users on the new system based on the user_id passed? Is it possible to pass some information to co-relate with an existing moodle user?
  • Picture of Chris Kenniburg
    Wed, Oct 17, 2012, 1:04 AM
    THIS IS GREAT. Thank you Juan. Works really well and I appreciate this plugin.
  • Picture of Mike Warner
    Thu, Jan 24, 2013, 3:37 AM
    Hi Juan,

    this code is very useful. The POX xml namespace in function ltiprovider_create_service_body() is incorrect. It needs to be:

    Most LMSs don't care, but Blackboard threw a 500 error until I fixed it. Well, someone else pointed it out and I edited my code. I retested and can still sync to another Moodle install.

  • my picture
    Thu, May 23, 2013, 6:46 AM
    Hi, I'm also a fan of this plugin.
    I found out that Moodle (2.4) terminates user sessions after cron is run, since users are created with 'nologin' authentication method.

    To avoid the problem, comment this line on /lib/sessionlib.php:
    unset($auth_sequence['nologin']); // no login allowed

    Maybe in future versions there will be a better fix for this.
  • Picture of Brendan Lalor
    Mon, Jul 1, 2013, 11:39 PM
    I am playing with this exciting plugin in Moodle 2.4, but my institution is looking at moving to 2.5 before August. So I'm hoping you have an idea of when you'll have a 2.5-friendly version. (I didn't succeed in getting this to work in 2.5 -- it's not supported yet, correct?)

    Thanks for the work on this! I'm poised to become a big proponent of the plugin in my state college system.
  • Picture of tim wilde
    Mon, Jul 29, 2013, 5:55 PM

    We are currently using the LTI provider software, but would like to make some changes so that we can embed an LTI object without blocks and use some custom CSS to hide some parts of the embedded object

    Test link as follows. (This has guest access)

    All works fine in Firefox, Chrome and IE9 but in IE10 nothing is hidden in the embedded object.

    I have set the following parameters on the LTI provider config;

    Hide footer - Yes
    Hide block left - Yes
    Custom CSS – As follows

    #custommenu {display:none !important;height:0px !important;}
    .navbar {display:none !important;height:0px !important;}
    #region-main {margin-left:0px !important;padding:0px !important;}
    #page-footer {display:none !important;height:0px !important;}
    .helplink {display:none !important;height:0px !important;}
    #page-title-box {display:none !important;height:0px !important;}
    #header {display:none !important;height:0px !important;}

    Your help/ideas would be appreciated

    All the best

  • Picture of Brendan Lalor
    Thu, Jan 23, 2014, 10:18 PM
    I'm happy to say my students are authenticated at our institution, and passed through via the "external tool" link to my site running lti_provider.

    The grades are not being pushed back to the institution, though. Here's the cron error report:

    Starting sync tool id 1 course id 3
    PHP Fatal error: Call to undefined function local_ltiprovider_create_service_body() in /home..../local/ltiprovider/lib.php on line 281

  • Picture of Jared Chapman
    Sat, Oct 18, 2014, 11:12 PM
    Juan, I hope you know I love you, because what I am about to say will seem unkind.

    The LTI Provider is a terrible mess. I can say this after using it in a live course this semester. At first it seems OK, but in practical experience, it is just awful. (sorry for the harsh words) I have added 7 LTI Workshops and imported them individually into Canvas. Each student gets a new user in Moodle for EACH assignment. That makes for 800+ users! There is a bug with the manual enrolments so that the time zone is a mess and students cannot turn in assignments within six hours of the due time. Grade passback only works for about 10% of the users. If it failed 100% I would think it was a chron issue, but only a few scores make it back. Work shop has two columns but grade passback only sends one score. With 7 rows for each user there is no way to know which score goes with which row, so if I need to enter a score by hand, there is no way to know which one it is.

    So, I don't mean to sound unkind. But I thought the community should be aware of my experience. I would love if someone would just explain to me that this is user error and that just do it different.
  • Picture of Juan Leyva
    Sun, Oct 19, 2014, 5:02 AM
  • Picture of Gary Collins
    Tue, Apr 14, 2015, 11:42 PM
    Any plans of updating this so it will work with 2.8+?
  • Picture of Daniel Longstaff
    Tue, May 12, 2015, 1:55 PM
    Hi Juan,
    We are using the LTI Provider plugin to connect to some third party resources online. However, as these are embedded into the Moodle course the screen size seems to adjusts to the users monitor size and restricts what is displayed on the screen. Is there anyway to alter the size of the embedded window to allow scrolling?

  • Picture of Alistair Spark
    Wed, Jun 3, 2015, 7:47 PM
  • Picture of Don Remy
    Tue, Aug 25, 2015, 4:37 AM
    Trying to get this to work on Moodle 2.9. When adding the plugin I get the following message:
    English Language File name mismatch: The given plugin type is missing the expected English language file ltisource_ltiprovider.php

  • Picture of Gemma Lesterhuis
    Mon, Sep 14, 2015, 10:10 PM
    Tried the plugin in Moodle 2.9 but got the following error: textlib_get_instance() can not be used any more, please use core_text:: functionname() instead.

    The plugin worked fine in Moodle 2.8. It would be nice to get it back up in 2.9 smile Thank you!

  • Picture of Juan Leyva
    Sat, Sep 19, 2015, 12:07 AM
    Plugin updated to work with Moodle 2.9
Please login to post comments