packbackbooks / lti-1-3-php-library

A library used for building IMS-certified LTI 1.3 tool providers in PHP.
Apache License 2.0
39 stars 25 forks source link

Support "Submission" Field #149

Open liamgm opened 2 months ago

liamgm commented 2 months ago

As of January of 2023, Version 2 of the Assignment & Grades Service specification supports an optional Submission field that this library already implements via a Canvas-specific extension.

CanvasLMS documentation currently supports both the now standard submission.submittedAt field and its original extension, but says in the comments on the submitted_at field of their extension: "Use of submission.submittedAt is preferred."

It would be best if this library supported both the full Canvas extension and the standard submission field, including the submission.startedAt field to match the standard as well as what's already supported, and to avoid a scramble if that extension is deprecated by Canvas.

I'd be happy to submit a patch with unit tests if this feature addition is wanted.

liamgm commented 2 months ago

In practice, this field is essential if an LTI Tool posts grades at set intervals instead of on-demand.

The timestamp of a score message should reflect when the message was created, the submission.submittedAt should reflect when the student completed the work. If a student finishes work before a platform deadline but the tool sends grades after the deadline, they should be credited for meeting the deadline by the platform comparing submission.submittedAt against the deadline instead of comparing the timestamp value. Without support for the submission field (or a non-standard extension), that fair comparison is not possible.

dbhynds commented 2 months ago

Thank you for opening this issue. If you open a PR with these changes, I'd be happy to review it and get your suggestion implemented. Thank you!