New contrib: LTI Provider

New contrib: LTI Provider

by Juan Leyva -
Number of replies: 194
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

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

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

More info here:

http://moodle.org/plugins/view.php?plugin=local_ltiprovider

Average of ratings: -
In reply to Juan Leyva

Re: New contrib: LTI Provider

by Andreas Grabs -
Picture of Core developers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers Picture of Translators

Hi Juan,

thank you very much for this great plugin! It is total easy to use and it works smile.

I found a small issue. In line 154 in the tool.php you do a db-query to "local_ltiprovider_user" and also a comparison with the sourceid. But the sourceid is different on each call.
So each time a new entry is created in the table "local_ltiprovider_user". If a student is calling this tool three times or more an error occurs.

Error: mdb->get_record() found more than one record!

  • line 1302 of /lib/dml/moodle_database.php: call to debugging()
  • line 1262 of /lib/dml/moodle_database.php: call to moodle_database->get_record_sql()
  • line 1242 of /lib/dml/moodle_database.php: call to moodle_database->get_record_select()
  • line 154 of /local/ltiprovider/tool.php: call to moodle_database->get_record()

You can see this error if you enable debugging at the provider-side where your plugin is installed.

Best regards an a happy new year!
Andreas

In reply to Andreas Grabs

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi Andreas,

thanks for your bug report:

I'm going to change this right now according what the IMS LTI spec says

lis_result_sourcedid=83873872987329873264783687634
This field contains an identifier that indicates the LIS Result Identifier (if any) associated with this launch. This field identifies a unique row and column within the TC gradebook. This field is unique for every combination of context_id / resource_link_id / user_id. This value may change for a particular context_id / resource_link_id / user_id from one launch to the next. The TP should only retain the most recent value for this field for a particular context_id / resource_link_id / user_id. This field is optional.

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers
In reply to Juan Leyva

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

The plugin entry is also updated with this fix

http://moodle.org/plugins/view.php?plugin=local_ltiprovider

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Andreas Grabs -
Picture of Core developers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers Picture of Translators

Hi Juan,

perfekt! Now it works without errors smile.

Best regards and a nice weekend
Andreas

In reply to Juan Leyva

Re: New contrib: LTI Provider

by alejandro martinez garcia -

Hi
I am experimenting with my own LTI provider that will communicate with Moodle.
I'm trying to send a GRADE to Moodle.
Moodle sends to my provider, the following information:

 

lis_result_sourcedid={"data":{"instanceid":"12","userid":"2","launchid":239445611},"hash":"9b483fd22cfbfb2bb5d3de957258736c543900470eb54acab15aeda2c0263755"}



Using POX and XML, what information should I include as .$source.?

<replaceResultRequest>

                                   <resultRecord>

                                              

                                                   <sourcedGUID>

<sourcedId>'.$source.'</sourcedId>

</sourcedGUID>

                                               <result>

                                                           <resultScore>

                                                                       <language>en-us</language>

                                                                       <textString>'.$grade.'</textString>

                                                           </resultScore>

                                               </result>

                                   </resultRecord>

                        </replaceResultRequest>




  • Should I send full  "lis_result_sourcedid"?  I.e.: {.............................}
  • Just the "data"? I.e._ {"data":{...}.........}
  • Just the "instanceid"?
  • Just the "launchid"?
  • Just the "hash"?


Thanks


In reply to alejandro martinez garcia

Re: New contrib: LTI Provider

by John McCann -

Hi Alejandro

I have just run into this problem.  Did you find an answer ?

Is it all or just a section ?

Cheers,

JMC

In reply to Andreas Grabs

Re: New contrib: LTI Provider

by Charan Sri -

Hello,

I am using Moodle 3.0.3 version. I have installed this plugin, as per the context here "https://docs.moodle.org/30/en/LTI_Provider", i have followed the instructions. A new link called "LTI Provider" is shown in the course navigation block. But when I clicked on it, it is showing 500 internal error page.

Please help me on moving forward.

Thanks
Sricharan

In reply to Juan Leyva

Problem with X-Frame-Options

by Charles Severance -

Juan,  This is really cool - I downloaded it and got it working in Moodle 2.2 on the IMS servers.  

It took me a while to debug a blank screen that was caused by   X-Frame-Options being set to sameorigin if I wanted to embed it in a frame.   I had to change Site administration / ▶ Security / ▶ HTTP security -> Allow frame embeddingallowframembedding to "yes" to get it to work in a frame.

You might want to change lthe redirect() call to first check $CFG->allowframembedding and if frame embedding is disallowed do not do the redirect and instead, generate HTML with and without Javascript to make a popup window.

This way folks would not have to enable something they consider insecure.


In reply to Charles Severance

Re: Problem with X-Frame-Options

by Charles Severance -

Actually it should *check* if it is same origin before doing the popup - a little trickier.

In reply to Charles Severance

Re: Problem with X-Frame-Options

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi Charles,

wow, this is new in Moodle 2.2!

I'm not sure I can add some javascript for handling this, because if this header is present, my code will not be executed. So I cannot check this option (the browser is blocking my provider site code)

Any ideas?

Regards

In reply to Juan Leyva

Re: Problem with X-Frame-Options

by Charles Severance -

Good point.   Let me think about it.   I have the code to play with.  I have a feeling you could tweak the headers early in your PHP code that gets the launch.  Grab it after Moodle sets the headers but before they get sent...  

In reply to Charles Severance

Re: Problem with X-Frame-Options

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi Charles,

I've been looking at this, and I've posted a message in the developers forum.

In this message I ask for add new hooks in Moodle in order to achieve this easily withouth core changes

http://moodle.org/mod/forum/discuss.php?d=193801

In reply to Juan Leyva

Re: Problem with X-Frame-Options

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi Charles,

I've added support for displaying in a new window the tool ifmoodle embedding is disabled in the setttings.

We detect (as you suggested) the setting and display a notice message that opens a popup.

If popups are blocked, the user can open the tool using a link provided in the notice message

https://github.com/jleyva/moodle-local_ltiprovider/commit/22685ee204b3922f012ffa77a81698b39721b227#tool.php

The code is in the github repository, I will update the plugin once I fixed a bug with the grades sync

Regards

In reply to Juan Leyva

Hiding left and right blocks not quite right

by Charles Severance -

Juan, The option to hide left and right blocks (a wonderful feature by the way) does indeed hide the blocks on my version, but it still leaves the space on the left and right, kind of defeating part of the purpose of removing these.

Did I already say how awesome this is smile  Thanks.

In reply to Juan Leyva

I just did a Screen Cast on Using this Module

by Charles Severance -

I am using this module in a small pilot in a class with 60 students I am teaching at the University of Michigan.  

In reply to Charles Severance

Re: I just did a Screen Cast on Using this Module

by Bryan Williams -

Thanks Chuck for this example video of IMS LTI in action. For those who don't know, Charles Severance is the developer of the Sakia LMS and a strong voice in the educational community for IMS LTI. You totally ROCK, Dr. Chuck! approve

In reply to Bryan Williams

Re: I just did a Screen Cast on Using this Module

by Charles Severance -

Thanks for the kind words Brian.    This is all so much fun.

In reply to Charles Severance

Re: I just did a Screen Cast on Using this Module

by ali jafari -

Thanks Charles for sharing this video.

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Antoni Bertran Bellido -

Hello first of all thanks!!

I found one problem. I f you have in the same Moodle BasicLTI Provider and BasicLTI Consumer you get errors because there are some repeated classes and function. I changed 3 files and then everything works.

The files are:

  1. ims-blti/blti.php
  2. ims-blti/blti_util.php
  3. ims-blti/OAuth.php

Then when I try to register a tool I have the same problems in mod/basiclti.

The best solution is to change all the functions in this 3 files prefixing with ltiprovider_ or something like that?

What do you think?

 

 

In reply to Antoni Bertran Bellido

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Thanks Antoni for your feedback, indeed this is a big bug smile

I will check it out asap

In reply to Antoni Bertran Bellido

Re: New contrib: LTI Provider

by Charles Severance -

This code is the IMS sample code that has been included in Juan's code.   Since Juan grabbed the code from IMS (which is great), I have refactored things, combining stuff into a single file.

Once things settle down, I want to get things realigned and so I will be happy to take these suggested changes back and integrate them into the IMS sample code.  But there is no rush - what needs to happen is get things nice and clean here and then later unify the code.

In reply to Antoni Bertran Bellido

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi Antoni,

I have installed the plugin in a Moodle 2.2 installation and share activities between courses without error

Can you provide some steps to reproduce this error?

Regards

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Antoni Bertran Bellido -

Hi Juan, I install a new Moodle 2.2 and install your plugin and http://code.google.com/p/basiclti4moodle/

Then when I go to /admin the page doesn't load (I get blank page)...

If I overwrite the 3 files it works...

In reply to Antoni Bertran Bellido

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi Antoni,

in Moodle 2.2 you don't need the basiclti4moodle plugin, you have the "External tool" (lti consumer)  included in core

But it's true this can cause problems in Moodle 2.0 and Moodle 2.1 installations

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Enosha Hettiarachchi -

Hi All,

I used two moodle instances where one works as the consumer and the other as the provider. Everything works fine except when it comes to transfering the grades back to the consumer.

Then I insatlled MoodleCron-Setup.exe (http://download.moodle.org/download.php/windows/MoodleCron-Setup.exe) but it still doesn´t work sad

Can anyone pls tell me what is the problem?

Thank you

In reply to Enosha Hettiarachchi

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi Enosha,

can you go to Admin -> Notifications?

There is a message telling something abouth that the cron have not been executed the last 24 hours?

Can you call the cron directly, put in your browser:

yourdomain.com/admin/cron.php

Can you copy and paste here the cron output?

Regards

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Enosha Hettiarachchi -

Hi Juan,

When I go to Admin -> Notifications, it doesn't give any messages.

Cron output I get is

Server Time: Fri, 13 Jan 2012 15:28:14 +0100


Created missing context instances
Cleaned up stale user sessions
Running auth crons if required...
Running enrol crons if required...
Running cron for enrol_cohort...
Starting activity modules
Processing module function assignment_cron ...... used 3 dbqueries
... used 0.094145059585571 seconds
done.
Processing module function forum_cron ...Starting digest processing...
Cleaned old digest records
... used 3 dbqueries
... used 0.056394100189209 seconds
done.
Finished activity modules
Starting blocks
Finished blocks
Starting quiz reports
Finished quiz reports
Starting admin reports
Finished admin reports
Starting main gradebook job...
done.
Starting processing the event queue...
done.
Starting course reports
Finished course reports
Starting gradebook plugins
Finished gradebook plugins
Fetching external blog entries...done.
Deleting blog associations linked to non-existent contexts...done.
Starting registration update on hubs...
Finished registration update on hubs.
Deleting session linked tokens more than one day old...done.
Starting admin tools
Processing cron function for tool_qeupgradehelper...
done. (1 dbqueries, 0 seconds)
Finished admin tools
Checking automated backup status...INACTIVE
Deleting old draft files... done.
Cron script completed correctly
Execution took 0.719168 seconds

Thank you

Best Regards

Enosha

In reply to Enosha Hettiarachchi

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Please, be sure that you are executing the cron in the Moodle where the ltiprovider is installed.

It seems that the lti provider is not installed in the Moodle where you launched the cron

It must appear this line: "Running cron for ltiprovider"

Can you verify this?

If you were launching the cron in the right place, please, enable debugging in Moodle Admin - Development - Debugging - Show all messages and click display messages, and execute the cron again

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Enosha Hettiarachchi -

Hi Juan,

This time I executed the cron on the moodle provider where the LTI Provider is installed.

And the output is

Server Time: Mon, 16 Jan 2012 12:17:11 +0100


Created missing context instances
Cleaned up stale user sessions
Running auth crons if required...
Running enrol crons if required...
Running cron for enrol_self...
Running cron for enrol_cohort...
Starting activity modules
Processing module function assignment_cron ...... used 2 dbqueries
... used 0.040203809738159 seconds
done.
Processing module function chat_cron ...... used 5 dbqueries
... used 0.030758857727051 seconds
done.
Processing module function forum_cron ...Starting digest processing...
Cleaned old digest records
... used 3 dbqueries
... used 0.021239042282104 seconds
done.
Processing module function scorm_cron ...... used 1 dbqueries
... used 0.033830881118774 seconds
done.
Finished activity modules
Starting blocks
Processing cron function for rss_client....
0 feeds refreshed (took 0.009339 seconds)
done.
Finished blocks
Starting quiz reports
Finished quiz reports
Starting admin reports
Finished admin reports
Starting main gradebook job...
done.
Starting processing the event queue...
done.
Starting course reports
Finished course reports
Starting gradebook plugins
Finished gradebook plugins
Fetching external blog entries...done.
Deleting blog associations linked to non-existent contexts...done.
Starting registration update on hubs...
Finished registration update on hubs.
Deleting session linked tokens more than one day old...done.
Starting admin tools
Processing cron function for tool_qeupgradehelper...
done. (1 dbqueries, 0 seconds)
Finished admin tools
Processing customized cron scripts ...Processing cron function for local_ltiprovider...
Running cron for ltiprovider
done. (1 dbqueries, 0.01 seconds)
done.
Checking automated backup status...INACTIVE
Deleting old draft files... done.
Cron script completed correctly
Execution took 0.694152 seconds

But it still doesn't pass the grades to the other moodle instance.
Do I need to do something with the grade setting in consumer instance?

thank you
enosha
In reply to Enosha Hettiarachchi

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi Enosha,

are you exporting the full course or just and activity?

can you update the user grade in an activity or the final course grade (if you are sharing the full course) and run again the cron function?

It should display more information for debugging

Regards

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Enosha Hettiarachchi -

Hi Juna,

I am exporting just an activity (For testing, I created a quiz and i am exporting only this quiz)

The user grades of that quiz is updated in the particular provider course and the problem is it's not passed to the consumer sad

I again ran the cron but it doesn't display any messages...

Regards

Enosha

In reply to Juan Leyva

תשובה ל: New contrib: LTI Provider

by עומר המאירי -

Hey juan.

1. i cant tell you how glad i am to see this plugin come out. many many thanks.

2. i have translated this plugin to hebrew, how do i contribute it ?

3. can you specify exactly what happens when i use this tool to share activities on the SAME moodle site ?

from what iv'e seen, after the user clickes on the link and transfered, he adopts his new identity, and is revoked of all his rights in this site.

even thow he still is an active student in the site.

 

if he wants to continue working on the site, he has to log out and log in again. (or am i doing something wrong ?).

 

Omer

In reply to עומר המאירי

Re: תשובה ל: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi Omer,

2 please, attach in a new message your trasnlation zipped

3 This tool is not designed to share activities in the SAME site. IMS LTI is for sharing between differents systems.

What you see (change of identity) is what really should happen.

For sharing activities in asite, I recommend you to use metacourses or others moodle approach

In reply to Juan Leyva

New contrib: LTI Provider

by John St -

This works brilliantly! Any chance that a theme could be set from the config page? Even if from the URL (i.e., &theme=base). I see you can add custom css, but it would be sweet to be able to set a custom LTI provider theme. 

In reply to John St

Re: New contrib: LTI Provider

by Charles Severance -

The other thing if we are playing with the CSS would be to include the LMS provided CSS somewhere in the head if it was provided.   It eeds to be somewhere early so as not to conflict with essential things that the Moodle theme needs to define.

In reply to Charles Severance

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi Charles,

in the current plugin version you have options for adding custom CSS (bellow the hide page and footer settings)

Using some CSS hacks will be easy modify the header and add a background logo, the main problem is that not custom html can be added

Regards

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Alex Contis -

Hi Juan,

Thank you for this great plugin. I'm sharing a forum across Moodle 2.2 sites, everything works fine except that I can't on the consumer side get rid of the theme header for the site providing the forum. I have checked the option to hide both the header and footer on the provider side but somehow only det footer is hidden.

Any hint about what I could do to get the header hidden?

Regards
Alex Contis 

In reply to Alex Contis

Re: New contrib: LTI Provider

by John Andrewartha -

Excellent effort.  Thank you.   One thing I note is I can't get it to work.  It appears there is a problem with Moodle 2.2 in the External tools code.  I get the following

Fatal error: Call to undefined function hash() in /usr/local/www/moodle/mod/lti/locallib.php on line 204

I have included it here just in case it is a provider and not consumer issue.

The error is on a consumer Moodle 2.2.1+ Moodle 2.2.1+ (Build: 20120119)

In reply to John Andrewartha

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Which PHP version are you using for running Moodle?

In reply to Juan Leyva

Re: New contrib: LTI Provider

by John Andrewartha -

PHP version 5.3.8 built from sourse.  OS FreeBSD 8.2 Stable as of last weekend.

Using mysqli as native DB driver.

In reply to John Andrewartha

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Check in Server --> PHPinfo if PHP has been compiled without hash support, something like --disable-hash

In reply to Juan Leyva

Re: New contrib: LTI Provider

by John Andrewartha -

It seem I was suffering a decaying laptop.  Windows 7 and Firefox.  I changed to Kubuntu and FF 9.0.1 and the problem disappeared.   I guess to old adage, "air conditioning is like computers, open windows and they both stop working." [F8BBS 1995]

One quirk I found is that if an assignment is on the provider and the file to be uploaded is on the local FS, Json breaks with redirect errors.  Workaround, use a cloud or place assignments on the consumer.

Second interesting feature, that effects only those with write privilege on the consumer.  If as I do have 2 tabs open in the browser, one on the consumer and the other on the provider.

When you go from tab with consumer to tab with provider the session information for the consumer follows you.  You are locked into the consumer session on the provider, until cron.php runs.  Should not effect students.   This looks like a browser issue.

In reply to Alex Contis

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

For hiding the header I use a CSS line that should work on most Moodle Themes.

Which theme are you using?

If you have CSS skills you can add custom CSS lines in the tool settings for hiding (changing colors, etc..)

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Alex Contis -

Hi,

I tested with the darkb theme on the provider side. It works ok if I change to the standard theme. I suppose it's something withe the darkb theme that's different since the option "Hide page header" does not work.

Did you consider puting the "LTI provider" link in the "Settings" block?

Regards
Alex Contis 

In reply to Alex Contis

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi Alex,

currently it is not posible too add links in the settings block from a local plugin.

If in a future it's posible, I will add the link there 'cause is the right place

You may ask the darkb theme developer for a css line to hide the page header

Regards

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

I just uploaded a new version:

http://moodle.org/plugins/pluginversion.php?id=466

- New settings for:
-- Enrolment duration
-- Enrolment start and end dates
-- Enrolments quota

- Support for Moodle 2.2 allowframembedding option

Dont't forget to go to Admin -> Notifications after upgrading the code, there are changes in the plugin's tables

In reply to Juan Leyva

תשובה ל: Re: New contrib: LTI Provider

by עומר המאירי -

Grades are not sent back to the consumer:

 

Hey juan.

Again, great work on this plugin, i cannot say this enough.

 

I have installed the lates version, and students are able to go through the tool into a quiz activity which i set up.

They are also able to take the test, and submit the result.

After they are all done - i can see their grades on the provider's Grade report, but from some reason it doesnt send the grades back to the consumer.

- i have checked "send grades back"

- cron jobs gives me this output:

Processing customized cron scripts ...Processing cron function for local_ltiprovider...
Running cron for ltiprovider
 Sync tool id 1 course id 2
 Sync tool id 2 course id 14
 Sync tool id 3 course id 14
 Sync tool id 4 course id 14
 Sync tool id 5 course id 14
 Sync tool id 6 course id 14
done. (55 dbqueries, 0.14 seconds)
 

but still - no grades aprear on the consumer side,

am i missing something ?

 

i would really appriciate your help.

 

Cheers,

Omer

In reply to עומר המאירי

Re: תשובה ל: Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

For those experiencing problems with the grades, I have added some additional debugging in the function that sends grades back

Overwrite your local/ltiprovider/lib.php (make a backup before) with

https://raw.github.com/jleyva/moodle-local_ltiprovider/master/lib.php

And run again the cron manually, please, add here the debug messages

In reply to Juan Leyva

Grades not transferring

by Mark Berthelemy -

Hi Juan,

I'm running two identical instances of Moodle 2.3 on the same webserver. One has your LTI Provider plugin installed, and set to share a single activity: online assignment.

The Consumer site is able to pull in that assignment with no problem. But I'm unable to get the grades to send across. The "send grades across" tick box is ticked.

When I run cron.php on the Provider site, the relevant section says:

Processing customized cron scripts ...Processing cron function for local_ltiprovider...

Running cron for ltiprovider

done. (1 dbqueries, 0 seconds)

As a "teacher" I have graded the assignment, and the grade is showing in the Provider's gradebook.

I have tried over-riding the grade and then running cron, but with the same result as above.

Any ideas?

Thanks,

Mark

In reply to Mark Berthelemy

Re: Grades not transferring #2

by Tony Gordon -

I am encountering the same problem as Mark, with the grades not transfering between an LTI provider and consumer site.

I have setup an external tool on a Moodle 2.3.2 site.  Enabled web services, embedded frames and just in case it helps, enabled Publishing in the grades section.  Let's call this site A.

I have installed the LTI provider on a Moodle course running physically on another server.  Within that course, I have setup an LTI Tool using the LTI Provider link in the course navigation.  Frames and webservices are enabled on this site as well as grade publishing.  Lets call this site B.

I can login as a student on on site A and can take the quiz on site B.  When I click on the review, I see my score displayed correctly on site B in a frame.  I can return to the course on site A by clicking on the breadcrumb link.

I have then run the cron job for both sites and I get a message from site B stating:

Processing customized cron scripts ...Processing cron function for local_ltiprovider...
Running cron for ltiprovider
Sync tool id 1 course id 2
User grade send to remote system. userid: 6 grade: 0.3
done. (29 dbqueries, 1.22 seconds)

When running site A cron, I do not see any message relating to lti at all.

I'm now at a loss to see how to get a grade to appear in the course on site A.  Any suggestions welcome!  Thanks! ATG

 

 

 

In reply to Tony Gordon

Re: Grades not transferring #2

by Tony Gordon -

Added Webservices as well on both sites via Site admin> Plugins > Web services > Manage protocals.  Turned on AMF REST and SOAP.  XML-RPC is not allowed by our tech folks.  Still not returning a grade to the consumer site.

Turned on Full Error reporting on test LTI provider server: the following was output when running the cron:

Processing customized cron scripts ...Processing cron function for local_ltiprovider...
Running cron for ltiprovider
 Sync tool id 1 course id 2
User grade not send: grade = 

Notice: Undefined index: query in /home/techlit/www/23test/local/ltiprovider/ims-blti/OAuth.php on line 269
User grade send failed: 
User grade not send: grade = 

Notice: Undefined index: query in /home/techlit/www/23test/local/ltiprovider/ims-blti/OAuth.php on line 269
User grade send failed: 

Notice: Undefined index: query in /home/techlit/www/23test/local/ltiprovider/ims-blti/OAuth.php on line 269
User grade send failed: 
done. (38 dbqueries, 1.1 seconds)
done.

I don't know enough PHP to know what is happening (or not happening) on Line 269!

Tony

 

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Igor Kazakov -

Hello, Juan.

Thank you very much for your plugin, it works pretty.

We have the following question.

We want to pass from client LMS information about user group.

As far as we can see from this link
http://www.imsglobal.org/lti/blti/bltiv1p0/ltiBLTIimgv1p0.html#_Toc261271975
we can pass it from client (Moodle 2.2 or some other LMS) as a custom key/value parameter.
Have you any plans to implement functionality by processing of some custom parameters?

For example, you can check "groupname" key in POST variables and if this parameter exists, create corresponding group (if necessary) in course and assign user to it.

Thanks.

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Bhimcharan Samanta -

Hi Juan,

I am working in LMS system which is build in custom PHP.I have to fetch Course details,studedent details,subject details from a Moodle instances. Is Moodle LTI provider work there for this requirement?.Please help me.

Thanks...

In reply to Juan Leyva

Re: New contrib: LTI Provider

by David Richter -

Juan,

First of all, thank you for investing the time and effort on this contribution - it works great!

I do have a question about activity reporting, however. I have a Sakai instance running that is an LTI consumer of some courses I have running on Moode serving as the LTI provider.

I thought it would be interesting to create a report (using your Configurable Reports block), showing external tool user logins to the Moodle platform. The report shows the First Name, Last Name, Email Address, and Logins to the System.

Output from the report lists the users coming in from Sakai alright, but it shows a zero for the number of logins. I presume it has to do with the fact that the users coming in from Sakai are set up in Moodle as a nologin account - correct?

Is there a way around this as it would be nice to be able to report on external users and their activities.

Cheers!

David Richter

In reply to David Richter

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

You my create a SQL query in my configurable reports, you have all the information you need in:

local_ltiprovider_user table

Also, you can filter the moodle log table by

ltiprovider login

in the description field

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Jared Chapman -

I could use some help please,

The setup all goes ok, I make a tool, when I refere to the tool from another system (Canvas) I get this error in the frame:

This webpage has a redirect loop

The webpage at http://iteach.org/japomani/moodle/mod/quiz/view.php?id=2 has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer.

Here are some suggestions:

Error 310 (net::ERR_TOO_MANY_REDIRE
 
Then I go back to moodle, and all pages give the same error.
 
If I remove the lti folder from local, moodle goes back to normal. Then I uninstal and reinstall lti, everything is ok agian, until I try to access the tool from the other LMS.
 
When I click the test button in the plug in I get redirected to the course main page, when I go directly to the url for the tool I get a blank screen.
 
Any suggestions?
In reply to Jared Chapman

Re: New contrib: LTI Provider

by Jared Chapman -

It also seems to affect logins. After I have tried to access the tool from canvas, when I go back to moodle, and move the lti provider folder out of local so I can get access to the site again, I lose my admin privilages, it kicks me out to my profile page, and have to log out and log back in to get the admin navigation again.

In reply to Jared Chapman

Re: New contrib: LTI Provider

by John Andrewartha -

The infinite loop is solved by updating your browser. It seems it was a early problem. I use FF and it works OK. Now!

It appears that the cookie for the LTI provider is retained by the browser, solution close and reopen the browser or, wait for the cron job to remove the cookie on the provider.

The correct solution should be for the consumer to give the provider it's session cookies. I don't know how to make this happen. sad

There is a third issue with Moodle as the provider. A LTI session expires when the cron job is run on the provider. If you have a short period for cron IE 15 minutes it will give problems.  My solution is to increase the crone time to 120 minutes and not place forums and assignments on the provider. They need processing quickly,

In reply to John Andrewartha

Re: New contrib: LTI Provider

by Jared Chapman -

John, thanks for the insight. I have tried it in the most current version of FF and Chrome. No go. I have also cleared all the cookies, no go. Any other ideas?

In reply to Jared Chapman

Re: New contrib: LTI Provider

by John Andrewartha -

When I had the problem the code needed some fine tuning. Simply closing and reopening the browser fixed the problem.

 

Here is a secret and launch URL you can try here.

Secret   75b47ef4ca38fb8c7569c69b367b1e3e

Launch URL  http://beasty.dorset.org.au:5050/moodle/local/ltiprovider/tool.php?id=24

 

If you don't get the problem then your code may be need updating.

Let us know.

John

In reply to John Andrewartha

Re: New contrib: LTI Provider

by Jared Chapman -

Hmmm... That is helping a ton, thank you. This may just be a troubleshooting issue.

The tool you send displayed. I got:

Enrolment options

You can not enrol yourself in this course.
 
Is that what I should have seen?
 
I am wondering if my LMS is not sending the right credentials. Is there a way to troubleshoot that, to see what is coming through?
 
 
In reply to Jared Chapman

Re: New contrib: LTI Provider

by Jared Chapman -

John,

Would you try to see if you can access my tool?

 

Tool nameShared secretLaunch URLEdit
Label: Assignments 487bf49bf9784d13dc2c467776be59eb http://iteach.org/japomani/moodle/local/ltiprovider/tool.php?id=2

It is just a label

In reply to Jared Chapman

Re: New contrib: LTI Provider

by John Andrewartha -

I can confirm that I am getting the re-direct loop that you describe.

The only thing I can think of is maybe old code.  You can get the absolute lattest and greatest from the git repo at  https://github.com/jleyva/moodle-local_ltiprovider

Just click the zip button at the top left and get the newest, reinstall and see if that fixes things.

In reply to John Andrewartha

Re: New contrib: LTI Provider

by Jared Chapman -

Well, that didn't work either. I reinstalled moodle with the latest version and that did not help either.

These were the only problems with the install.

 

should be installed and enabled for best resultsshould be installed and enabled for best results

The xmlrpc extension is needed for hub communication, and useful for web services and Moodle networking

Check
php_extension intl should be installed and enabled for best resultsshould be installed and enabled for best results

Intl extension is used to improve internationalization support, such as locale aware sorting.

The only non standard thing I am aware of about my install is that moodle data is not in the same folder.

Could it have anything to do with the authentication modules I have installed?

 

Manual accounts     Settings
No login     Settings
Email-based self-registration disable  

The rest are greyed out

In reply to Jared Chapman

Re: New contrib: LTI Provider

by John Andrewartha -

Ensure the LTI provider has "allow frame embed" checked in admin >> security >> http security

Also ensure the course you have LTI on has an enrolment method.  I use manual and that seems to be OK. You can have multipal methods on a course.

In reply to John Andrewartha

Re: New contrib: LTI Provider

by Jared Chapman -

Thank you for continuing to think about this.

Both of the options you mentioned are engaged. Here is the enrollment methods I have:

 

Available course enrolment plugins

NameInstances / enrolmentsEnableUp/DownSettingsUninstall
Manual enrolments 1 / 2 Disable  Down Settings Uninstall
Guest access 1 / 0 Disable Up Down Settings Uninstall
Self enrolment 0 / 0 Disable Up Down Settings Uninstall
Cohort sync 0 / 0 Disable Up  Settings Uninstall
Category enrolments 0 / 0 Enable   Settings Uninstall
External database 0 / 0 Enable   Settings Uninstall
Flat file (CSV) 0 / 0 Enable   Settings Uninstall
IMS Enterprise file 0 / 0 Enable   Settings Uninstall
LDAP enrolments 0 / 0 Enable   Settings Uninstall
Course meta link 0 / 0 Enable   Settings Uninstall
MNet remote enrolments 0 / 0 Enable   Settings Uninstall
PayPal 0 / 0 Enable   Settings Uninstall
Please select all required plugins and arrange then in appropriate order.
 
Any other suggestions?
In reply to Jared Chapman

Re: New contrib: LTI Provider

by John Andrewartha -

The last arrow in my quiver. Turn webservices on. Admin >> Advanced features

Then turn on in Admin >> Plugins >> Web Services all the available transport protocols

Do for both provider and consumer and, I will keep my fingers crossed.

I have a sneaking suspecion the loop is caused by the gradebook reporting.

In reply to John Andrewartha

Re: New contrib: LTI Provider

by Jared Chapman -

Thanks for your diligence John, unfortunatally it still is not working. I am working on other hosting, maybe that will solve the problem.

In reply to Jared Chapman

Re: New contrib: LTI Provider

by Robert Blomeyer -

Jared, John and Juan: (Lotta J's!)

I seem to have encountered this same looping condition. It seems to be keeping the LTI consumer in Moodle 2.2.2 from connecting to a Provider on Moodle 2.2.1.

The error message I get is this:

IMAGE: Error - Page isn't redirecting properly

I tried the same Moodle 2.2.2 External Tool on Jared's Label and it worked like a charm. No looping redirects.

Then I tried it on John's Beastie at Dorset and I got the same error  message I'm getting on my own Moodle 2.2.1 ILP provider.

I've tweaked the cookies (different cookie names on both sites), scrutinized the enrollment plug ins, checked "allow frame embed" and all the other remarkably thorough suggestion's make by John. I even downloaded and installed Juan's newest code from GitHub.

So the question becomes what's different on Jared's box (iteach.org/japomani/moodle) that's letting his provider demo connect, nut preventing John's and my provider from doing the same?

Jared: Would you be willing to post your specs (Moodle version on your provider, plugin version, etc.) and configuration screens from your provider John and I can both see what you're doing differently?

I'm terribly curious to find out what's different about Jared's software &/or configuration on his provider that's resulting in  a proper LTI connection.

Bob Blomeyer

Online Teaching Associates

In reply to Robert Blomeyer

Re: New contrib: LTI Provider

by Jared Chapman -

Robert,

Moodle version is latest download of 2.2.2+, LTI provider is latest version from git hub

I am note sure which configuration screens would you like?

In reply to Jared Chapman

Re: New contrib: LTI Provider

by Jared Chapman -

This is discouraging, I rebuilt moodle on a different server, it has the same problem. I suspect that there is an error in the latest version of Moodle or the latest version of LTI Provider that is preventing this from working.

It seems to be version specific.

Here is my test data on my new server:

 

3bc2b9b84327d0e763f619ab7b707828 http://japomani.tk/moodle/local/ltiprovider/tool.php?id=1

Any ideas how to get the developer's attention to look into this. It has such great promise but it is disappointing for it to not be working.

In reply to Jared Chapman

Re: New contrib: LTI Provider

by John Andrewartha -

If both of you are using a hosted service the problem will be in the .htaccess file so lovingly place in the moodle root by the host.  If you can gain shell access "less .htaccess" will allow you to read it.

Talk to your hosting service.

In reply to John Andrewartha

Re: New contrib: LTI Provider

by Jared Chapman -

I don't have one in my moodle folder, at the public_html level I have one, but it is blank

In reply to Jared Chapman

Re: New contrib: LTI Provider

by Robert Blomeyer -

I have full access to my hosted directory using cPanel.

I can edit the mysterious .htaccess file.

So what needs to be in it for the LTI provider to work?

We should all HOPE it's something that simple. smile

BobBl

In reply to Jared Chapman

Re: New contrib: LTI Provider

by Robert Blomeyer -

I also have a .htaccess file in my public_html (web root) folder. It appears to be blank.

With dot files looks can be deceiving.

Dr. Bob

In reply to Jared Chapman

Re: New contrib: LTI Provider

by Robert Blomeyer -

Jared:

My new Moodle 2.2.2 server works perfectly as an LTI  Consumer. Moodle's new External Tool activity works like a charm.

My delimma is getting Juan's "Provider" plugin to work on one of OTA's Moodle 2.2.x  sites.

I've currently got Juan's Provoider Plugin installed on a Moodle 2.2.1 sandbox.

That's the one I can't talk to without the "infinite redirects" error message popping up.

I'm hopeful John will have insights into what my site's .htacess file should say.

Bob Blomeyer

In reply to Jared Chapman

Re: New contrib: LTI Provider

by Robert Blomeyer -

Jared:

Would you shoot & share a screenshot of your LTI provider configuraton for this provider resource:

                                   Jared's LTI Label That Still Works

IMAGE: Jared's Block that works

Whatever you did there is still working.

The one you posted after that on didn't work:

        Jared's new LTI resource that doesn't work now

IMAGE: Jared's LTI resource that doesn't work

This shows how the LTI resource I've attempted to configure on our test server looks. It DOES NOT WORK.

IMAGE: OTA Provider config that doesn't work

I obliterated the secret and URL. I already know it doesn't work. No need for either of you to waste your time on it.

Application of Ocham's Razor would suggest the the simplest solution is the best choice.

I'm betting the solution has something to do with the way the Provider side is configured.

Is there any notable difference in the way you've configured the Provider side for the two resources I've provided Consumer side screenshots for?

Dr. Bob

In reply to Robert Blomeyer

Re: New contrib: LTI Provider

by Robert Blomeyer -

OK.  It took a while. But I've learned a few things about what to do (and not do) to get the LTI Provider and Consumers configured on Moodle.

For starters - here's an IMS Learing Object I've set up as an LTI Tool on on a Moodle 2.2.1. sandbox. It works nicely from the LTI Consumer on a different Moodle 2.2.2 server.

Subject: Copyright and Intellectual Property (Copyright 2012. Online Teaching Associates. All Rights Reserved)

URL - http://www.onlineteachingassociates.net:8080/moodle/local/ltiprovider/tool.php?id=2

Secret - 5506d29bf3134155fa2a916110275cce

I eventually figured out that the reason I couldn't get that server to work previously was that I had it configured with a Site Policy URL.

NOTE: Juan's LTI provider Plugin won't work from a site that's configured with a site Policy Statement on a URL.

IMAGE: Site Policy URL

That's at Admin>Security>Site Policy.

I don't know for a fact. But I suspect that might be what caused  the looping and time-out's that kept me from connecting before.

The other thing I learned is there are lots of "optional settings" for LTI, both on the Consumer and the Provider side. Unless the LTI Provider lets potential consumers know how they've configured LTI tool or course instance, the Consumer may not be able to connect successfully.

The screenshots below illustrate both the Provider configuration and the consumer configuration for the

Image - External Tool Configuration (Consumer)

That's located at: Admin>Plugins>Activity Modules>External Tool

Then there's the activity configuration itself.

IMAGE: LTI Activity prefs.

Finally, here's what the Provider Moodle course's LTI Provider Settings look like from the Provide-side view.

Image: In LTI Lesson on Consumer.

That one's tricky. If you tic "Force course or activity navigation, the remote participant loses their Moodle "breadcrumb trail" can't navigate back into the Moodle course on their originating moodle server.

And finally here's what it looks like installed on the consumer side:

Image: In LTI Lesson on Consumer.

That's the extent of my progress to date.

We're attempting to configure our Moodle 2.2.2 LTI Consumer to make an entire Moodle Course available from our Provider on a Moodle 2.2.1 Sandbox;  with only limited success to date.

Limited because teachers can connect, but students can't. A student user can make the innitial connection and view the remote course. When the initial connection is made, the student's identity is succcessfully added as a manual enrollment on the Provide side.

But when the student in the remote course attempts to disconnect from the provider side, we get this error message and the Provide's Moodle site locks up.

I'm still working on providing courses. If I figure it out I'll post again.

Bob Blomeyer (BobBl)

In reply to Robert Blomeyer

Re: New contrib: LTI Provider

by François Lizotte -
Picture of Particularly helpful Moodlers

Thank you Robert!

I just made it to your test site from 1.9 using basic LTI4Moodle (http://code.google.com/p/basiclti4moodle/). 

I was running into a loop last time I tried to connect both Moodle sites (1.9 to 2.2). It now works, but I couldn't exactly tell why. I just untic a few options just like recommended.

I will just keep my fingers crossed.

François

In reply to Robert Blomeyer

Re: New contrib: LTI Provider

by Alastair Hole -

Hi

Did you find a solution for the conflict with the Site Policy URL? Unfortunately this is a showstopper for us.

In reply to Alastair Hole

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi,

the new version of the plugin (released today) should solve the Site Policy URL problem. This version has multiple changes and new features, I think it will tested but please, do some tests in a different site than production prior to upgrade if it's possible

Regards

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Alastair Hole -

Thanks for your swift reply smile

I'll give it a try on our test server.

Cheers

In reply to Jared Chapman

Re: New contrib: LTI Provider

by John Andrewartha -

It seem the problem with redirects is back. There is an additional issue with ltiprovider and the latest and greatest moodle 2.2.3, I get this error on install

Stack trace:
  • line 569 of /lib/upgradelib.php: downgrade_exception thrown
  • line 271 of /lib/upgradelib.php: call to upgrade_plugins_modules()
  • line 1437 of /lib/upgradelib.php: call to upgrade_plugins()
  • line 269 of /admin/index.php: call to upgrade_noncore()

Any attempt to remove the ltiprovider directory breaks Moodle.

In reply to Jared Chapman

Re: New contrib: LTI Provider

by Mr. Marc -

Is there a way to restrict users from accessing the LTI tool link in a Moodle course either by roles or some other way? we are using moodle 2.2.1.

In reply to Juan Leyva

Problem Deleting LTI Provider User

by Eric Kuncoro -

Can I say this is a very useful and innovative plugin, well done!

What i've noticed when accessing content from other moodle, it will create a new user (i.e: username: ltiproviderd5f635d3f81b0bee62f5296ce3839ad1).

And I can't seem to delete that user from LTI Provider's moodle: "Invalid User" error was produced.

Is this supposed to be the case? any help would be appreciated.

Thanks.

Eric

In reply to Eric Kuncoro

Re: Problem Deleting LTI Provider User

by Eric Kuncoro -

I can see the problem happens because user's mnethostid=0, confirmed=0.

i've added default values in line 82, it seems to be fixed now.

$user->mnethostid=1;
$user->confirmed=1;

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Graham Courtney -

Juan:

Fabulously easy installation. Love it!

 

A question

Because the plugin sets up a No Login authentication it makes it hard to look after someone in an emergency when SSO is not functioning (say consumer portal is down for example). Do you have any ideas about how an admin could provide manual authentication and enrollment but then later revert back to SSO? 

In reply to Graham Courtney

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

The only way is to edit one by one all the users and change the auth method and assign the users a passwords, it can be a huge task if you have a lot of users

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Graham Courtney -

So I tried that but when I change it to say Email Self-registration and put in a password (leaving the username as the assigned ltiprovider email) it then gives me the following error:

 

phpCAS error: phpCAS::client(): type mismatched for parameter $server_version (should be `string') in /home2/simulear/public_html/moodle/auth/cas/auth.php on line 172

 

any thoughts or recommendations of what might be going on. The event that this would happen is in the event that the LTi connection does not work but a user needs to get in to do their work. So a temporary solution is fine.

 

Thanks,

In reply to Juan Leyva

Hitting issues with Blackboard Consumer

by Michael Coyne -

This is my first shot, and indeed my institution's first experience at LTI modules, so this may be a predictable problem, but I'm getting errors as below:

Notice: Undefined index: user_id in /home2/l557375/public_html/moodle/local/ltiprovider/ims-blti/blti.php on line 195

Notice: Undefined index: roles in /home2/l557375/public_html/moodle/local/ltiprovider/tool.php on line 116

Warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id - headers already sent in /home2/l557375/public_html/moodle/lib/moodlelib.php on line 4131

The launch URL is http://legalwriting.ie/moodle/local/ltiprovider/tool.php?id=1. I'm running Moodle 2.3.1, and downloaded LTI provider from Github in the past week.

On clicking continue, you can create a user but this cannot be either confirmed or deleted by me as an administrator.

In reply to Juan Leyva

Fully supported in 2.3?

by Chris Stones -

Is this fully supported in Moodle 2.3? I know it mentions 2.2+ onwards but I wondered just how many people were running it in 2.3 and what sorts of issues they were having.


I mean, is it functional enough in 2.3 to rely on?

In reply to Chris Stones

Re: Fully supported in 2.3?

by Oswaldo Rojas -

I Installed this plugin in 2.3.2+ and get the following errors of deprecated functions, 2 I could fix, but the last one start to happen in Index.php of the user list:

 

Should be fixed to version 2.3.2+

Deprecated: Function split() is deprecated in C:\xampp\htdocs\moodle\local\ltiprovider\ims-blti\OAuth.php on line 753

Deprecated: Function split() is deprecated in C:\xampp\htdocs\moodle\local\ltiprovider\ims-blti\OAuth.php on line 757
textlib_get_instance() is deprecated. Please use static calling textlib::functioname() instead.
line 2939 of \lib\deprecatedlib.php: call to debugging()
line 54 of \local\ltiprovider\tool.php: call to textlib_get_instance()
The tool will be opened in a new Window. Please, check that popups for this site are enabled in your browser. You can use the link displayed bellow for opening the tool.
Open tool in a new window

In order to avoid problems embedding this site, please enable the allowframembedding setting in Admin -> Security -> HTTP security

Should be fixed to version 2.3.2+

Deprecated: Function split() is deprecated in C:\xampp\htdocs\moodle\local\ltiprovider\ims-blti\OAuth.php on line 753

Deprecated: Function split() is deprecated in C:\xampp\htdocs\moodle\local\ltiprovider\ims-blti\OAuth.php on line 757
textlib_get_instance() is deprecated. Please use static calling textlib::functioname() instead.
line 2939 of \lib\deprecatedlib.php: call to debugging()
line 54 of \local\ltiprovider\tool.php: call to textlib_get_instance()
Ir para o conteúdo principal
Esta página será automaticamente redirecionada. Se nada estiver acontecendo, por favor use o link continuar, abaixo.
(Continuar)
Error output, so disabling automatic redirect.

3# Error

Notice: Undefined index: SP in C:\xampp\htdocs\moodle\user\index.php on line 727

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Jim Judges -

What a brilliant development! It seems to work well between two installations of Moodle 2.3.

However I have noticed that if I am Admin or Manager in Moodle A and follow the LTI link I have editing rights (Teacher role?) in the course in Moodle B  where the LTI provider is set.

I have set the LTI course role for instructor & student to both be student.

Does this tool also need an option e.g. match any other role = student/teacher/manager etc to prevent this potential problem?

Great work and potentially very useful.

Thanks again,

Jim smile

In reply to Juan Leyva

Re: New contrib: LTI Provider

by John Andrewartha -

An old issue I have been experiencing with LTI. Both consumer and producer are Moodles, when I use external tools from producer to moodle consumer, the consumer gets kicked after the producer cron job runs. On the consumer Moodle we get a login screen.

We can open the cron to run less frequently, but when the consumer is also using the producers communications tools it bounds on the ridiculous to increase cron time.

 

What am I doing wrong or forgotten to tweek?

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Jared Chapman -

I have been working with the LTI provider quite extensively over the past few days. I have hit some roadblocks that I could really use some help with.

I have two moodle installs, each on their own server

The LTI Producer is on Moodle 2.4

The LTI Consumer is on Moodle 2.3

I have made two quizzes on the Producer and made them Tools

I created two external Tools on the Consumer linked to the quizzes on the Producer

Both appear to work great. I can take both quizzes on the consumer, I can confirm that they have been taken on the Producer

 

Here is the first problem: When User A takes Quiz 1 in the consumer, a new user for User A is created on the Producer (that is what I would expect to happen). When User A takes Quiz 2 in the Consumer, a SECOND new user for User A is created on the Producer. I have done this with three tools now and have THREE user accounts for User A on the Producer.

In the grade book, there are three User As and grades for each user are blank except for the column of the assignment that created that user.

Is this how it is supposed to work? Is there a setting I'm missing?

This problem is compounding because the producer grades are not being reported to the consumer gradebook. When I run cron, these are the results:

Processing customized cron scripts ...Processing cron function for local_ltiprovider...
Running cron for ltiprovider
 Sync tool id 2 course id 5
User grade not send: grade = 
User grade send failed: 
 Sync tool id 3 course id 5
Skipping user 13
Skipping user 14
done. (20 dbqueries, 0.63 seconds)
done.

Any help would be appreciated. Perhaps I am being too ambitious, but I was hoping to use this tool next week.

Here is the info for my tools

Quiz: LTI Quiz Test d42dd4989cad6d7d1a843bb5e80df557 http://livegreat.us/moodle/local/ltiprovider/tool.php?id=2 Delete Edit Hide
Quiz: LTI Quiz Test2 ff061af4318fb8f16946fa57dcc3c644 http://livegreat.us/moodle/local/ltiprovider/tool.php?id=3
In reply to Jared Chapman

Re: New contrib: LTI Provider

by Joshua Johnston -

Hi Jared,

It seems that I am having the exact same issue. I can see the grades in the provider but the cron script does not push them to the consumer. Were you able to solve this issue?

 

FWIW I have web services and all protocols enabled on both systems and they are both running locally with their own domain names, directories, and databases.

In reply to Joshua Johnston

Re: New contrib: LTI Provider

by Jared Chapman -

Joshua,

No, I am still waiting to hear back from anyone. This is a fantastic idea, I got very excited when I got it up and running. It would solve a problem I have where our school LMS (an LTI consumer) has a lot of good features that the students like and are used to, but also allows me to bring in the best of Moodle.

I hope we get this worked out soon

In reply to Jared Chapman

Re: New contrib: LTI Provider

by Erik van Leur -

Did you find the solution? I'm having the same problem.


greetings Erik

In reply to Juan Leyva

Re: New contrib: LTI Provider

by François Lizotte -
Picture of Particularly helpful Moodlers

Juan,

I ran into a rather scary problem today. I set up a course in Moodle (2.4) as LTI Provider and invited different Moodle admins to connect to it from their Moodle sites. One person connected under a wrong identity (excuse my English).

Let's call them Alice and Beth. They both have a Moodle site (version 2.2) with admin role hosted on the same server. Alice roamed to my Moodle course through external tool activity (LTI) at 16:08 and didn't logout according to Moodle's log. Later Beth tried to access the same way, but got authentified under Alice's name. Wrong identity! In the log, I see a second login (16:37) under Alice's name. No Beth user created.

Both users come from different IP addresses. How can one connect under someone else's identity?

Of course, they both connect with the same secret key.

Any idea?

 

 

 

In reply to François Lizotte

Re: New contrib: LTI Provider

by François Lizotte -
Picture of Particularly helpful Moodlers

update

We had a similar case yesterday with another user who was connected with MY identity on the provider Moodle course.

And Beth tried again today and was still under Alice's identity.

So it is not just a one time issue.

My Moodle log showing a login when I was asleep last night. wink

Log

 

In reply to François Lizotte

Re: New contrib: LTI Provider

by Charles Severance -

Are these coming from one consumer system or from more than one consumer system?

In reply to Charles Severance

Re: New contrib: LTI Provider

by François Lizotte -
Picture of Particularly helpful Moodlers

Hi Charles,

They connect from diffrent consumer Moodle sites and they all have the same key.

I'm glad it's just a big demo of LTI's potential.

François

 

In reply to François Lizotte

Re: New contrib: LTI Provider

by Charles Severance -

Ah - Then this is likely a bug that I found and fixed in my version of the code.  

The problem is that they need different keys and code in the provider needs to differentiate the same user_id from different systems.  If you check the two accounts you will see that they have the same user_id value (i.e. primary key in the Moodle system).

I will try to get the patches to Juan via github and come back here to report.

In reply to François Lizotte

Re: New contrib: LTI Provider

by Charles Severance -

OK - I just checked in my changed and sent a pull request to Juan.  Here is my fixed code:

https://github.com/csev/moodle-local_ltiprovider

A key is that two Moodle consumers talking to one Moodle provider must use different keys - but can use the same secret.   The key is what "name spaces" the user accounts.

In reply to Charles Severance

Re: New contrib: LTI Provider

by François Lizotte -
Picture of Particularly helpful Moodlers

Wow, I really appreciate. I'd like to share more information. My technical skills are limited. I'm just a power user.

From my provider I got a URL and a shared secret. LTI settings

Then when I set my consumer, I logically filled these two fields. But it was not working.

LTI settings 2

 

My provider doesn't generate a key. So I tried the shared secret as a key. And I got it to work!

Lti settibngs 3

Am i just causing a mess? Am I missing something?

 

Another important information: Pierre was able to connect under my name and published in a forum under my name. No account was generated for him in my provider Moodle. So I cannot see his ID.

 

François

 

In reply to François Lizotte

Re: New contrib: LTI Provider

by Charles Severance -

Setting the key and secret to the same thing works because the provider ignores the key.  What I have done (with my patched version above) when I put the same Moodle class into two Learning management systems is to use a *different* key for each one - you can also add a new LTI endpoint so you don't even share the secret between them.  Then the modified code adds the key to the user_id to make a gunique account name - and so we avoid logins where folks seem to stumble into the wrong identity.

My code in the pull request to Juan has a compatibility mode so it keeps working with existing accounts that already have been created.

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Sandareka Wickramanayake -

Hi , 

Simply great work..! It works fine for me. 

My need is to access stuff in the provider, say a course, from consumer even when there is no internet connection. We can backup a course from the provider and restore it in the consuer. But this has to be done automatically. 

Is there a way to accomplish this task? 

Your help is highly appreciated. 

Thank you in advance..! 

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Michael O'Brien -

Is there a version recommended for Moodle 2.4.1 ?

I tried the version listed in plugins but got errors on install about versions.

Should I use the Git version instead?

In reply to Juan Leyva

Re: New contrib: LTI Provider

by François Lizotte -
Picture of Particularly helpful Moodlers

Any issue with Internet Explorer 9 runninf on win 7?

 I have a Moodle linked to another with LTI. It works fine with FF and Chrome but doesn't automatically login with IE.

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Brendan Rollinson -

Juan,

I have been using the LTI Provider tool and appreciate this contribution.

I've noticed that, when sharing at the course level and accessing several courses as a student, multiple accounts are created (one per course).

I was wondering if there is a way to group these under the same account. I do realize that conceptually, this system is keeping the different shared resources distinct from one another, but having one user would make certain information more meaningful.

Thanks!

In reply to Juan Leyva

LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)

by Roel Cantada -

Hi all,

User grade send failed in the following lti provider installation:

ltiprovider version from git: 2011121706

moodle version: version  = 2012120303.03;  release  = 2.4.3+ (Build: 20130328)

Tested on a hosted moodle and local install. Same ltiprovider version worked with the following moodle version:

version  = 2012120300.00;   release  = 2.4 (Build: 20121203);

The lti consumer is moodle 2.2 installation for testing with lti provider 2.4 (success) and 2.43 (failed). Did something got broken in 2.4.3+?

The problem appears to be grademax being declared as undefined property in 2.4.3+.

TIA for any help.

Roel

 

In reply to Roel Cantada

Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)

by Roel Cantada -

I do not know if this is the correct solution to the undefined property error in line 208 of lib.php, but the error notice went away:

                                } else {
                                    $grade = reset($grades->items[0]->grades);
//appears to have suppressed error
                                    $grademax = floatval($grades->items[0]->grademax);
//                                    $grademax = floatval($grade->item->grademax);
                                    $grade = $grade->grade;
                                }

Unfortunately although my local lti provider is successfully sending grades, the same installation in a vps is failing. Need to dig further.

Roel

In reply to Roel Cantada

Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)

by Roel Cantada -

I haven't solved this yet, but it appears to be a problem with the way nginx-php-fpm had been set-up. It may be something with the location directive in nginx as the moodle is in a folder.

The ones that I had reported the grades to work are in apache.

In reply to Roel Cantada

Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)

by John Andrewartha -

Make sure the Moodle LTI provider has the allow embedding checked.  Admin/Security/HTTP/

In reply to Roel Cantada

Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)

by Angelo Perera -

We are experiencing the same 'User grade send failed' issue.

We are using a slightly an older version of Moodle--2.4.1+ (Build: 20130208) on both LTI provider and consumer sites, which are both installed on a the same hosted server.

The LTI Provider plugin version is the same as Roel's.

  • On the provider Moodle site, we have a course with multiple Activities.
  • Each Activity is represented by a single SCORM, which returns a grade.
  • The "Tool to be provided" is set to "Course" in the LTI Provider Plug-in settings.
  • Grades appear fine for students who are logged directly into the provider site.
  • On the consumer site, we have created an External Tool Activity, which is configured to connect with the course on the provider.
  • 'Web services' and 'Allow Frame Embedding' are enabled on both sites.
  • We know cron jobs for both sites are running fine.
  • Grades do NOT appear for students who are enrolled in the same course via the provider site.

Can someone please help us determine the problem? Please let me know if you need our SCORM packages to troubleshoot this issue.

Thanks in advance!

Angelo

In reply to Angelo Perera

Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers
About the grades sending back: For testing what is happening:
- In a course with grades, modify manually in the Grade Book any grade in any user in any activity. This is necessary because the system does not send back grades if they have not changed since the las synchronization
- Then, execute manually in a browser the admin/cron.php script, notice that grades are sync hour by hour, so you may need modify this line $synctime = 60*60; to $synctime = 1; (the file to modify is local/ltiprovider/lib.php)
- Copy all the information displayed in the browser (once the admin/cron.php finishes) related to LTI provider (starting with ... Running cron for ltiprovider)
- Post a new message in this thread with the results of the cron job
In reply to Juan Leyva

Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)

by Brendan Lalor -

Juan, I'm posting this cron output to help document what happens to prevent sending grades when running PHP in FCGI mode. As you said, "it's a problem in a Moodle consumer side (external tool) in the function getallheaders."

Processing customized cron scripts ...Processing cron function for local_ltiprovider...
Running cron for ltiprovider
 Starting sync tool id 1 course id 2
 Completed sync tool id 1 course id 2 users=0 sent=0 errors=0
 Starting sync tool id 2 course id 3
 User grade send failed: <br />
<b>Fatal error</b>:  Call to undefined function getallheaders() in <b>/nnnnnnnn/moodle.thereitis.org/mod/lti/service.php</b> on line <b>36</b><br />

 User grade send failed: <br />
<b>Fatal error</b>:  Call to undefined function getallheaders() in <b>/nnnnnnnn/moodle.thereitis.org/mod/lti/service.php</b> on line <b>36</b><br />

 User grade send failed: <br />
<b>Fatal error</b>:  Call to undefined function getallheaders() in <b>/nnnnnnnn/moodle.thereitis.org/mod/lti/service.php</b> on line <b>36</b><br />

 Completed sync tool id 2 course id 3 users=9 sent=0 errors=3
 Starting sync tool id 3 course id 3
 Completed sync tool id 3 course id 3 users=1 sent=0 errors=0
done. (42 dbqueries, 0.72 seconds)

I saw at #MDL-40005 that you were able to create movement toward resolution. Thanks!

~Brendan

note: my Moodle & plugin version stats are the ones given in my post below.

In reply to Brendan Lalor

Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)

by Brendan Lalor -

Update: I switched from running PHP 5.3 in FastCGI mode to 5.4.x CGI (on DreamHost, if that matters). The errors in the cron output are the same.

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

If anyone is experiencing problem with the users to be automatically un-logged, sessions problems etc... you can apply this patch:

https://github.com/jleyva/moodle-local_ltiprovider/pull/14/files

It replaces the "nologin" auth method for a standar "manual" one

I'm not going to integrate this feature because it's not backward compatible

We are trying to get some funding (crowdfunding) for make improvements to the plugin, until this happens I can't expend so much time

Sorry

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Paul Nicholls -

Hi Juan,

Is the crowdfunding campaign running at the moment?  If so, where can we find it?  I'm sure that some of the people who have been participating in this thread will be willing to contribute - but we can't if we don't know where/how!

-Paul

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Seems that enabling this setting in the php.ini, fix the problem in some cases:

allow_url_fopen = On

Regards

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Brendan Lalor -
Juan, until you pointed out I need the php setting "allow_url_fopen = On" I had the following cron error (using an instance of Moodle 2.5 as the consumer), which I include here to help document the problem:

Processing customized cron scripts ...Processing cron function for local_ltiprovider... Running cron for ltiprovider Starting sync tool id 1 course id 2 Completed sync tool id 1 course id 2 users=0 sent=0 errors=0 Starting sync tool id 2 course id 3 Problem with http://moodle.thereitis.org/mod/lti/service.php, fopen(http://moodle.thereitis.org/mod/lti/service.php): failed to open stream: no suitable wrapper could be found Problem with http://moodle.thereitis.org/mod/lti/service.php, fopen(http://moodle.thereitis.org/mod/lti/service.php): failed to open stream: no suitable wrapper could be found Problem with http://moodle.thereitis.org/mod/lti/service.php, fopen(http://moodle.thereitis.org/mod/lti/service.php): failed to open stream: no suitable wrapper could be found Problem with http://test.lts.ie/25/moodle/mod/lti/service.php, fopen(http://test.lts.ie/25/moodle/mod/lti/service.php): failed to open stream: no suitable wrapper could be found Completed sync tool id 2 course id 3 users=9 sent=0 errors=4 Starting sync tool id 3 course id 3 Completed sync tool id 3 course id 3 users=1 sent=0 errors=0 done. (42 dbqueries, 0.15 seconds)

Thanks for helping navigate past this error.

~Brendan

note: my Moodle & plugin version stats are the ones given in my post below.

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Brendan Lalor -

Juan & community:

Thanks for the revolutionary plugin!

My issue: The Provider stores quiz grades that I cannot manage to push to the Consumer (Moodle 2.5+ build: 20130627). 

Some stats: I'm using lti_provider 2.3 (version = 2011121707) in my course Provider Moodle (Moodle 2.4.4+ build: 20130627). I've got web services activated and cron running on both Moodles.

Am I having these grade woes because I am not using a Consumer Key? I am not sure WHETHER I should be offering a Consumer Key from my Provider, and if so, I am not sure HOW to do this (which I mention because of the docs that say "The 'tool provider'... will issue you with this key. If you are merely linking to a tool with no secure access or gradebook sharing then you won't need a consumer key.")

I do want to push grades back to the Consumer. H-h-h-how???

(By the way, I have put some random numbers in the Consumer Key field of the "External Tool" activity module on my Consumer Moodle. But that's just because when I leave it blank, I get the notice on an otherwise white screen: "Missing oauth_consumer_key in request". Not sure why that's necessarily an error. But I mention it on the chance that it matters.)

Thanks very much for your help. Very much,

~Brendan

In reply to Brendan Lalor

Re: New contrib: LTI Provider

by Brendan Lalor -

I was receiving the "Missing oauth_consumer_key in request" error, and did a web search. Luckily I found the solution in this thread: 

(By the way, I have put some random numbers in the Consumer Key field of the "External Tool" activity module on my Consumer Moodle. But that's just because when I leave it blank, I get the notice on an otherwise white screen: "Missing oauth_consumer_key in request". Not sure why that's necessarily an error. But I mention it on the chance that it matters.)

... and it was posted by me, a little over a year ago! 


In reply to Brendan Lalor

Re: New contrib: LTI Provider

by David Price -

Hi

Can I ask how you fixed this.  I am setting up 2 moodle sites, I've got the LTI provider recording quiz results from the child site but I can't get the grades sent to the child site for access by the student there? 

I have no consumer key set which I assume is the problem but how do I set one up on the provider site.  I have full access to both sites via ftp etc. 

Thanks for the help in advance

In reply to David Price

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

You don't need to setup a key in the provider site, the key is like an unique identifier send by the consumer.

Most of the time if you don't receive the grades in the consumer side is because a communication problem between servers (in some cases is the same server). Grades are sent using an internal HTTP requests via fopen so it's hard to debug what is happening

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Francis Sun -

Hi Juan Leyva,

Thank you for developing this plugin. I am new to Moodle and php, and I was experiencing the problem where the grades are not sent back to consumer.

Here is something that I found when looking into the problem. Below is the cron output produced on provider side:

Processing customized cron scripts ...Processing cron function for local_ltiprovider...
... started 18:46:18. Current memory use 46MB.
Running cron for ltiprovider
DEBUGGING: Tools are located as local_ltiprovider. Sendgrades enabled.
Starting sync tool id 1 course id 2
DEBUGGING: Users are found as local_ltiprovider_user.
DEBUGGING: Tell me who the user is 1
DEBUGGING: Tell me what the source-id is {"data":{"instanceid":"3","userid":"27","launchid":167942083},"hash":"50ac51638a9c6ece834199a8520a88a9f73c1a33d8bd567824cd7c4b077daaa3"}
DEBUGGING: Tell me what the service-url is http://www.nectarlearn.com/lmsbackup/mod/lti/service.php
DEBUGGING: Tell me what the cusumer-key is c70d26795dfd91d3866ebc278b0a5e1b
DEBUGGING: Tell me what the consumer-secret is c70d26795dfd91d3866ebc278b0a5e1b
DEBUGGING: The grade (COURSE) of user 1 is 100.00000.
DEBUGGING IN OAuthBody: context is Resource id #849
DEBUGGING IN OAuthBody: endpoint http://www.nectarlearn.com/lmsbackup/mod/lti/service.php
IN SE User grade send failed: RVICE!!!!!!!!

 Looks like the user information and grade are found and collected on the provider side. When it hits the line in lib.php:

Where it is directed to OAuthBody.php:

The $endpoint here is /mod/lti/service.php on the consumer side. From the cron log, it seems this file was not thoroughly executed. My message "IN SERVICE!!!" (in service.php on the consumer side) was cut into two pieces by the failing message:

IN SE User grade send failed: RVICE!!!!!!!! 

I think this means on the provider side, the process has already proceeded to the next stage before $reponse is filled with any  actual content. Could this be the web service issue?

I might be going in a wrong direction. Please correct me if that is the case.

 

Thanks,

Francis

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Valery Fremaux -
Picture of Plugin developers

Hi Juan,

thanks for all this work !

i'm making local follow ups to solve the following requirements : 

  • Handle automated groups/groupement generation based on LTI customer identification to ensure insulation of users from several customer entities
  • Add a complete web service layer to create/update/delete LTI courses or activities "on demand"

 i will try to reintegrate all your upgoing changes to keep implementation as compatible as possible....

Cheers

Valery 

In reply to Valery Fremaux

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi,

the current version in the GIT repository can handle the auto creation of LTI courses "on demand"

The first point seems also very interesting

Please, fork the current version in GIT in order to work so is the one with the last features

Thanks for your contributions!

Regards

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Brendan Lalor -

At the end of a quiz, my students are getting an error while submitting it, and the stack trace starts near the ltiprovider plugin. Is it related? (Image attached): 

Coding error detected, it must be fixed by a programmer: Cannot require a CSS file after <head> has been printed.
Debug info: https://philosophy.thereitis.org/open/local/ltiprovider/styles.php?id=1
Error code: codingerror
Stack trace:

line 877 of /lib/outputrequirementslib.php: coding_exception thrown
line 111 of /local/ltiprovider/lib.php: call to page_requirements_manager->css()
line 1281 of /lib/navigationlib.php: call to local_ltiprovider_extends_navigation()
line 3000 of /lib/navigationlib.php: call to global_navigation->initialise()
line 3048 of /lib/navigationlib.php: call to navbar->has_items()
line 58 of /theme/bootstrapbase/renderers/core_renderer.php: call to navbar->get_items()
line 118 of /theme/clean/layout/columns3.php: call to theme_bootstrapbase_core_renderer->navbar()
line 866 of /lib/outputrenderers.php: call to include()
line 796 of /lib/outputrenderers.php: call to core_renderer->render_page_layout()
line ? of unknownfile: call to core_renderer->header()
line 240 of /lib/outputrenderers.php: call to call_user_func_array()
line 565 of /mod/quiz/renderer.php: call to plugin_renderer_base->__call()
line 565 of /mod/quiz/renderer.php: call to mod_quiz_renderer->header()
line 99 of /mod/quiz/summary.php: call to mod_quiz_renderer->summary_page()

line 111 of /local/ltiprovider/lib.php: call to page_requirements_manager->css() starts with '$PAGE->'

// Custom CSS
if (isset($SESSION->ltiprovider)) {
$PAGE->requires->css(new moodle_url('/local/ltiprovider/styles.php', array('id' => $SESSION->ltiprovider->id)));
}

Ideas? 

Thanks for any help, as I'd really like to get the quizzing back in operation!

~Brendan 

In reply to Brendan Lalor

Re: New contrib: LTI Provider

by Tim Hunt -
Picture of Core developers Picture of Documentation writers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers

That code in /local/ltiprovider/lib.php seems like a really bad idea in so many ways.

PHP script that outputs the CSS - well, because of the way LTI works I can see that might be necessary, but it is certainly not something you would want to do.

Adding CSS to the page in a place like local_ltiprovider_extends_navigation that is just meant to be about defining the navigation structure, there must be a better way?

...

In reply to Tim Hunt

Re: New contrib: LTI Provider

by Brendan Lalor -

By the way, when I

/* comment out line 111 */

the error vanishes. And there is nothing reported even in Developer "Debug Messages" mode. Thanks, Tim. 

In reply to Brendan Lalor

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi,

this is a bug I noticed a few days ago, affecting only some themes.

Some Moodle themes sends HTML before the whole navigation object is loaded (navigation is loaded prior to $OUTPUT->header()) so I know it's not a "clean hack" but for local themes is the only way to load CSS dinamically

This is the reason I suggested additional hooks for local plugins (including handling renderers)

In any case, I'm  going to include a patch in the code for adding only CSS if the page heading was not send

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Brendan Lalor -

Thank you: that's good to hear! Updates won't cause breakdowns. 

I hear what you're saying about adding flexibility elsewhere in the software to accommodate what you're doing here. The functionality of this plugin seems so important to me that if that's "the right way" to make an LTI Provider, then it's a no-brainer: do it! Bring on the additional hooks. 

In reply to Brendan Lalor

Header redirect error

by mike thiem -

hi im getting the same error. "Cant redirect while printing page header"

code. Any solutions ?

  • line 754 of /lib/outputrenderers.php: coding_exception thrown
  • line 2592 of /lib/weblib.php: call to core_renderer->redirect_message()
  • line 96 of /local/ltiprovider/lib.php: call to redirect()
  • line 1300 of /lib/navigationlib.php: call to local_ltiprovider_extends_navigation()
  • line 222 of /blocks/navigation/block_navigation.php: call to global_navigation->initialise()
  • line 178 of /blocks/navigation/block_navigation.php: call to block_navigation->get_navigation()
  • line 294 of /blocks/moodleblock.class.php: call to block_navigation->get_content()
  • line 236 of /blocks/moodleblock.class.php: call to block_base->formatted_contents()
  • line 993 of /lib/blocklib.php: call to block_base->get_content_for_output()
  • line 1045 of /lib/blocklib.php: call to block_manager->create_block_contents()
  • line 361 of /lib/outputrenderers.php: call to block_manager->ensure_content_created()
  • line 45 of /theme/clean/layout/columns3.php: call to core_renderer->standard_head_html()
  • line 877 of /lib/outputrenderers.php: call to include()
  • line 807 of /lib/outputrenderers.php: call to core_renderer->render_page_layout()
  • line 101 of /index.php: call to core_renderer->header()
In reply to Juan Leyva

Re: New contrib: LTI Provider

by Valery Fremaux -
Picture of Plugin developers

Hi Juan !

am working around your LT!I Provider for some projects where such "object providing" could be a great architecture. 

This is a feature suggestion (i did implement it as a proto)

Our need was to integrate some group/gouping generation function that is : when students come from a remote LTI customer, we need ensuring insulation of populations comming from distinct institutions. 

The enhancement uses the customer key to create (and automatically bind incoming user to) groups in the LTI published course, so we can ensure with a separated groups policy that these distinct incommers will not meet.

happy to share if valuable...

Valery. 

In reply to Valery Fremaux

Re: New contrib: LTI Provider

by Daniel Dubbeldam -

Hi Valery,


Can you provide info on how you did this? This is exactly what I need as well... Hopefully Juan can implement this to the functionality of the LTI-provider, but in the mean time, if you can help me with your solution, that would be wonderfull.


The providing Moodle is a 2.6 version btw.......


thank you in advance!

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Sam Moulem -

For the time being we changed theme, at course level. The theme afterburner doesn't seem to trigger the 'CSS error'.

Commenting out the navbar() function of our theme (in lib.php) also gets rid of the error. However it brings some rendering issues.


We'll watch this space for further update.

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Martin Williams -

Hi Juan,

I'm having a little trouble with your plugin. I'm trying to use it to provide SCORM packages to Canvas. When I try add the external tool in Canvas, it displays the error message, "Invalid xml syntax." Has anyone else every had this problem? If so, how do you get around it?

Thanks,
Martin Williams

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Stuart Blake -

Hey all, I'm really hoping someone can help me out. I'm having a problem with using the LTI system to get courses available from one Moodle course to another.


Currently, I have it all installed and at face value it all works. The problem comes when a student clicks on an external tool link to access the remote course, and it will load up the page but then just hang. It simply displays a blank screen (with the main site's banner), but the frame is empty. Eventually, it will load up a page from the remote site at the login page, with the words "Session has timed out" displayed


Back at the remote site, it does actually log me out of any account I'm currently using. Also, the logs show that a user is logging in (via "web") but it doesn't mention that they log out. So I know that authentication is working, because of that log, and also new members are made when remotely using a different user.

Pretty much the only setting I've changed is so that the default auth method is "Manual"


I'm not sure if people can try it out, but the URL is: http://www.tabornsw.edu.au/moodle/local/ltiprovider/tool.php?id=2


The secret key thing is: 50138d54acb4706e12275c134ad104ba


Can anyone help? Moodle is saying they are logging in, but then it just hangs and the session times out?! I've spent hours on this trying to fix it sad

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Thom Rawson -
Juan,

Thanks for an excellent plugin. I'm using it to perform some research on remote access to activities between Moodle sites. I'm coming across a problem which might be how I have things setup or not. Perhaps someone could guide me here.

Two Moodle sites running 2.6.

Site T - The provider of a Database activity using LTI Provider plugin.

Site Q - The site which "consumes" the activity using standard Moodle External Tool.

The issue: Students access the Database from Site Q. They begin entering their data. It takes some time. When they finally click "save" to save their entry, the student is then sent to Site T's login page and their entry is discarded.

I've timed it using a timer. Entries can be saved within 6 minutes. After 6 minutes, entries cannot be saved.

My question is: where should I look to continue discovering the reason for this timeout? I've checked PHP.ini and looked at USER TTL which was set for 6 minutes. I added more time and restarted apache, but no joy. Still 6 minutes timeout.

Any thoughts? Any help is greatly appreciated.

In reply to Thom Rawson

Re: New contrib: LTI Provider

by Thom Rawson -
Ok, an update:

In the LTI Provider settings if you change the authentication method from "nologin" to "manual" then the timeout issues seem to go away. I don't quite understand why nologin has some kind of timeout associated with it, but I'll guess there is a good reason. If anyone understands that aspect a little more, please educate me via link, etc.

There is one other thing you need to do before the fix is completed, however. If you already had users access the External Tool (Provided Moodle LTI object being consumed) with your default authentication method being "nologin", those LTI users will continue to have that method even when they re-access the tool. In other words, they will still experience the timeout that I mentioned above.

Luckily, there are a couple ways to work around this issue that I've found.

1. Delete all the LTI users created with "nologin" authentication types. Moodle makes this easy using filters and bulk user actions.

2. Manually edit each LTI created user and change their authentication type from "nologin" to "manual" - this is what I did since I only had a dozen or so students working on that particular activity. For my research I'm able to have access to both systems in this situation, but it could be troublesome for people accessing LTI objects without that kind of access.

One other point: I'm not sure if having "manual" as the authentication type meets security requirements for Moodle sites everywhere. Having that manual account in your Moodle could be a potential issue if the user happened to try and log in directly to the remote Moodle site which was providing the LTI object. This might be impossible because the user id is not published to the remote user and has something like "ltiuser-blah-blah-blah" as the id. However, if someone knows the way Moodle LTI Provider makes user accounts and passwords, it might be an issue.
In reply to Juan Leyva

Re: New contrib: LTI Provider

by Jared Chapman -

When User A takes Quiz 1 in the consumer, a new user for User A is created on the Producer (that is what I would expect to happen). When User A takes Quiz 2 in the Consumer, a SECOND new user for User A is created on the Producer. I have done this with three tools now and have THREE user accounts for User A on the Producer. In the grade book, there are three User As . Is that what is supposed to happen?


Also, does grade pass back work with Workshop? Workshop creates two columns in the gradebook for one assignment.

In reply to Jared Chapman

Re: New contrib: LTI Provider

by Jared Chapman -

It looks like grade pass back works for workshop, but only  sends one column of data back.

How can I get it to either send two columns back or merge the data into one column?



In reply to Juan Leyva

Re: New contrib: LTI Provider

by Toan Tran -

Hello,

I just want to write to say that this plugin has been extremely valuable to our organization.  Thank you very much for your contribution. 

Is there a planned release that is compatible with Moodle 2.7?


Thanks

In reply to Juan Leyva

Forum users not able to reply

by Clinton Branscombe -

I have set up a class in another LMS (not Moodle) with a link to a Moodle site running version 2.7. 

When a user goes into from the LMS into a Moodle forum they can make a new post without any problem.  However, if a user wants to reply, they are able to compose it, but when they try to post, a message pops up that says that a guest cannot post and they are presented with a regular Moodle log in screen.

I was able to duplicate this on my own, even though I am the course teacher.  Then I went directly to the Moodle site and logged in.  I then logged out of Moodle and then accessed Moodle again from the external link in the other LMS.  This time I was able to post to the forum without any problems.

Any ideas about why this happened?  Should I simply say to the student to try again?

Confused.

CAB

In reply to Clinton Branscombe

Re: Forum users not able to reply

by Justin Hunt -
Picture of Particularly helpful Moodlers Picture of Plugin developers

Clinton, check Thom Rawson's reply in this thread on the 14th July. I think it will solve the problem.


In reply to Juan Leyva

Re: New contrib: LTI Provider

by Paul Raper -

Hi,

I am a first Level Support admin for a University Moodle platform which has very limited plugins, thus restricting the functionality of the System. Unfortunately I am not able to alter any of the Network Settings, however, I have my own Moodle platform which is bristling with plugins, and so the idea to utilise the LTI plugin came to mind. Unfortunately it didn't work and so thus I posted a question which Mary very kindly answered and suggested the LTI Provider plugin.

LTI Provider

Sadly this doesn't seem to work either. Each time I try to make the link it asks me to Login to the host Moodle which I was hoping to avoid.

Can anyone suggest any thoughts on where I may be going wrong please.

LTI Page 1

Page 1.

LTI Page 2

Page 2


In reply to Juan Leyva

Re: New contrib: LTI Provider

by Elizabeth Dalton -

We are trying to use this to allow users in a set of courses (let's call them A1, A2, A3, etc.) to access some common resources in a separate course (let's call it B) on the same Moodle server. The links I have set up allow the user to go from course A1, A2, etc. to course B, but then the user is logged out of their account that has permissions in course A1, because now they are the pseudo-user in course B. The new user account displays the same name in the header, so it took me a while to realize that this is what's going on.

Is there a way to re-use the same user account in the Provider course through LTI? Or do we have to host the resources on a separate Moodle instance? We would rather be able to keep all the user actions under the same user.


In reply to Juan Leyva

Re: New contrib: LTI Provider

by Jared Chapman -

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.

In reply to Jared Chapman

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hello there,

first of all, sorry for not being able to offer a good/continuos support of the plugin, as you may know I did that plugin just for fun, thinking that it will benefit the community, but maintaining this types of plugin takes time and, unfortunately, I don't have two much free/spare time.

Regarding Jared comments:

- Do not worry for your rant, I understand your frustration

- Different students account: Usernames are created in the way suggested by the LTI guys, using a combination of consumer_key + user_id. Maybe you should use the same consumer key in all your activities. The consumer_key is like a prefix for indicating a consumer site.

- Time zone: The default time zone for students is the local time configured in the server. I don't know exactly what problem are you having. This can be improved in the LTI provider side but adding new configuration settings.

Grade passback: Notice that this may fails if the remote server has downtimes, connection problems, etc... The grade passback is a direct server communication (the server where moodle is installed and the remote server) an invalid configuration, networks problems, etc.. may affect

- Workshop grades: The current LTI specification doesn't support multiple grades

Some final thoughts. Moodle is a very complex application with multiple features, configurations, settings, etc... Creating a LTI Provider tool is very complex since you need to add multiple configuration settings for handling all possible use cases. I tried my best and I've been looking for funding to improve it and fixing bugs.

I'm thinking in starting multiple crowdfunding campaigns in order to fund all the plugins I made (configurable reports, jmail, lti provider...), someone suggest me to offer anual subscription for covering plugins upgrade and maintenance.


BTW, I forgot to mention that you can always contract professional support to Moodle partners

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Jared Chapman -

Thanks for not taking offence Juan,

Is the consumer key and the shared secret the same thing?

In reply to Jared Chapman

Re: New contrib: LTI Provider

by Jared Chapman -

Also, is there a way to restart the grade passback so I don't have to copy it by hand?

In reply to Jared Chapman

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers
Sorry for my late response, I didn't receive any notification of this message.


The consumer key is the unique id of your remote site, note that different sites can share the same resources, the consumer key is like a "prefix"

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Jared Chapman -

Thank you Juan!

Changing the consumer key appears to fix the multiple users issue.  I let you know about the other things.

In reply to Juan Leyva

Re: New contrib: LTI Provider

by alejandro martinez garcia -
hello
First, thank you for this useful tool.

I'm starting to develop a mobile application that needs LTI. I have already installed LTI. This works perfectly, and I managed to share files on a moodle to another.

To further develop the application, I need to:
        * Once installed my webService, it receives from Moodle, the request of use.
        * then Moodle, sends the token.
        ** I need my webService print this token into a html file. ??

Can you tell me where I can start, or that I need?

thank you very much
In reply to alejandro martinez garcia

Re: New contrib: LTI Provider

by Raul Santos -

Great!

I was looking exactly the same. I am inspiring on this website (spanish):
https://moodle.org/mod/forum/discuss.php?d=118669#p520456


I had thought:
        1) Go to the block administration, security, policies, and check the box to force authentication.
        2) Then, using PHP, I want to create a FORM, do this:


<form action="tu_moodle/login/index.php" method="post" id="login">

<input class="input" type="text" name="username" id="username" value="" />

<input class="input" type="password" name="password" id="password" value="" />

</form>

<input name="submit" type="submit"  value="Entrar" />


         Can anyone tell me if I'm doing well?
        
My question is: Is this method is valid for LTI? Or is it for something more generic?
Thank you very much, I appreciate your answers because I totally lost.

In reply to Raul Santos

Re: New contrib: LTI Provider

by alejandro martinez garcia -

hello Raul

I'm also thinking the same method as you.

On the internet, I see that talk about OAUTH and maybe your method is too generic.
Have you checked if it works?

In reply to alejandro martinez garcia

Re: New contrib: LTI Provider

by alejandro martinez garcia -



Hi
I am experimenting with my own LTI provider that will communicate with Moodle.
I'm trying to send a GRADE to Moodle.
Moodle sends to my provider, the following information:

 

lis_result_sourcedid={"data":{"instanceid":"12","userid":"2","launchid":239445611},"hash":"9b483fd22cfbfb2bb5d3de957258736c543900470eb54acab15aeda2c0263755"}



Using POX and XML, what information should I include as .$source.?

<replaceResultRequest>

                                   <resultRecord>

                                              

                                                   <sourcedGUID>

                                                   <sourcedId>'.$source.'</sourcedId>

                                                   </sourcedGUID>

                                               <result>

                                                           <resultScore>

                                                                       <language>en-us</language>

                                                                       <textString>'.$grade.'</textString>

                                                           </resultScore>

                                               </result>

                                   </resultRecord>

                        </replaceResultRequest>




  • Should I send full  "lis_result_sourcedid"?  I.e.: {.............................}
  • Just the "data"? I.e._ {"data":{...}.........}
  • Just the "instanceid"?
  • Just the "launchid"?
  • Just the "hash"?


Thanks

In reply to alejandro martinez garcia

Re: New contrib: LTI Provider

by alejandro martinez garcia -
I've already solved.
It was a problem to pass the lis_result_sourceid by POST.
This contains invalid characters in a URL.
I've fixed it using urlencode() and urldecode().
In reply to alejandro martinez garcia

Re: New contrib: LTI Provider

by Bharath Rengan -

Hi Garcia,

I was just following the thread on lis_result_source_id issue, I am also facing the same problem where in lis_result_source_id comes with 3 different values as in your earlier post. What is the fix for the problem?  Can you help here.?

Thanks

BK

In reply to Juan Leyva

Re: New contrib: LTI Provider - zero score not sent

by Sam Moulem -

Hi,

That's a brilliant plugin and we are testing its features between two Moodle installations ( 2.8.5).

However it seems when candidates scores 0, getting all questions wrong, the grade/score is not sent back by the LTI provider.

It seems the pluging send only grades greater than zero

 in ltiprovider/lib.php (line 267 in our version):

if ($grade > 0 and $grade <= $grademax) {
                                $float_grade = $grade / $grademax;
                                $body = local_ltiprovider_create_service_body($user->sourceid, $float_grade);


We have candidates that get all questions wrong and therefore score zero; which is a valid grade.

Am I correct in my assumption?

Will it be addressed?

Thanks again,

Sam

In reply to Sam Moulem

Re: New contrib: LTI Provider - zero score not sent

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi,

yes, you are right. I fixed it so now zero grades are send back

Changes are in github, I will publish a new version of the LTI provider plugin soon

Regards

In reply to Juan Leyva

Re: New contrib: LTI Provider - zero score not sent

by Sam Moulem -

Thanks, that's fantastic!

I'll have a look smile.


In reply to Juan Leyva

Moodle 2.9 compatible?

by Rob Emenecker -

Hi Juan,

Is your LTI Provider plugin compatible with Moodle 2.9?

In reply to Rob Emenecker

Re: Moodle 2.9 compatible?

by Rob Emenecker -

When attempting to add a course via the LTI Provider link in the course admin and then clicking Add, I receive the following error:

Coding error detected, it must be fixed by a programmer: textlib_get_instance() can not be used any more, please use core_text::functioname() instead.

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Juan Leyva -
Picture of Core developers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers

Hi,

I just uploaded a new version of the plugin compatible with Moodle 3.0

https://moodle.org/plugins/pluginversion.php?id=10423

Juan

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Mark Whitington -

Hi all,

I am new to using this plugin.

I have the Provider plugin located on a Moodle 3.0.2 

I have the consumer (External Tool) on a Moodle 2.8.7

 

I have been able to get a student to leave the 2.8 site and complete a quiz in the Moodle 3.0 site.

The grade has been recorded in the Moodle 3.0 grade book.

That said I have been unable to get the grade to be sent back to the moodle 2.8 site.

I have ticked the "send grades back..." setting.

 

Could someone suggest a change that will return the student grades to the 2.8 site?

Are there any instructions on its use as I seem to only find bits within this forum?

Hope you can assist.

Cheers

Mark

In reply to Juan Leyva

LTI Provider question

by Justina Torres -

Dear Juan,

Thanks for creating this great plugin.  A question: Is it possible to configure the plugin (via Moodle settings) so that when a student whose enrollment has expired tries to access the course via the external link, he cannot actually get into the course?  We have a need for this type of feature, but I can't seem to find the right settings combination for it.  We are using the "enrollment duration" setting to give students 60 days of access when they first click on the external link.  However, on day 61, they can still access the course, even though their enrollment has expired.

Thanks so much,
Justina Torres

In reply to Justina Torres

Re: LTI Provider question

by Justina Torres -
Juan,

An update.  I did some more testing on our Moodle site, and it was actually a setting in the student role that was causing this problem.  It is now working correctly.

Thanks,
Justina Torres

In reply to Juan Leyva

LTI Provider: no sso

by jj v -

I am testing the great LTI on two Moodle 2.4 servers. Both consumer and producer are Moodles,

In the consumer Moodle I stuck with the login screen of the producer Moodle. I can see that the new account is made in the course, but still the loginscreen appears, sso does not work. I am using the standard settings. 


Any idea?

In reply to Juan Leyva

Re: New contrib: LTI Provider registration

by Sagar Rajput -

Hi Jaun,

Can you please explain me how to register and use this LTI provider tool with with global secret Key.

LTI provider registration


Thanks

Sagar

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Pekka Kasa -

Hi!

I've been given the task to write an LTI consumer in Python+JavaScript that connects to Moodle. I have installed your plugin on our Moodle test server and it works beautifully.

Our home system needs to be able to get the ANSWERS of the students back to our own system. Is this possible using your plugin? I'm not 100% certain about the details of LTI and what version I might need - or if I need custom parameters for this. I have asked and unfortunately getting just the grades back is not enough for our uses, since we want to be able to look at the process the student went through to get to the right answer. I know one can go into Moodle and look at the answer attempts, but we need to integrate the answers into our own system too without Moodle showing up.

If your plugin supports this behavior, I will jump up and down in joy since many problems have been solved that would have involved hacking with JavaScript and IFRAMEs. Otherwise I will need to look further.

-- Pekka, from http://www.jyu.fi

In reply to Pekka Kasa

Re: New contrib: LTI Provider

by Richard Oelmann -
Picture of Core developers Picture of Plugin developers Picture of Testers

I'm not totally sure and could (easily) be wrong, but I don't think its an issue of whether Moodle supports this, but whether the LTI specification does, given the wide range of possible question types in a Moodle quiz.

You may be better off looking at an api/webservice that would allow you to draw off the quiz responses directly from the database?

In reply to Juan Leyva

Re: New contrib: LTI Provider

by Charan Sri -

Hello Juan,

I am using Moodle 3.0.3 version. I have installed this plugin, as per the context here "https://docs.moodle.org/30/en/LTI_Provider", i have followed the instructions. A new link called "LTI Provider" is shown in the course navigation block. But when I clicked on it, it is showing 500 internal error page.

Please help me on moving forward.

Thanks
Sricharan