This files describes API changes in the assign code.

=== 2.6 ===
* To see submission/grades of inactive users, user should have moodle/course:viewsuspendedusers capability.
* count_* functions will return only active participants.
* assign_submission_plugin->lock and unlock methods have an additional parameter for user flags. A user will not
  always have a submission record when the submission is locked/unlocked.
* Submission and feedback plugins can now participate in webservices. The plugin must implement get_external_parameters()
  to describe the parameters it is expecting from the mod_assign_save_grade or mod_assign_save_submission functions. The
  plugin will then handle the webservice via it's normal save() method with the extra data supplied in the $data argument.

=== 2.5 ===

* New feature - Attempt History

    This adds settings so that a student can have build up a history of separate submission attempts and grades for the same
    assignment.

    Extra settings on the assign table are:
    attemptreopenmethod - The way attempts can be reopened. One of:
                            ASSIGN_ATTEMPT_REOPEN_METHOD_NONE - Attempts cannot be reopened (default)
                            ASSIGN_ATTEMPT_REOPEN_METHOD_UNTIL_PASS - Attempts are reopened on grading until the gradebook
                                                                      indicates this student has passed.
                            ASSIGN_ATTEMPT_REOPEN_METHOD_MANUAL - Attempts are reopened on manually by the grader.
    maxattempts - The maximum allowed number of attempts per student for this assign instance.

    Extra settings on the submission and grade records:
    attemptnumber - Starting from 0 until the latest attempt.

    New table assign_user_flags holds user specific flags that were stored in the assign_grade table.  (contains assignment,
    userid, extensionduedate, mailed and locked)

    assign changes:
        "get_user_grade" function has an extra optional parameter to retrieve a specific attempt number.
        "get_user_submission" function has an extra optional parameter to retrieve a specific attempt number.
        "get_group_submission" function has an extra optional parameter to retrieve a specific attempt number.
        new "get_user_flags" function can retrieve the user flags for a specific user (extensionduedate, mailed and locked).
        new "update_user_flags" function can update the user flags for a specific user (extensionduedate, mailed and locked).

    assign_submission_plugin changes:
        "precheck_submission" function now takes a submission record so you can determine which submission is being checked.
        "submit_for_grading" function now takes a submission record so you can determine which submission is being submitted.
        new function "copy_submission" can be implemented to copy submission data from one submission to a new one.

    New renderable object "assign_attempt_history" for rendering the list of previous submissions.
    New renderable object "assign_gradingmessage" for rendering a generic grading message.

    assign_grading_table changes:
        get_group_and_submission is now protected and should not be called from outside this class.


=== Earlier changes ===

* Were not documented in this way. Sorry.
