General plugins

New contrib: LTI Provider

 
 
Picture of Juan Leyva
New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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:Useful (4)
Picture of Andreas Grabs
Re: New contrib: LTI Provider
Group DevelopersGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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.

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup Testers

The plugin entry is also updated with this fix

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

 
Average of ratings: -
Picture of Andreas Grabs
Re: New contrib: LTI Provider
Group DevelopersGroup Particularly helpful MoodlersGroup Translators

Hi Juan,

perfekt! Now it works without errors smile.

Best regards and a nice weekend
Andreas

 
Average of ratings: -
Picture of alejandro martinez garcia
Re: New contrib: LTI Provider
 

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


 
Average of ratings: -
Picture of Charles Severance
Problem with X-Frame-Options
Group Developers

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.


 
Average of ratings: -
Picture of Charles Severance
Re: Problem with X-Frame-Options
Group Developers

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

 
Average of ratings: -
Picture of Juan Leyva
Re: Problem with X-Frame-Options
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup Testers

Thanks for your feedback Charles

 
Average of ratings: -
Picture of Juan Leyva
Re: Problem with X-Frame-Options
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Charles Severance
Re: Problem with X-Frame-Options
Group Developers

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...  

 
Average of ratings: -
Picture of Juan Leyva
Re: Problem with X-Frame-Options
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Juan Leyva
Re: Problem with X-Frame-Options
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Charles Severance
Hiding left and right blocks not quite right
Group Developers

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.

 
Average of ratings: -
Picture of Gavin Henrick
Re: New contrib: LTI Provider
 
Average of ratings:Useful (1)
Picture of Charles Severance
I just did a Screen Cast on Using this Module
Group Developers

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

http://vimeo.com/34752767

 
Average of ratings: -
Picture of Bryan Williams
Re: I just did a Screen Cast on Using this Module
 

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

 
Average of ratings: -
Picture of Charles Severance
Re: I just did a Screen Cast on Using this Module
Group Developers

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

 
Average of ratings: -
Picture of ali jafari
Re: I just did a Screen Cast on Using this Module
 

Thanks Charles for sharing this video.

 
Average of ratings: -
Tunya in car's
Re: New contrib: LTI Provider
 

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?

 

 

 
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup Testers

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

I will check it out asap

 
Average of ratings: -
Picture of Charles Severance
Re: New contrib: LTI Provider
Group Developers

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.

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Tunya in car's
Re: New contrib: LTI Provider
 

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...

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Tunya in car's
Re: New contrib: LTI Provider
 

Yes!!! I didn't know it. You are right everything works fine with Moodle 2.2

 
Average of ratings: -
Picture of Enosha Hettiarachchi
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Enosha Hettiarachchi
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Enosha Hettiarachchi
Re: New contrib: LTI Provider
 

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
 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Enosha Hettiarachchi
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of עומר המאירי
תשובה ל: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Juan Leyva
Re: תשובה ל: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of John St
New contrib: LTI Provider
Group Developers

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. 

 
Average of ratings: -
Picture of Charles Severance
Re: New contrib: LTI Provider
Group Developers

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.

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of עומר המאירי
תשובה ל: Re: תשובה ל: New contrib: LTI Provider
 

smile

 
Average of ratings: -
Picture of Juan Leyva
Re: תשובה ל: Re: תשובה ל: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup Testers

toda raba smile

 
Average of ratings: -
Picture of Alex Contis
Re: New contrib: LTI Provider
Group Translators

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 

 
Average of ratings: -
Picture of John Andrewartha
Re: New contrib: LTI Provider
 

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)

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup Testers

Which PHP version are you using for running Moodle?

 
Average of ratings: -
Picture of John Andrewartha
Re: New contrib: LTI Provider
 

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

Using mysqli as native DB driver.

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup Testers

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

 
Average of ratings: -
Picture of John Andrewartha
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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..)

 
Average of ratings: -
Picture of Alex Contis
Re: New contrib: LTI Provider
Group Translators

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 

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of עומר המאירי
תשובה ל: Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Juan Leyva
Re: תשובה ל: Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Mark Berthelemy
Grades not transferring
 

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

 
Average of ratings: -
Picture of John Andrewartha
Re: Grades not transferring
 

You need or should have Webservices enabled on both sides to get gradebook to transfer.

 
Average of ratings: -
Picture of Mark Berthelemy
Re: Grades not transferring
 
Perfect! Thanks John.
 
Average of ratings: -
Picture of Tony Gordon
Re: Grades not transferring #2
 

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

 

 

 

 
Average of ratings: -
Picture of Tony Gordon
Re: Grades not transferring #2
 

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

 

 
Average of ratings: -
Picture of Igor Kazakov
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of Bhimcharan Samanta
Re: New contrib: LTI Provider
 

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...

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup Testers

You should try Moodle WebServices for that

 
Average of ratings: -
Picture of David Richter
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings:Useful (1)
Picture of David Richter
Re: New contrib: LTI Provider
 

Thanks, Juan; I'll give that a try!

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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?
 
Average of ratings:Useful (1)
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of John Andrewartha
Re: New contrib: LTI Provider
 

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,

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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?

 
Average of ratings:Useful (1)
Picture of John Andrewartha
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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?
 
 
 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of John Andrewartha
Re: New contrib: LTI Provider
 

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.

 
Average of ratings:Useful (1)
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of John Andrewartha
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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?
 
Average of ratings: -
Picture of John Andrewartha
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
BobBl
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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?

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of John Andrewartha
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
BobBl
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
BobBl
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
BobBl
Re: New contrib: LTI Provider
 

Sorry Jared. I got a 404 Not Found message:

Image: 404 Not Found Message from Jared's Server

 

Dr. Bob

 
Average of ratings: -
BobBl
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
BobBl
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
BobBl
Re: New contrib: LTI Provider
 

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)

 
Average of ratings: -
François Lizotte
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Alastair Hole
Re: New contrib: LTI Provider
 

Hi

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

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings:Useful (1)
Picture of Alastair Hole
Re: New contrib: LTI Provider
 

Thanks for your swift reply smile

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

Cheers

 
Average of ratings: -
Picture of John Andrewartha
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of Mr. Marc
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of Eric Kuncoro
Problem Deleting LTI Provider User
 

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

 
Average of ratings: -
Picture of Eric Kuncoro
Re: Problem Deleting LTI Provider User
 

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;

 
Average of ratings: -
Picture of Juan Leyva
Re: Problem Deleting LTI Provider User
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup Testers

Eric, thanks for the info, I've updated the code in github with this fix, please note the differences:

https://github.com/jleyva/moodle-local_ltiprovider/commit/8946a4b574d3e55d7f58976a0b2073b5469e83a3

Regards

 
Average of ratings: -
Picture of Graham Courtney
Re: New contrib: LTI Provider
 

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? 

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Graham Courtney
Re: New contrib: LTI Provider
 

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,

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup Testers

Have you tried manual accounts?

 
Average of ratings: -
Picture of Graham Courtney
Re: New contrib: LTI Provider
 

Yes. Same error I'm afraid. 

 
Average of ratings: -
Picture of Michael Coyne
Hitting issues with Blackboard Consumer
 

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.

 
Average of ratings: -
my image of me
Fully supported in 2.3?
 

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?

 
Average of ratings: -
Picture of Oswaldo Rojas
Re: Fully supported in 2.3?
 

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

 
Average of ratings:Useful (1)
Jim Judges
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of John Andrewartha
Re: New contrib: LTI Provider
 

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?

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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
 
Average of ratings: -
Picture of Joshua Johnston
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Erik van Leur
Re: New contrib: LTI Provider
 

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


greetings Erik

 
Average of ratings: -
François Lizotte
Re: New contrib: LTI Provider
 

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?

 

 

 

 
Average of ratings: -
François Lizotte
Re: New contrib: LTI Provider
 

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

 

 
Average of ratings: -
Picture of Charles Severance
Re: New contrib: LTI Provider
Group Developers

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

 
Average of ratings: -
François Lizotte
Re: New contrib: LTI Provider
 

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

 

 
Average of ratings: -
Picture of Charles Severance
Re: New contrib: LTI Provider
Group Developers

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.

 
Average of ratings: -
Picture of Charles Severance
Re: New contrib: LTI Provider
Group Developers

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.

 
Average of ratings: -
François Lizotte
Re: New contrib: LTI Provider
 

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

 

 
Average of ratings: -
Picture of Charles Severance
Re: New contrib: LTI Provider
Group Developers

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.

 
Average of ratings: -
Picture of Sandareka Wickramanayake
Re: New contrib: LTI Provider
 

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..! 

 
Average of ratings: -
Picture of Michael O'Brien
Re: New contrib: LTI Provider
 

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?

 
Average of ratings: -
François Lizotte
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of Brendan Rollinson
Re: New contrib: LTI Provider
 

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!

 
Average of ratings: -
Picture of Roel Cantada
LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)
 

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

 

 
Average of ratings: -
Picture of Roel Cantada
Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)
 

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

 
Average of ratings: -
Picture of Roel Cantada
Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)
 

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.

 
Average of ratings: -
Picture of John Andrewartha
Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)
 

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

 
Average of ratings: -
Picture of Angelo Perera
Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)
 

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

 
Average of ratings: -
Picture of Juan Leyva
Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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
 
Average of ratings: -
Picture of Brendan Lalor
Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)
 

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.

 
Average of ratings: -
Picture of Brendan Lalor
Re: LTI Provider: user grade send failed in 2.4.3+ (Build: 20130328)
 

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.

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Paul Nicholls
Re: New contrib: LTI Provider
Group DevelopersGroup Particularly helpful Moodlers

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

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup Testers

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

allow_url_fopen = On

Regards

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup Testers

Also, it seems that if you are running PHP in FCGI mode or using a differente webserver that Apache, the grade service is not going to work, it's a problem in a Moodle consumer side (external tool) in the function getallheaders

See: https://tracker.moodle.org/browse/MDL-40005

 
Average of ratings: -
Picture of Brendan Lalor
Re: New contrib: LTI Provider
 
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.

 
Average of ratings: -
Picture of Brendan Lalor
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Brendan Lalor
Re: New contrib: LTI Provider
 

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! 


 
Average of ratings: -
Picture of David Price
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Francis Sun
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Valery Fremaux
Re: New contrib: LTI Provider
Group Particularly helpful Moodlers

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 

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Brendan Lalor
Re: New contrib: LTI Provider
 

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 

 
Average of ratings: -
Tim at Lone Pine Koala Sanctuary
Re: New contrib: LTI Provider
Group DevelopersGroup Documentation writersGroup Particularly helpful Moodlers

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?

...

 
Average of ratings: -
Picture of Brendan Lalor
Re: New contrib: LTI Provider
 

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. 

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Brendan Lalor
Re: New contrib: LTI Provider
 

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. 

 
Average of ratings: -
Picture of mike thiem
Header redirect error
 

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()
 
Average of ratings: -
Picture of Valery Fremaux
Re: New contrib: LTI Provider
Group Particularly helpful Moodlers

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. 

 
Average of ratings: -
Picture of Daniel Dubbeldam
Re: New contrib: LTI Provider
 

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!

 
Average of ratings: -
Picture of Martin Williams
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Stuart Blake
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
the Tallest Man in Western Japan?
Re: New contrib: LTI Provider
 
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.

 
Average of ratings: -
the Tallest Man in Western Japan?
Re: New contrib: LTI Provider
 
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.
 
Average of ratings:Useful (1)
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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?



 
Average of ratings: -
Picture of Toan Tran
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Clinton Branscombe
Forum users not able to reply
 

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

 
Average of ratings: -
Picture of Justin Hunt
Re: Forum users not able to reply
Group Particularly helpful Moodlers

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


 
Average of ratings: -
Paul
Re: New contrib: LTI Provider
 

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


 
Average of ratings: -
Picture of Elizabeth Dalton
Re: New contrib: LTI Provider
Group Particularly helpful Moodlers

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.


 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

Thanks for not taking offence Juan,

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

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

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

 
Average of ratings: -
Picture of Juan Leyva
Re: New contrib: LTI Provider
Group DevelopersGroup Moodle HQGroup Particularly helpful MoodlersGroup 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"

 
Average of ratings: -
Picture of Jared Chapman
Re: New contrib: LTI Provider
 

Thank you Juan!

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

 
Average of ratings: -
Picture of alejandro martinez garcia
Re: New contrib: LTI Provider
 
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
 
Average of ratings: -
Picture of Raul Santos
Re: New contrib: LTI Provider
 

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.

 
Average of ratings: -
Picture of alejandro martinez garcia
Re: New contrib: LTI Provider
 

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?

 
Average of ratings: -
Picture of alejandro martinez garcia
Re: New contrib: LTI Provider
 



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

 
Average of ratings: -
Picture of alejandro martinez garcia
Re: New contrib: LTI Provider
 
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().
 
Average of ratings: -